Class: PermissionsController
- Inherits:
-
ApplicationController
- Object
- ActionController::Base
- ApplicationController
- PermissionsController
- Includes:
- MediaShelf::ActiveFedoraHelper
- Defined in:
- vendor/plugins/hydra_repository/app/controllers/permissions_controller.rb
Instance Method Summary (collapse)
-
- (Object) create
Create a new permissions entry expects permission[“actor_id”], permission[“actor_type”] and permission[“access_level”] as params.
- - (Object) edit
- - (Object) index
- - (Object) new
-
- (Object) update
Updates the permissions for all actors in a hash.
Methods included from MediaShelf::ActiveFedoraHelper
#load_af_instance_from_solr, #retrieve_af_model
Methods inherited from ApplicationController
#current_user, #default_html_head, #error, #extra_head_content, #javascript_includes, #stylesheet_links, #user_class
Methods included from HydraAccessControlsHelper
#editor?, #reader?, #test_permission
Instance Method Details
- (Object) create
Create a new permissions entry expects permission[“actor_id”], permission[“actor_type”] and permission[“access_level”] as params. ie. :permission=>PermissionsController.&“actor_id&“actor_id”=>&“actor_id”=>“<em>person_id</em>&“actor_id”=>“<em>person_id</em>“,&“actor_id”=>“<em>person_id</em>“,“actor_type&“actor_id”=>“<em>person_id</em>“,“actor_type”=>&“actor_id”=>“<em>person_id</em>“,“actor_type”=>“person&“actor_id”=>“<em>person_id</em>“,“actor_type”=>“person”,&“actor_id”=>“<em>person_id</em>“,“actor_type”=>“person”,“access_level&“actor_id”=>“<em>person_id</em>“,“actor_type”=>“person”,“access_level”=>&“actor_id”=>“<em>person_id</em>“,“actor_type”=>“person”,“access_level”=>“read&“actor_id”=>“<em>person_id</em>“,“actor_type”=>“person”,“access_level”=>“read”
36 37 38 39 40 41 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 |
# File 'vendor/plugins/hydra_repository/app/controllers/permissions_controller.rb', line 36 def create pid = params[:asset_id] dsid = "rightsMetadata" # xml_content = Fedora::Repository.instance.fetch_custom(pid, "datastreams/#{dsid}/content") @document_fedora=ActiveFedora::Base.load_instance(params[:asset_id]) xml_content = @document_fedora.datastreams_in_memory[dsid].content ds = Hydra::RightsMetadata.from_xml(xml_content) ds.pid = pid ds.dsid = dsid @document_fedora.datastreams_in_memory[dsid] = ds access_actor_type = params["permission"]["actor_type"] actor_id = params["permission"]["actor_id"] access_level = params["permission"]["access_level"] # update the datastream's values result = ds.({access_actor_type => actor_id}, access_level) # Replace the object's datastream with the new updated ds # !! Careful when re-working this. If you init the object, replace the datastream, and call object.save, the datastream might get indexed twice! # FUTURE: ActiveFedora::Base will support this soon: # ActiveFedora::Base.replace_datastream("changeme:25","rightsMetadata", ds). # base_object.replace_datastream("rightsMetadata", ds) ds.pid = pid ds.dsid = dsid ds.save # Re-index the object Solrizer::Fedora::Solrizer.new.solrize(pid) render :partial=>"permissions/edit_person_permissions", :locals=>{:person_id=>actor_id} end |
- (Object) edit
22 23 24 25 26 27 28 29 30 31 32 |
# File 'vendor/plugins/hydra_repository/app/controllers/permissions_controller.rb', line 22 def edit @document_fedora=ActiveFedora::Base.load_instance(params[:asset_id]) pid = params[:asset_id] dsid = "rightsMetadata" xml_content = @document_fedora.datastreams_in_memory[dsid].content ds = Hydra::RightsMetadata.from_xml(xml_content) ds.pid = pid ds.dsid = dsid @document_fedora.datastreams_in_memory[dsid] = ds render :edit end |
- (Object) index
6 7 8 9 10 11 12 13 14 15 16 |
# File 'vendor/plugins/hydra_repository/app/controllers/permissions_controller.rb', line 6 def index @document_fedora=ActiveFedora::Base.load_instance(params[:asset_id]) pid = params[:asset_id] dsid = "rightsMetadata" xml_content = @document_fedora.datastreams_in_memory[dsid].content ds = Hydra::RightsMetadata.from_xml(xml_content) ds.pid = pid ds.dsid = dsid @document_fedora.datastreams_in_memory[dsid] = ds render :partial=>"permissions/index" end |
- (Object) new
18 19 20 |
# File 'vendor/plugins/hydra_repository/app/controllers/permissions_controller.rb', line 18 def new render :partial=>"permissions/new" end |
- (Object) update
Updates the permissions for all actors in a hash. Can specify as many groups and persons as you want ie. :permission => PermissionsController.&“group&“group”=>{&“group”=>{“group1&“group”=>{“group1”=>&“group”=>{“group1”=>“discover&“group”=>{“group1”=>“discover”,&“group”=>{“group1”=>“discover”,“group2&“group”=>{“group1”=>“discover”,“group2”=>&“group”=>{“group1”=>“discover”,“group2”=>“edit&“group”=>{“group1”=>“discover”,“group2”=>“edit”, PermissionsController.&“person&“person”=>{&“person”=>{“person1&“person”=>{“person1”=>&“person”=>{“person1”=>“read&“person”=>{“person1”=>“read”}}
71 72 73 74 75 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 |
# File 'vendor/plugins/hydra_repository/app/controllers/permissions_controller.rb', line 71 def update pid = params[:asset_id] dsid = "rightsMetadata" # xml_content = Fedora::Repository.instance.fetch_custom(pid, "datastreams/#{dsid}/content") @document_fedora=ActiveFedora::Base.load_instance(params[:asset_id]) xml_content = @document_fedora.datastreams_in_memory[dsid].content ds = Hydra::RightsMetadata.from_xml(xml_content) ds.pid = pid ds.dsid = dsid @document_fedora.datastreams_in_memory[dsid] = ds # update the datastream's values result = ds.(params[:permission]) # Replace the object's datastream with the new updated ds # !! Careful when re-working this. If you init the object, replace the datastream, and call object.save, the datastream might get indexed twice! # FUTURE: ActiveFedora::Base will support this soon: # ActiveFedora::Base.replace_datastream("changeme:25","rightsMetadata", ds). # base_object.replace_datastream("rightsMetadata", ds) ds.pid = pid ds.dsid = dsid ds.save # Re-index the object Solrizer::Fedora::Solrizer.new.solrize(pid) # This should be replaced ... if params[:permission].has_key?(:group) access_actor_type = "group" else access_actor_type = "person" end actor_id = params["permission"][access_actor_type].first[0] render :partial=>"permissions/edit_person_permissions", :locals=>{:person_id=>actor_id} end |