rolerequirementプラグイン

roleを取り入れたいと思い、プラグインを探してみたところ、rolerequirementというプラグインが見つかったので、早速試してみました。

script/plugin install git://github.com/timcharper/role_requirement.git

インストール後、roleを表すRoleクラスを作成します。すでにrestful_authenticationを使用していた為、userというモデルができており、下記を実行後に「rake
db:migrate」を行うことにより、roles、roles_usersという2つのテーブルが生成されます。

script/generate roles Role User 
mysql> desc roles;
+-------+--------------+------+-----+---------+----------------+
| Field | Type         | Null | Key | Default | Extra          |
+-------+--------------+------+-----+---------+----------------+
| id    | int(11)      | NO   | PRI | NULL    | auto_increment | 
| name  | varchar(255) | YES  |     | NULL    |                | 
+-------+--------------+------+-----+---------+----------------+
2 rows in set (0.00 sec)

mysql> desc roles_users;
+---------+---------+------+-----+---------+-------+
| Field   | Type    | Null | Key | Default | Extra |
+---------+---------+------+-----+---------+-------+
| role_id | int(11) | YES  | MUL | NULL    |       | 
| user_id | int(11) | YES  | MUL | NULL    |       | 
+---------+---------+------+-----+---------+-------+
2 rows in set (0.00 sec)

あとはroleをuserに割り当てます。今回はroles、role_usersに対してSQLで直接レコードをinsertしました。
次に、各コントローラに対して必要なroleを設定していきます。

class RolesController < ApplicationController
  layout "master"
  before_filter :login_required
  require_role "admin"

あとは、roleが付与されたユーザ、付与されていないユーザを使用してテストを行います。権限がない場合は「You don't have access here.」と表示されます。