Class: Alberich::PermissionsController
- Inherits:
-
ApplicationController
- Object
- ApplicationController
- ApplicationController
- Alberich::PermissionsController
- Defined in:
- app/controllers/alberich/permissions_controller.rb
Instance Method Summary collapse
-
#create ⇒ Object
POST /permissions POST /permissions.json.
-
#destroy ⇒ Object
DELETE /permissions/1 DELETE /permissions/1.json.
-
#global_permission_ui_hook ⇒ Object
this allows any controller actions needed in the application to set up additional elements for global permissions UI view.
-
#index ⇒ Object
GET /permissions GET /permissions.json.
- #load_entities ⇒ Object
- #load_headers ⇒ Object
- #multi_destroy ⇒ Object
- #multi_update ⇒ Object
-
#new ⇒ Object
GET /permissions/new GET /permissions/new.json.
- #set_permission_object(required_role = Privilege::PERM_SET) ⇒ Object
Instance Method Details
#create ⇒ Object
POST /permissions POST /permissions.json
42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 |
# File 'app/controllers/alberich/permissions_controller.rb', line 42 def create added=[] not_added=[] params[:entity_role_selected].each do |entity_role| entity_id,role_id = entity_role.split(",") unless role_id.nil? = Permission.new(:entity_id => entity_id, :role_id => role_id, :permission_object => @permission_object) if .save added << "#{.entity.name} (#{.role.name})" else not_added << "#{.entity.name} (#{.role.name})" end end end unless added.empty? flash[:notice] = "Added the following permission grants: #{added.to_sentence}" end unless not_added.empty? flash[:error] = "Could not add the following permission grants: #{not_added.to_sentence}" end if added.empty? and not_added.empty? flash[:error] = "No users or groups selected" end respond_to do |format| format.html { redirect_to @return_path } format.js { render :partial => 'index', :permission_object_type => @permission_object.class.name, :permission_object_id => @permission_object.id } end end |
#destroy ⇒ Object
DELETE /permissions/1 DELETE /permissions/1.json
144 145 146 147 148 149 150 151 152 153 154 |
# File 'app/controllers/alberich/permissions_controller.rb', line 144 def destroy if request.delete? p = Permission.find(params[:id]) ptype, pid = [p., p.] require_privilege(Privilege::PERM_SET, p.) p.destroy end redirect_to :action => "index", :permission_object_type => ptype, :permission_object_id => pid end |
#global_permission_ui_hook ⇒ Object
this allows any controller actions needed in the application to set up additional elements for global permissions UI view
168 169 |
# File 'app/controllers/alberich/permissions_controller.rb', line 168 def end |
#index ⇒ Object
GET /permissions GET /permissions.json
7 8 9 10 11 12 13 14 15 |
# File 'app/controllers/alberich/permissions_controller.rb', line 7 def index (Privilege::PERM_VIEW) @roles = Role.find_all_by_scope(@permission_object.class.name) respond_to do |format| format.html format.json { render :json => @permission_object.as_json } format.js { render :partial => 'permissions' } end end |
#load_entities ⇒ Object
156 157 158 |
# File 'app/controllers/alberich/permissions_controller.rb', line 156 def load_entities @entities = Entity.order("name") end |
#load_headers ⇒ Object
160 161 162 163 164 |
# File 'app/controllers/alberich/permissions_controller.rb', line 160 def load_headers @header = [{ :name => '', :sortable => false }, { :name => "Name"}, { :name => "Role", :sortable => false }] end |
#multi_destroy ⇒ Object
113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 |
# File 'app/controllers/alberich/permissions_controller.rb', line 113 def multi_destroy deleted=[] not_deleted=[] Permission.find(params[:permission_selected]).each do |p| if check_privilege(Privilege::PERM_SET, p.) && p.destroy deleted << "#{p.entity.name} #{p.role.name}" else not_deleted << "#{p.entity.name} #{p.role.name}" end end unless deleted.empty? flash[:notice] = "Deleted the following Permission Grants: #{deleted.to_sentence}" end unless not_deleted.empty? flash[:error] = "Could not delete these Permission Grants: #{not_deleted.to_sentence}" end respond_to do |format| format.html { redirect_to @return_path } format.js { render :partial => 'index', :permission_object_type => @permission_object.class.name, :permission_object_id => @permission_object.id } format.json { render :json => @permission, :status => :created } end end |
#multi_update ⇒ Object
76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 |
# File 'app/controllers/alberich/permissions_controller.rb', line 76 def multi_update modified=[] not_modified=[] params[:permission_role_selected].each do || ,role_id = .split(",") unless role_id.nil? = Permission.find() role = Role.find(role_id) old_role = .role unless .role == role .role = role if .save modified << "%{permission.entity.name} (from %{old_role.name} to %{permission.role.name})" else not_modified << "%{permission.entity.name} (from %{old_role.name} to %{permission.role.name})" end end end end unless modified.empty? flash[:notice] = "Successfully modified the following permission records #{modified.to_sentence}" end unless not_modified.empty? flash[:error] = "Could not add these permission records #{not_modified.to_sentence}" end if modified.empty? and not_modified.empty? flash[:notice] = "All permission records already set; no changes needed" end respond_to do |format| format.html { redirect_to @return_path } format.js { render :partial => 'index', :permission_object_type => @permission_object.class.name, :permission_object_id => @permission_object.id } end end |
#new ⇒ Object
GET /permissions/new GET /permissions/new.json
19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
# File 'app/controllers/alberich/permissions_controller.rb', line 19 def new @users = Alberich.user_class.constantize.all @roles = Role.find_all_by_scope(@permission_object.class.name) if @permission_object == BasePermissionObject. @return_text = "Global Role Grants" @summary_text = "Choose Global Role" else @return_text = "#{@permission_object.name} " + @permission_object.class.model_name.human @summary_text = "Choose roles for " + @permission_object.class.model_name.human end load_headers load_entities respond_to do |format| format.html format.js { render :partial => 'new' } end end |
#set_permission_object(required_role = Privilege::PERM_SET) ⇒ Object
170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 |
# File 'app/controllers/alberich/permissions_controller.rb', line 170 def (required_role=Privilege::PERM_SET) obj_type = params[:permission_object_type] id = params[:permission_object_id] @return_path = params[:return_path] @path_prefix = params[:path_prefix] @polymorphic_path_extras = params[:polymorphic_path_extras] @use_tabs = params[:use_tabs] unless obj_type or id @permission_object = BasePermissionObject. end if obj_type && id if klass = ActiveRecord::Base.send(:subclasses). find{|c| c.name == obj_type} @permission_object = klass.find(id) else raise RuntimeError, "invalid permission object type #{obj_type}" end end raise RuntimeError, "invalid permission object" if @permission_object.nil? unless @return_path if @permission_object == BasePermissionObject. @return_path = (:return_from_permission_change => true) else @return_path = main_app.send("#{@path_prefix}polymorphic_path", @permission_object.respond_to?( :to_polymorphic_path_param) ? @permission_object.to_polymorphic_path_param( @polymorphic_path_extras) : @permission_object, @use_tabs == "yes" ? {:details_tab => :permissions, :only_tab => true, :return_from_permission_change => true} : {:return_from_permission_change => true}) end end require_privilege(required_role, @permission_object) end |