Japanese plugin dev 5 4
uehatsu edited this page May 9, 2011
·
6 revisions
Movable Typeの運用や開発を行っていると権限とロールについて考える場面が出てきます。
今回はこの権限とロールについて解説します。
権限とロールを考えるには、いくつかパターンがあります。
- システム権限
- 各ユーザに割り振られたシステム権限で、「システムメニュー」>「ユーザー」>「一覧」>「(ユーザー名)」>「システム権限」
- これらは管理画面、特にシステムに関係する権限で、以下の6つがあります
- システム管理者
- ウェブサイトの作成
- ブログの作成
- テンプレートの管理
- プラグインの管理
- システムログの閲覧
- これらは通常、普通のユーザーに割り当てられず、管理者やサイトのマネージメントをするユーザーを対象に割り振る権限です
- 参考資料(mt_5_privileges.xls)の「system.privileges」シートに詳細が書かれています
- ブログ権限
- 各ロールに割り振られた権限で対応表は参考資料(mt_5_privileges.xls)の「ロールと権限」シートに書かれています
- ブログ権限は大項目5項目、小項目23項目に分かれています
- 管理
- ウェブサイトと所属ブログの管理
- ウェブサイトの管理
- ブログの管理
- 設定の変更
- カテゴリの管理
- アドレス帳の管理
- タグの管理
- ユーザーの管理
- 公開パスの設定
- ログの閲覧
- 作成と公開
- 記事の作成
- 記事の公開
- 通知の送信
- すべてのブログ記事の編集
- ウェブページの管理
- サイトを再構築
- デザインする
- テンプレートの管理
- テーマの管理
- アイテム
- ファイルアップロード
- 画像に関する既定値の設定
- アイテムの管理
- コメント投稿
- コメントの投稿
- コメント/トラックバックの管理
- 管理
- 参考資料(mt_5_privileges.xls)の「blog.privileges」シートに詳細が書かれています
- ロール
- ブログ権限の組み合わせでロールは構成されています
- 設定されたロールにより、ユーザーのアクセスに制限がかかります
- 初期状態でロールに割り振られる権限の対応表は参考資料(mt_5_privileges.xls)の「ロールと権限」シートに書かれています
- 初期状態のロールは以下の9個があります
- ウェブサイト管理者
- ウェブマスター
- コメント投稿者
- デザイナ
- ブログ管理者
- モデレータ
- ユーザー
- ライター
- 編集者
- 「システムメニュー」>「設定」>「権限」>「権限を付与」から、各ユーザーにサイト、ブログのロールを設定できます
- 「システムメニュー」>「設定」>「ロール」>「新しいロールを作成」から、ブログ権限を組み合わせて新しいロールを作成できます
これらのシステム権限、ブログ権限、ロールをユーザーに割り当てる事によりユーザーの挙動を制御します。
上で説明した権限には、さらに詳細に権限が分かれています。
参考資料の「system.privileges」「blog.privileges」に権限と詳細権限のマトリックスが記載されています。
例えば「ウェブサイトと所属ブログの管理(blog.manage_member_blogs)」には「access_to_asset_list」という詳細権限が付与されていますが、これはアイテムのリスト画面を表示するのに必要な権限です。
こういった内容が、MT::Coreモジュールの中に記載されています。
MT::Coreモジュール($MT_DIR/lib/MT/Core.pm)の load_core_permissions
関数に権限と詳細権限についての記述があります。
sub load_core_permissions { return { 'blog.administer_website' => { 'group' => 'blog_admin', 'inherit_from' => ['blog.administer_blog'], 'label' => 'Manage Website', 'order' => 200, 'permitted_action' => { 'save_all_settings_for_website' => 1, 'access_to_website_list' => 1, 'administer_website' => 1, 'clone_blog' => 1, 'delete_website' => 1, 'remove_user_assoc' => 1, }, }, (後略)
ここから以下の事が分かります。
- 権限名:
blog.administer_website
- グループ:
blog_admin
(管理) - 親権限:
blog.administer_blog
- 表示名:
Manage Website
(ウェブサイトの管理) - 表示順:
200
- 詳細権限(追加)
save_all_settings_for_website
access_to_website_list
administer_website
clone_blog
delete_website
remove_user_assoc
- グループ:
これらを表にしたのが、参考資料の「system.privileges」と「blog.privileges」です。
こういった詳細権限に基づいてMTは動作します。例を挙げると「 管理画面のメニュー修正 」で「ツール」メニューを administer
権限を持った人間にのみ開放するといった場合に利用します。
権限はコードに記載されているため可視性は悪いですが、考え方と読み方さえ解れば簡単に理解できます。
参考資料も見ながら理解を深めて下さい。
- プラグイン開発のためのファーストステップ
- レジストリ、YAMLについて
- 環境変数について
- プラグインのローカライゼーションについて
- テストドリブンでのプラグインの開発について
- グローバル・モディファイアプラグインの開発について
- ファンクションタグ プラグインの開発について
- ブロックタグ プラグインの開発について
- コンディショナルタグ プラグインの開発について
- プラグインのデバッグ
- プラグインの設定方法
- コールバックとフックポイント
- スケジュールタスクの開発
- MTオブジェクトの利用方法
- 独自オブジェクトの作成
- 新規アプリケーションの作成
- Transformerプラグインの開発
- 管理画面のメニュー修正
- リストアクションの追加
- 動作モードの追加とモーダルウィンドウの表示
- 外部Web APIとの連携
- 権限とロール