アルファサード株式会社 代表取締役 野田 純生のブログ


Movable Type プラグインでシステム権限を追加する


公開日 : 2016-08-01 14:40:42


既にPowerCMSでやっているものなのですが、再整理の意味で、メモ(てか、ブログサボってたのでリハビリがてらw)。

config.yaml

permissions:
    system.access_cms:
        label: Can Access CMS
        order: 2000
    system.administer:
        inherit_from:
            - system.access_cms

これで、ユーザーの編集画面にシステム権限「Can Access CMS(CMSへのアクセス)」が追加して表示されます。system.administer... 以下を追加しているので、「システム管理者」にチェックを入れると「Can Access CMS(CMSへのアクセス)」にもチェックが入ります。

管理画面のシステム権限設定エリア

ただ、このまま「保存」しても「MT::Authorに can_access_cms メソッドがない」というエラーが出ます。社内で聞いてみたところ「アクセサを定義する必要があります。」とのこと。

config.yaml

callbacks:
    init_app: $myplugin::MyPlugin::Plugin::_cb_init_app

MyPlugin::Plugin::_cb_init_app

sub _cb_init_app {
    require MT::Author;
    *MT::Author::can_access_cms = sub {
        my $author = shift;
        if ( @_ ) {
            $author->permissions(0)->can_access_cms( @_ );
        }
        else {
            $author->is_superuser()
                || $author->permissions(0)->can_access_cms( @_ );
        }
    };
}

これで、あとはMT側がよしなに処理してくれます。もちろん、この権限の有無による振る舞いの分岐はそれぞれの処理に実装する必要があります。



このブログを書いている人
野田純生の写真
野田 純生 (のだ すみお)

大阪府出身。ウェブアクセシビリティエバンジェリスト。 アルファサード株式会社の創業者であり、現役のプログラマ。経営理念は「テクノロジーによって顧客とパートナーに寄り添い、ウェブを良くする」。 プロフィール詳細へ