업무를 하다보면 협업하는 분들이 휴가를 가게되는 경우가 있다. 휴가자에게 슬랙을 보내기가 싫은데 매번 Daily 채널을 확인하는것도 귀찮음. 그렇다고 휴가 상태 변경이 강제되는 회사 분위기가 아니라 이래저래 불편...
이미 회사에 세팅되어있는 구글 캘린더 api 데이터를 이용해 슬랙의 상태를 자동으로 변경해줄수 있다면 어떨까?
~에서 시작한 프로젝트
슬랙에는 bot token과 user token의 권한이 각각 있음.
Daily 채널로 매일 아침마다 구글 캘린더 데이터를 쏴주는 슬랙 앱은 bot token용임.
그래서 내가 사용할 user token 슬랙 앱을 새로 만듦
이름은 calendar-status-change
이제 슬랙 앱을 통해 사용자들(해빗팩토리 팀원들)의 권한을 부여받아야함.
identify - View information about a user’s identity
users.profile:read - View profile details about people in a workspace
users.profile:write - Edit a user’s profile information and status
필요한 권한은 이렇게 세개
(identify는 필요 없을수도?)
권한을 부여받는 링크
https://slack.com/oauth/v2/authorize?client_id=~~~~&scope=&user_scope=identify,users.profile:write,users.profile:read
위 링크에서 권한을 부여해준 뒤 redirect 시켜줄 url을 넣어줄수 있는데
cloudtype에 배포된 프로젝트에서 페이지를 하나 할당해줌.
express로 만들어진 페이지.
4-1. 위 페이지의 기능은
4-2. 여기서 firebase에 저장할 user token은 중요한 정보이므로 암호화를 한다.
javascript에서 해시 함수를 통한 암호화를 할 수 있도록 해주는 Node.js 패키지인 crypto-js 활용.
암호화 종류는 대칭키 암호화를 사용 (암호화, 복호화 같은 키값을 이용)
처음에는 firebase에 잘 저장된 데이터를 또 암호화한다는게 필요할까? firebase가 털리면 하늘의 뜻이 아닐까? 생각했지만...
통신 간에 생길 수 있는 유출을 방지하기 위한것이라는 정우님의 가르침
백오피스 작업을 하는걸 별로 좋아하지 않는데, 내가 원했던 기능을 내손으로 만들수 있다는 사실에 뿌듯했다. 팀원분들도 꼭 필요한 기능이었다고 고맙다고 하셔서 효용감이 더욱 높았다.
TODO.
위 스샷처럼 휴가자를 태그했을때 slackbot 연동하기
ex. 박경준님은 휴가중입니다