TodoList: access_control の設定2007年01月02日 13時48分05秒

access_control を使うための設定。acl_system の README を読みながら進める。

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の入力は必須ではありません。 入力されたメールアドレスは記事に反映されず、ブログの管理者のみが参照できます。

※なお、送られたコメントはブログの管理者が確認するまで公開されません。

名前:
メールアドレス:
URL:
コメント:

トラックバック

このエントリのトラックバックURL: http://uyota.asablo.jp/blog/2007/01/02/1086956/tb

※なお、送られたトラックバックはブログの管理者が確認するまで公開されません。