Top > 開発ガイド > コンポーネント開発Tips集 > アクセス権限チェック

アクセス権限チェック

対象バージョン

当ドキュメントはRubricks-0.6.x向けです。

アクセス権限とは

Rubricksでは、コンポーネント毎に複数のアクセス権限を設定することができます。
ニュースコンポーネントの例を挙げると、表1のように設定されています。

▼表1 ニュースコンポーネントのアクセス権限

アクセス権限名アクセス権限シンボル概要
アクセス権限access公開されているニュースを参照する権限
管理権限adminニュースコンポーネントを管理する権限
投稿権限post新規ニュースを投稿する権限
承認権限approval投稿されたニュースを承認する権限

それぞれの権限がユーザグループに割り当てられ、ゲストはアクセス権限と投稿権限。
システム管理者は承認権限と管理者権限を持つというように使われます。
グループに権限を与える場合には「管理モード > アクセス権限管理」メニューよりアクセス権限管理ページにて設定できます。

拡張アクセス権限

アクセス権限と管理者権限は全てのコンポーネントの権限として用意されていますが、ニュースコンポーネントのように、それ以外の権限を定義する場合には、インストール情報などを記述したcomponent_info.rbファイルに記述します。
このファイルは「components/コンポーネント名/_install」フォルダに格納されます。
リスト1のように@functionsに追加権限の設定項目を記述します。

▼リスト1 拡張アクセス権限の設定

    @functions = [
      {:name => 'post', :display_name => '投稿権限'},
      {:name => 'approval', :display_name => '承認権限'}
    ]

Note:その他のインストール情報ファイルの記述方法などはコンポーネント情報定義ファイルを参照してください。

アクセス権限をアクションに結びつける

上記で作成したアクセス権限をアクション毎に設定することができ、権限のないユーザがアクションを呼び出した場合には、権限例外となります。
アクセス権限をコントローラに記述することによって、アクション毎のアクセス権限チェックを行いますが、何も記述しない場合には、 表2の権限チェックが行われます。

▼表2 デフォルトのアクセス権限チェック

コントローラ名権限チェック
Admin.*Controller管理者権限チェック(admin)
上記以外アクセス権限チェック(access)

アクション毎に別の権限チェックを行いたい場合や、拡張アクセス権限チェックを行いたい場合などの場合には、 リスト2、リスト3の宣言をコントローラに追加します。


▼リスト2 アクセス権限設定書式

authorize :<function名>
authorize :<function名>, :only=>[メソッドのシンボル一覧]
authorize :<function名>, :except=>[メソッドのシンボル一覧]


▼リスト3 アクセス権限設定例

authorize :logon, :only=>[test1. test2. test3]

アクセス権限チェックを無効にする

権限チェックを一切無効にする場合には下記の記述をコントローラに追加します。

▼リスト4 アクセス権限チェック無効化

include(Rubricks::Authorize::InvalidateAuthorize)