コーヒーこぼした。

プログラミングとちょこっとハード

hubot-authの導入でハマった話

やあ、今回はhubotを育てる回だよ。


前回導入したhubotに権限管理機能を追加するhubot-authを追加したのだが、そのときにちょっとしたことで詰まったのでメモを残しておく。


hubot-authを追加するとユーザに対してhubotコマンド実行のパーミッションを設定できる。

% npm install hubot-auth --save # hubot-authをインストール


external-scripts.jsonにhubot-authを加え、環境変数にslackのusernameをexportしたのだが...

f:id:imkitchen:20150528142725p:plain

ファッ!!

この後、めちゃくちゃheroku上の環境変数を確認したが原因は分からなかった。
半ばあきらめかけていたところでhubot-slackGitHubリポジトリを見るとこんな記述が...

If you're using the hubot-auth script, you can get the user IDs required for the HUBOT_AUTH_ADMIN setting by calling the users.list API method.

どうやら登録時に決めたusername(yosuke-t)とIDは別らしい。
hubot-authの方に書いてくれ。(よくよく考えればチームが異れば同名で登録できるのでusername=IDなわけがなかった)

slackにhubotを連携した時に使ったトークンをusers.list method | SlackのExtra argsに

token=xxxx-xxxxxxxxxx-xxxxxxxxxxxxxxxxxxxxxxxx

という感じで入力してTest Methodを実行したところ、slack上のユーザの情報がjsonで返ってくる。
この情報を見ればわかるがIDは UXXXXXXXX のような形式で内部的に利用されているもので、usernameとは別物だ。
こちらの方はslackユーザ全体で一意に定まる。

つまり、環境変数HUBOT_AUTH_ADMINにはこっちの UXXXXXXXX の方をexportする必要がある。
その結果。

f:id:imkitchen:20150528144623p:plain

と、無事権限管理ができるようになった。
ちなみにslack上のコマンドで指定するのはusernameの方なので注意(ややこしい)。

スポンサーリンク