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

| コメント(0) | トラックバック(0)

既に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側がよしなに処理してくれます。もちろん、この権限の有無による振る舞いの分岐はそれぞれの処理に実装する必要があります。

トラックバック(0)

トラックバックURL: http://junnama.alfasado.net/cgi/mt/mt-tb.cgi/941

コメントする

Facebook

Twitter

このブログ記事について

このページは、Junnama Nodaが2016年8月 1日 14:40に書いたブログ記事です。

ひとつ前のブログ記事は「Movable Typeで最近 n日にコメントされた数を基準に注目記事を表示させる」です。

次のブログ記事は「少なくとも一般的な中小企業をとりまく経営環境は、それほど改善されてはいないのだろう」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

Powered by Movable Type 6.2.6