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