Skip to content

Commit

Permalink
[WIP] Validate the submitted admin set is allowed
Browse files Browse the repository at this point in the history
  • Loading branch information
jcoyne committed Nov 2, 2016
1 parent 14d177b commit f73cef5
Show file tree
Hide file tree
Showing 5 changed files with 44 additions and 7 deletions.
4 changes: 2 additions & 2 deletions app/actors/sufia/apply_permission_template_actor.rb
Expand Up @@ -8,8 +8,8 @@ def create(attributes)
protected

def add_edit_users(attributes)
return unless attributes[:admin_set_id]
template = Sufia::PermissionTemplate.find_by(admin_set_id: attributes[:admin_set_id])
return unless attributes[:admin_set_id].present?
template = Sufia::PermissionTemplate.find_by!(admin_set_id: attributes[:admin_set_id])
curation_concern.edit_users = template.access_grants.where(agent_type: 'user', access: 'manage').pluck(:agent_id)
curation_concern.edit_groups = template.access_grants.where(agent_type: 'group', access: 'manage').pluck(:agent_id)
curation_concern.read_users = template.access_grants.where(agent_type: 'user', access: 'view').pluck(:agent_id)
Expand Down
29 changes: 29 additions & 0 deletions app/actors/sufia/validate_form_actor.rb
@@ -0,0 +1,29 @@
module Sufia
# Creates a work and attaches files to the work
class ValidateFormActor < CurationConcerns::Actors::AbstractActor
def create(attributes)
valid?(attributes) && next_actor.create(attributes)
end

def update(attributes)
valid?(attributes) && next_actor.update(attributes)
end

protected

# TODO: use the new type picker:
# https://github.com/projecthydra/curation_concerns/pull/1077
def form_class
CurationConcerns.const_get("#{curation_concern.model_name.name}Form")
end

def build_form(attributes)
@form = form_class.new(curation_concern, ::Ability.new(user), attributes)
end

def valid?(_attributes)
true
# build_form(attributes).valid?
end
end
end
9 changes: 7 additions & 2 deletions app/forms/sufia/forms/work_form.rb
Expand Up @@ -12,9 +12,14 @@ class WorkForm < CurationConcerns::Forms::WorkForm
self.terms += [:collection_ids, :admin_set_id]
self.required_fields = [:title, :creator, :keyword, :rights]

def initialize(model, current_ability)
def initialize(model, current_ability, _attributes = nil)
@agreement_accepted = !model.new_record?
super
# @attributes = attributes
super(model, current_ability)
end

def valid?
true
end

def [](key)
Expand Down
3 changes: 2 additions & 1 deletion app/services/sufia/actor_factory.rb
@@ -1,7 +1,8 @@
module Sufia
class ActorFactory < CurationConcerns::Actors::ActorFactory
def self.stack_actors(curation_concern)
[CreateWithRemoteFilesActor,
[ValidateFormActor,
CreateWithRemoteFilesActor,
CreateWithFilesActor,
CurationConcerns::Actors::AddToCollectionActor,
CurationConcerns::Actors::AddToWorkActor,
Expand Down
6 changes: 4 additions & 2 deletions spec/services/sufia/actor_factory_spec.rb
Expand Up @@ -5,7 +5,8 @@
describe '.stack_actors' do
subject { described_class.stack_actors(work) }
it do
is_expected.to eq [Sufia::CreateWithRemoteFilesActor,
is_expected.to eq [Sufia::ValidateFormActor,
Sufia::CreateWithRemoteFilesActor,
Sufia::CreateWithFilesActor,
CurationConcerns::Actors::AddToCollectionActor,
CurationConcerns::Actors::AddToWorkActor,
Expand All @@ -22,6 +23,7 @@
subject { described_class.build(work, user) }
it "has the correct stack frames" do
expect(subject.more_actors).to eq [
Sufia::CreateWithRemoteFilesActor,
Sufia::CreateWithFilesActor,
CurationConcerns::Actors::AddToCollectionActor,
CurationConcerns::Actors::AddToWorkActor,
Expand All @@ -32,7 +34,7 @@
Sufia::ApplyPermissionTemplateActor,
CurationConcerns::Actors::GenericWorkActor
]
expect(subject.first_actor_class).to eq Sufia::CreateWithRemoteFilesActor
expect(subject.first_actor_class).to eq Sufia::ValidateFormActor
end
end

Expand Down

0 comments on commit f73cef5

Please sign in to comment.