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 |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
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を設定していきます。
1
2
3
4
|
class RolesController < ApplicationController
layout "master"
before_filter :login_required
require_role "admin" |
あとは、roleが付与されたユーザ、付与されていないユーザを使用してテストを行います。権限がない場合は「You don’t have access here.」と表示されます。
Sorry, comments are closed for this article.