Skip to content

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::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 権限を持った人間にのみ開放するといった場合に利用します。

参考資料ダウンロード

mt_5_privileges.xls(78.00KB)

まとめ

権限はコードに記載されているため可視性は悪いですが、考え方と読み方さえ解れば簡単に理解できます。

参考資料も見ながら理解を深めて下さい。

プラグイン開発ガイド インデックス

  1. プラグイン開発のためのファーストステップ
  2. レジストリ、YAMLについて
  3. 環境変数について
  4. プラグインのローカライゼーションについて
  5. テストドリブンでのプラグインの開発について
  6. グローバル・モディファイアプラグインの開発について
  7. ファンクションタグ プラグインの開発について
  8. ブロックタグ プラグインの開発について
  9. コンディショナルタグ プラグインの開発について
  10. プラグインのデバッグ
  11. プラグインの設定方法
  12. コールバックとフックポイント
  13. スケジュールタスクの開発
  14. MTオブジェクトの利用方法
  15. 独自オブジェクトの作成
  16. 新規アプリケーションの作成
  17. Transformerプラグインの開発
  18. 管理画面のメニュー修正
  19. リストアクションの追加
  20. 動作モードの追加とモーダルウィンドウの表示
  21. 外部Web APIとの連携
  22. 権限とロール
Clone this wiki locally