Description:
[web] improved log-in & roles efficiency git-svn-id: http://theory.cpe.ku.ac.th/grader/web/trunk@196 6386c4cd-e34a-4fa8-8920-d93eb39b512e
Commit status:
[Not Reviewed]
References:
Comments:
0 Commit comments 0 Inline Comments
Unresolved TODOs:
There are no unresolved TODOs
Add another comment

r104:7a05c208f2ec - - 6 files changed: 23 inserted, 10 deleted

@@ -1,7 +1,6
1 class AnnouncementsController < ApplicationController
1 class AnnouncementsController < ApplicationController
2
2
3 - before_filter :authenticate
3 + before_filter :admin_authorization
4 - before_filter { |controller| controller.authorization_by_roles(['admin'])}
5
4
6 in_place_edit_for :announcement, :published
5 in_place_edit_for :announcement, :published
7
6
@@ -7,6 +7,12
7
7
8 SINGLE_USER_MODE_CONF_KEY = 'system.single_user_mode'
8 SINGLE_USER_MODE_CONF_KEY = 'system.single_user_mode'
9
9
10 + def admin_authorization
11 + return false unless authenticate
12 + user = User.find(session[:user_id], :include => ['roles'])
13 + redirect_to :controller => 'main', :action => 'login' unless user.admin?
14 + end
15 +
10 def authorization_by_roles(allowed_roles)
16 def authorization_by_roles(allowed_roles)
11 return false unless authenticate
17 return false unless authenticate
12 user = User.find(session[:user_id])
18 user = User.find(session[:user_id])
@@ -18,13 +24,14
18 end
24 end
19
25
20 protected
26 protected
27 +
21 def authenticate
28 def authenticate
22 unless session[:user_id]
29 unless session[:user_id]
23 redirect_to :controller => 'main', :action => 'login'
30 redirect_to :controller => 'main', :action => 'login'
24 return false
31 return false
25 end
32 end
26
33
27 - Configuration.reload
34 + #Configuration.reload
28 # check if run in single user mode
35 # check if run in single user mode
29 if (Configuration[SINGLE_USER_MODE_CONF_KEY])
36 if (Configuration[SINGLE_USER_MODE_CONF_KEY])
30 user = User.find(session[:user_id])
37 user = User.find(session[:user_id])
@@ -10,6 +10,11
10 if user = User.authenticate(params[:login], params[:password])
10 if user = User.authenticate(params[:login], params[:password])
11 session[:user_id] = user.id
11 session[:user_id] = user.id
12 redirect_to :controller => 'main', :action => 'list'
12 redirect_to :controller => 'main', :action => 'list'
13 + if user.admin?
14 + session[:admin] = true
15 + else
16 + session[:admin] = false
17 + end
13 else
18 else
14 flash[:notice] = 'Wrong password'
19 flash[:notice] = 'Wrong password'
15 redirect_to :controller => 'main', :action => 'login'
20 redirect_to :controller => 'main', :action => 'login'
@@ -5,9 +5,7
5 verify :method => :post, :only => ['create'],
5 verify :method => :post, :only => ['create'],
6 :redirect_to => { :action => 'list' }
6 :redirect_to => { :action => 'list' }
7
7
8 - before_filter :only => ['console','show'] do |controller|
8 + before_filter :admin_authorization, :only => ['console','show','reply']
9 - controller.authorization_by_roles(['admin'])
10 - end
11
9
12 def list
10 def list
13 @user = User.find(session[:user_id])
11 @user = User.find(session[:user_id])
@@ -5,7 +5,7
5 menu_items = ''
5 menu_items = ''
6 user = User.find(session[:user_id])
6 user = User.find(session[:user_id])
7
7
8 - if (user!=nil) and (user.admin?)
8 + if (user!=nil) and (session[:admin])
9 # admin menu
9 # admin menu
10 menu_items << "<b>Administrative task:</b> "
10 menu_items << "<b>Administrative task:</b> "
11 append_to menu_items, '[Announcements]', 'announcements', 'index'
11 append_to menu_items, '[Announcements]', 'announcements', 'index'
@@ -20,7 +20,11
20 = in_place_editor_field :configuration, :value, {}, :rows=>1
20 = in_place_editor_field :configuration, :value, {}, :rows=>1
21
21
22 %br/
22 %br/
23 - = link_to '[Reload configuration]', :action => 'reload'
23 + Your config is saved, but it does not automatically take effect.
24 %br/
24 %br/
25 - Your config is saved, but it does not automatically take effect.
25 + If you have one mongrel process running, you can
26 - You must reload.
26 + = link_to '[click]', :action => 'reload'
27 + here to reload.
28 + %br/
29 + If you have more than one process running, you should restart
30 + them manually.
You need to be logged in to leave comments. Login now