summaryrefslogtreecommitdiffstats
path: root/app/controllers/roles_controller.rb
diff options
context:
space:
mode:
authorJean-Philippe Lang <jp_lang@yahoo.fr>2007-08-29 16:52:35 +0000
committerJean-Philippe Lang <jp_lang@yahoo.fr>2007-08-29 16:52:35 +0000
commit603e11d7a5aa62f923e7b013cac6c66462131232 (patch)
treefbbb204d2b92b5a87b787d56fe3f9c62cc3f259b /app/controllers/roles_controller.rb
parent8da5bad29516be6cbe1bc52e78837ac1ec292026 (diff)
downloadredmine-603e11d7a5aa62f923e7b013cac6c66462131232.tar.gz
redmine-603e11d7a5aa62f923e7b013cac6c66462131232.zip
Merged 0.6 branch into trunk.
Permissions management was rewritten. Some permissions can now be specifically defined for non member and anonymous users. This migration: * is irreversible (please, don't forget to *backup* your database before upgrading) * resets role's permissions (go to "Admin -> Roles & Permissions" to set them after upgrading) git-svn-id: http://redmine.rubyforge.org/svn/trunk@674 e93f8b46-1217-0410-a6f0-8f06a7374b81
Diffstat (limited to 'app/controllers/roles_controller.rb')
-rw-r--r--app/controllers/roles_controller.rb35
1 files changed, 15 insertions, 20 deletions
diff --git a/app/controllers/roles_controller.rb b/app/controllers/roles_controller.rb
index 6f1657675..24c7a3ffe 100644
--- a/app/controllers/roles_controller.rb
+++ b/app/controllers/roles_controller.rb
@@ -28,40 +28,35 @@ class RolesController < ApplicationController
end
def list
- @role_pages, @roles = paginate :roles, :per_page => 25, :order => "position"
+ @role_pages, @roles = paginate :roles, :per_page => 25, :order => 'builtin, position'
render :action => "list", :layout => false if request.xhr?
end
def new
@role = Role.new(params[:role])
- if request.post?
- @role.permissions = Permission.find(params[:permission_ids]) if params[:permission_ids]
- if @role.save
- flash[:notice] = l(:notice_successful_create)
- redirect_to :action => 'list'
- end
+ if request.post? && @role.save
+ flash[:notice] = l(:notice_successful_create)
+ redirect_to :action => 'list'
end
- @permissions = Permission.find(:all, :conditions => ["is_public=?", false], :order => 'sort ASC')
+ @permissions = @role.setable_permissions
end
def edit
@role = Role.find(params[:id])
if request.post? and @role.update_attributes(params[:role])
- @role.permissions = Permission.find(params[:permission_ids] || [])
- Permission.allowed_to_role_expired
flash[:notice] = l(:notice_successful_update)
redirect_to :action => 'list'
end
- @permissions = Permission.find(:all, :conditions => ["is_public=?", false], :order => 'sort ASC')
+ @permissions = @role.setable_permissions
end
def destroy
@role = Role.find(params[:id])
- unless @role.members.empty?
- flash[:error] = 'Some members have this role. Can\'t delete it.'
- else
+ #unless @role.members.empty?
+ # flash[:error] = 'Some members have this role. Can\'t delete it.'
+ #else
@role.destroy
- end
+ #end
redirect_to :action => 'list'
end
@@ -95,19 +90,19 @@ class RolesController < ApplicationController
flash[:notice] = l(:notice_successful_update)
end
end
- @roles = Role.find(:all, :order => 'position')
+ @roles = Role.find(:all, :order => 'builtin, position')
@trackers = Tracker.find(:all, :order => 'position')
@statuses = IssueStatus.find(:all, :include => :workflows, :order => 'position')
end
def report
- @roles = Role.find(:all, :order => 'position')
- @permissions = Permission.find :all, :conditions => ["is_public=?", false], :order => 'sort'
+ @roles = Role.find(:all, :order => 'builtin, position')
+ @permissions = Redmine::AccessControl.permissions.select { |p| !p.public? }
if request.post?
@roles.each do |role|
- role.permissions = Permission.find(params[:permission_ids] ? (params[:permission_ids][role.id.to_s] || []) : [] )
+ role.permissions = params[:permissions][role.id.to_s]
+ role.save
end
- Permission.allowed_to_role_expired
flash[:notice] = l(:notice_successful_update)
redirect_to :action => 'list'
end