OpenPNE は管理画面で管理者を追加したり、管理者の権限を設定したりすることができます。管理者の権限とは、その管理者が見ることが出来る情報や、変更することができる設定に制限を設けることです。
しかし権限は SNS の運用形態によって変更したい場合が多々あるかと思います。その権限の変更方法です。
権限の設定と権限のチェックは以下のファイルで行われています。
webapp/modules/admin/init.inc
管理者のデータは c_admin_users テーブルにあり、auth_type カラムで権限が設定されています。権限のタイプは以下の通りです。
項目 | 全権限 | 「メンバーリスト関連部分」 以外全て |
「メンバー管理」 「SNS内データ閲覧部分」 以外全て |
---|---|---|---|
auth_type | all | normal | |
メンバー管理 | ○ | × メンバーリスト ○ 招待メール送信 × CSVダウンロード ○ CSVインポート × ブラックリスト管理 |
× |
画像・書き込み管理 | ○ | ○ | × |
統計情報 | ○ | ○ | × |
デザイン | ○ | ○ | ○ |
SNS設定 | ○ | ○ | ○ |
拡張機能 | ○ | ○ | ○ |
管理画面設定 | ○ | × アカウント管理 ○ パスワード変更 × ページ名ランダム生成 |
× アカウント管理 ○ パスワード変更 × ページ名ランダム生成 |
設定はホワイトリスト方式になっていて、権限毎に許可されているアクションが配列で設定されています。
webapp/modules/admin/init.inc ファイルの 33行目からホワイトリストが書かれていて、上記テーブルの auth_type の値に “_type” を付加したものをキーとしてリストを設定します。
webapp/modules/admin/init.inc ファイルを webapp_ext 以下にコピーしてこのホワイトリストの設定を変更したり、あらたに権限を追加したりすることにより、必要な権限を作ることができます。
ちなみにここで設定する権限は同じファイル内にある、init_admin_page 関数、init_admin_do 関数で使用され、それぞれ page アクション、 do アクションが実行される前に実行され権限があるか確認しています。権限確認部分は以下のようになっています。
if ($auth_type != 'all' && !in_array($act, $GLOBALS['_OPENPNE_ADMIN_AUTH_ACTIONS'][$auth_type.'_type'])) { admin_client_redirect('top', '指定されたページにはアクセスできません'); }