内部仕様について

この wiki を読む前に内部仕様を把握したい場合は [/資料/内部仕様/GROWI Bot/コマンド権限設定周りの仕様] を読むことをお勧めします

経緯

キャッシュの更新や Growi での権限チェック、Proxy での権限チェックなど確認箇所がたくさんあり、今後も確認する時に手順を一から考えるのは時間がもったいないので今回手順をまとめる運びとなった。

事前準備

With proxy で /growi コマンドが使える状態にしておく。relation-test まで行えば OK

キャッシュの更新 確認方法

1. Relation の expiredAtCommands の値が現在時刻から 24 時間以上前の場合

  1. phpMyAdmin に接続して、Relation テーブルのレコードが一つあるので、その expiredAtCommands カラムの値を 0000-00-00 00:00:00 に更新してください
  2. さらに、permissionsForSingleUseCommands の値を {"create": ["hoge-channel"]} に更新してください
  3. slack 上で /growi search a と入力し、結果が帰ってきたら、phpMyAdmin の先ほど更新した値を確認してください。 expiredAtCommands が元の値ではない値になっていれば 半分OK です
  4. そのまま robo 3T を開いて、SlackAppIntegration コレクションのドキュメントが一つあるはずなので、その permissionsForSingleUseCommands の値と phpMyAdmin の値が同じになっていることを確認してください。("create": ここの部分) これが一緒になっていれば完全に OK です

2. GROWI の管理画面から権限の設定を変更した場合

  1. GROWI の管理画面でコマンドの権限を変更して "Update"
  2. phpMyAdmin で Relation テーブルのレコードを確認して変更した通りになっていれば OK

権限チェック機能 確認方法

ちゃんと権限通りの動作になっているかを確認する。

以下のコマンドそれぞれで行う

  • search
  • create
  • togetter

command アクションがチャネルごとに制限できているかを確認する

proxy 側
  1. 管理画面の権限設定で Deny を選択
  2. ワークスペースでコマンドを実行し、拒否されるかを確認する
  3. 権限設定で Allow specifies を選択。特定のチャンネルを記入し、それ以外のチャンネルで実行しても同様に拒否されるかも確認する
  • 例. [general, admin] を許可する場合
    • それ以外のチャンネル others にてコマンドを実行する
    • 拒否されたら OK
GROWI 側
  1. 管理画面の権限設定で Allow Allにする
  2. mongo の db を直接書き換える
    • 対象の command の値を false に書き換える Before bef.png After aft.png
  3. コマンドを実行し、拒否されるかを確認する。 - 現状は slack ワークスペースにエラーメッセージでないので、GROWI server に 403 エラーが確認できたら良い
  4. 権限設定で Allow specified を選択。特定のチャンネルを記入し、それ以外のチャンネルで実行しても同様に拒否されるかも確認する

interactions

Proxy => GROWI
  1. コマンドの権限を Allow All にする
  2. コマンドを実行する
  3. phpmyadmin を直接書き換える
    • 対象の command の値を false に書き換える Before befaaaa.png After aftaaaa.png
  4. 何かしらの interactions を実行する(next share dismiss submit など)
  5. 拒否されるかを確認する
  6. 権限設定で特定のチャンネルを設定し、それ以外のチャンネルで実行しても同様に拒否されるかも確認する
  • 例 [admin, general] を許可する場合
    • 上記を設定した上で、admin チャンネルにて コマンドを実行
    • ここで、phpmyadmin の対象コマンドの値を false などにする
      • 拒否されるかを確認する
GROWI => Proxy
  1. コマンドの権限を Allow All にする
  2. コマンドを実行する
  3. mongo の db を直接書き換える
  • 対象の command の値を false に書き換える
  1. 何かしらの interactions を実行する(next share dismiss submit など)
  2. 拒否されるかを確認する
  3. 権限設定で特定のチャンネルを設定し、それ以外のチャンネルで実行しても同様に拒否されるかも確認する
  • 例 [admin, general] を許可する場合
    • 上記を設定した上で、admin チャンネルにて コマンドを実行
    • ここで、mongo の対象コマンドの値を false などにする
      • 拒否されるかを確認する
        • 現状は slack ワークスペースにエラーメッセージでないので、GROWI server に 403 エラーが確認できたら良い