TodoList: access_control の設定 ― 2007年01月02日 13時48分05秒
current_user
が定義されている必要がある。そこで、app/models/user.rb を編集する。
% cvs diff app/models/usr.rb
--- app/models/user.rb 27 Dec 2006 03:27:52 -0000 1.3
+++ app/models/user.rb 28 Dec 2006 19:20:23 -0000
@@ -26,6 +26,8 @@
# A User class which includes functionality from the LoginEngine::Authenticated
User
# module, and is further extended by UserEngine::AuthorizedUser.
class User < ActiveRecord::Base
+ cattr_accessor :current_user
+
belongs_to :organization
has_many :created_todos, :foreign_key => "creator_id", :class_name => "Todo"
また、application.rb に before_filter
を設定すると書いてある。before_filter
が二つ以上書いてあっても問題が無いのかは知らないが、今のところは不具合は出ていないようだ。
% cvs diff app/controllers/application.rb
--- app/controllers/application.rb 29 Dec 2006 02:28:37 -0000 1.2
+++ app/controllers/application.rb 29 Dec 2006 03:42:56 -0000
@@ -10,4 +10,8 @@
model :user
#before_filter :login_required
before_filter :authorize_action
+ before_filter do |c|
+ User.current_user = User.find(
+ c.session[:user].id) unless c.session[:user].nil?
+ end
end
また、access_control と acl_system は roles テーブルと users テーブルがあり、これらが has_and_belongs_to_many の Association 関係があるのが前提だ。user_engine には既に、この関係が構築されているので、今回は特別な作業は必要無い。
それに加えて、roles テーブルに、title と言う項目が必要だ。user_engine の roles テーブルには付いていない。この値が access_control で使われる admin や user などが保存されている場所だ。これが無いとエラーが出て、動かない。
title を追加する。そして、user_engine に作られる役割だけでなく、とりあえず二つ程追加してみる。
% cat access_control.mysql
USE todos;
ALTER TABLE roles ADD title VARCHAR(40);
UPDATE roles set title = 'admin' where name = 'Admin';
UPDATE roles set title = 'uesr' where name = 'User';
UPDATE roles set title = 'uesr' where name = 'Guest';
INSERT INTO roles VALUES(NULL, 'Superviser',
'Organizatinal administorator', 0, 0, 'superviser');
INSERT INTO roles VALUES(NULL, 'Assistant',
'Assistanting User', 0, 0, 'user');
コメント
トラックバック
このエントリのトラックバックURL: http://uyota.asablo.jp/blog/2007/01/02/1086956/tb
※なお、送られたトラックバックはブログの管理者が確認するまで公開されません。
コメントをどうぞ
※メールアドレスとURLの入力は必須ではありません。 入力されたメールアドレスは記事に反映されず、ブログの管理者のみが参照できます。
※なお、送られたコメントはブログの管理者が確認するまで公開されません。