Top > 開発ガイド > コンポーネント開発逆引きリファレンス > 権限を設定する
権限を設定する
対象バージョン
当ドキュメントはRubricks-0.6.x向けです。
概要
Rubricksでは、コンポーネントごとに複数の権限を設定できます。
アクセス権限と管理権限はすべてのコンポーネントの権限として用意されています。
| 権限種別 | 意味 |
| アクセス権限 | 機能にアクセスする権限です。この権限を持っていないユーザは、機能を使用することができません。 |
| 管理権限 | 機能の各設定や、管理を行う権限です。 |
上記に加えて、コンポーネント独自の権限を定義することも可能です。
ニュースコンポーネントを例に挙げると、下記のように設定されています。
| アクセス権限名 | アクセス権限シンボル | 概要 |
| アクセス権限 | access | 公開されているニュースを参照する権限 |
| 管理権限 | admin | ニュースコンポーネントを管理する権限 |
| 投稿権限 | post | 新規ニュースを投稿する権限 |
| 承認権限 | approval | 投稿されたニュースを承認する権限 |
それぞれの権限がユーザグループに割り当てられ、ゲストはアクセス権限と投稿権限。
システム管理者は承認権限と管理者権限を持つというように使われます。
なお、権限はグループ単位で割り当てることができ、「システム管理 > ユーザ管理」にて設定できます。
使い方
拡張権限を定義する
アクセス権限、管理権限に加えて、コンポーネント独自の権限を定義する場合は、コンポーネント情報定義ファイルに記述します。
class Xxx::ComponentInfo < RubricksComponentInfo
def initialize
@display_name = '[_Xxx_Title]'
@version = '-'
@description = '[_Xxx_Component_Description]'
@author = '-'
@license = '-'
#拡張権限の定義
@functions = [
{:name => 'post', :display_name => '投稿権限'},
{:name => 'approval', :display_name => '承認権限'}
]
end
end
権限とアクションを結びつける
権限は、アクションごとに設定することができます。
権限のないユーザがアクションを呼び出した場合には、権限例外が発生します。
何も記述がない場合は、下記の権限チェックが行われます。
| コントローラ名 | 権限チェック |
| Admin.*Controller | 管理権限があるかどうか(admin) |
| 上記以外 | アクセス権限があるかどうか(access) |
下記のような場合は、コントローラにauthorizeメソッドを記述します。
- アクションごとに別の権限チェックを行う場合
- 拡張権限のチェックを行う場合
class Xxx::XxxController
#拡張権限のチェック
authorize :post, :only=>[:test1, :test2]
def test1
…
end
def test2
…
end
end
権限チェックを無効化する
コントローラに、Rubricks::Authorize::InvalidateAuthorizeを記述します。
class Xxx::XxxController include Rubricks::Authorize::InvalidateAuthorize … end
API
authorize(function, options)
- 権限チェックをアクションごとに指定します。
| 引数 | 必須 | 初期値 | 型 | 説明 |
| function | ○ | - | Symbol | 権限種別。 |
| options | - | - | Symbol | 権限チェックのオプション。下記「オプション」を参照してください。 |
オプション:
| キー | 必須 | 初期値 | 型 | 説明 | ||||
| :only | - | - | Symbol/Array | 権限を与えるアクション。 | ||||
| :except | - | - | Symbol/Array | 権限を与えないアクション。 | ||||
