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 権限を与えないアクション。