Description:
[web] added single user mode git-svn-id: http://theory.cpe.ku.ac.th/grader/web/trunk@144 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

r67:971140e73bc7 - - 3 files changed: 77 inserted, 63 deleted

@@ -0,0 +1,67
1 + # Be sure to restart your web server when you modify this file.
2 +
3 + # Uncomment below to force Rails into production mode when
4 + # you don't control web/app server and can't set it the proper way
5 + # ENV['RAILS_ENV'] ||= 'production'
6 +
7 + # Specifies gem version of Rails to use when vendor/rails is not present
8 + RAILS_GEM_VERSION = '2.0.2' unless defined? RAILS_GEM_VERSION
9 +
10 + # Bootstrap the Rails environment, frameworks, and default configuration
11 + require File.join(File.dirname(__FILE__), 'boot')
12 +
13 + Rails::Initializer.run do |config|
14 + # Settings in config/environments/* take precedence over those specified here
15 +
16 + # Skip frameworks you're not going to use (only works if using vendor/rails)
17 + # config.frameworks -= [ :action_web_service, :action_mailer ]
18 +
19 + # Only load the plugins named here, by default all plugins in vendor/plugins are loaded
20 + # config.plugins = %W( exception_notification ssl_requirement )
21 +
22 + # Add additional load paths for your own custom dirs
23 + # config.load_paths += %W( #{RAILS_ROOT}/extras )
24 +
25 + # Force all environments to use the same logger level
26 + # (by default production uses :info, the others :debug)
27 + # config.log_level = :debug
28 +
29 + # Use the database for sessions instead of the file system
30 + # (create the session table with 'rake db:sessions:create')
31 + config.action_controller.session_store = :active_record_store
32 +
33 + # Use SQL instead of Active Record's schema dumper when creating the test database.
34 + # This is necessary if your schema can't be completely dumped by the schema dumper,
35 + # like if you have constraints or database-specific column types
36 + # config.active_record.schema_format = :sql
37 +
38 + # Activate observers that should always be running
39 + # config.active_record.observers = :cacher, :garbage_collector
40 +
41 + # Make Active Record use UTC-base instead of local time
42 + config.active_record.default_timezone = :utc
43 +
44 + # See Rails::Configuration for more options
45 + end
46 +
47 + # Add new inflection rules using the following format
48 + # (all these examples are active by default):
49 + # Inflector.inflections do |inflect|
50 + # inflect.plural /^(ox)$/i, '\1en'
51 + # inflect.singular /^(ox)en/i, '\1'
52 + # inflect.irregular 'person', 'people'
53 + # inflect.uncountable %w( fish sheep )
54 + # end
55 +
56 + # Add new mime types for use in respond_to blocks:
57 + # Mime::Type.register "text/richtext", :rtf
58 + # Mime::Type.register "application/x-mobile", :mobile
59 +
60 + # Include your application configuration below
61 +
62 + # These are where inputs and outputs of test requests are stored
63 + TEST_REQUEST_INPUT_FILE_DIR = RAILS_ROOT + '/data/test_request/input'
64 + TEST_REQUEST_OUTPUT_FILE_DIR = RAILS_ROOT + '/data/test_request/output'
65 +
66 + # Uncomment this for single user mode (only root is allowed to log in)
67 + # SINGLE_USER_MODE = true
@@ -1,34 +1,44
1 # Filters added to this controller apply to all controllers in the application.
1 # Filters added to this controller apply to all controllers in the application.
2 # Likewise, all the methods added will be available for all controllers.
2 # Likewise, all the methods added will be available for all controllers.
3
3
4 class ApplicationController < ActionController::Base
4 class ApplicationController < ActionController::Base
5 # Pick a unique cookie name to distinguish our session data from others'
5 # Pick a unique cookie name to distinguish our session data from others'
6 session :session_key => '_grader_session_id'
6 session :session_key => '_grader_session_id'
7
7
8 protected
8 protected
9 def authenticate
9 def authenticate
10 unless session[:user_id]
10 unless session[:user_id]
11 redirect_to :controller => 'main', :action => 'login'
11 redirect_to :controller => 'main', :action => 'login'
12 return false
12 return false
13 end
13 end
14 +
15 + user = User.find(session[:user_id])
16 + # check if run in single user mode
17 + if (defined?(SINGLE_USER_MODE) and
18 + (SINGLE_USER_MODE) and
19 + user.login != 'root')
20 + redirect_to :controller => 'main', :action => 'login'
21 + return false
22 + end
23 +
14 return true
24 return true
15 end
25 end
16
26
17 def authorization
27 def authorization
18 return false unless authenticate
28 return false unless authenticate
19 user = User.find(session[:user_id])
29 user = User.find(session[:user_id])
20 unless user.roles.detect { |role|
30 unless user.roles.detect { |role|
21 role.rights.detect{ |right|
31 role.rights.detect{ |right|
22 right.controller == self.class.controller_name and
32 right.controller == self.class.controller_name and
23 (right.action == 'all' or right.action == action_name)
33 (right.action == 'all' or right.action == action_name)
24 }
34 }
25 }
35 }
26 flash[:notice] = 'You are not authorized to view the page you requested'
36 flash[:notice] = 'You are not authorized to view the page you requested'
27 #request.env['HTTP_REFERER'] ? (redirect_to :back) : (redirect_to :controller => 'login')
37 #request.env['HTTP_REFERER'] ? (redirect_to :back) : (redirect_to :controller => 'login')
28 redirect_to :controller => 'main', :action => 'login'
38 redirect_to :controller => 'main', :action => 'login'
29 return false
39 return false
30 end
40 end
31 end
41 end
32
42
33 end
43 end
34
44
deleted file
You need to be logged in to leave comments. Login now