diff --git a/app/models/role.rb b/app/models/role.rb index 4beb5f5cf38d705970319c0a1fbfc311adc7564d..4d4af8793c300b988ab2d788bff92062d3d7813c 100644 --- a/app/models/role.rb +++ b/app/models/role.rb @@ -64,5 +64,9 @@ class Role < ApplicationRecord def self.submitter find_by(name: 'submitter') || create!(name: 'submitter') end - + + def self.partner + find_by(name: 'partner') || create!(name: 'partner') + end + end diff --git a/app/models/user.rb b/app/models/user.rb index b303638600e2a15130d10694f568cefc97eb664f..d603fdd3f8e11a30ef392c71e3e1372bce5443bf 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -155,6 +155,13 @@ class User < ApplicationRecord false end + def is_partner? + roles.each do |role| + return true if role.name == 'partner' + end + false + end + def can_edit? self.is_admin? || self.is_editor? end diff --git a/app/policies/learning_object_policy.rb b/app/policies/learning_object_policy.rb index e0044b498b8fd5de1321f791a8089b8128b144ba..ff55dfcec746a90f337062a1fd627bb5c1c15103 100644 --- a/app/policies/learning_object_policy.rb +++ b/app/policies/learning_object_policy.rb @@ -38,15 +38,15 @@ class LearningObjectPolicy < ApplicationPolicy end def create? - record if user_exists? && user.is_submitter? + record if (user_exists? && user.is_submitter?) || (user_exists? && user.is_partner?) end def update? - record if owns? && user.is_submitter? + record if (owns? && user.is_submitter?) || (owns? && user.is_partner?) end def publish? - record if user_can_curate? && record.submitted? + record if (user_can_curate? && record.submitted?) || user.is_partner? end def destroy? diff --git a/spec/shared/contexts.rb b/spec/shared/contexts.rb index e972b801ec3dbddf7e80e940c33936ce42885a54..90ba69ca40ca86993b00c2e59a274f92e42f34e3 100644 --- a/spec/shared/contexts.rb +++ b/spec/shared/contexts.rb @@ -112,3 +112,16 @@ RSpec.shared_context "authenticate_user_supervisor", shared_context: :metadata d end end + +RSpec.shared_context "authenticate_user_partner", shared_context: :metadata do + let(:auth_client) { @auth_headers['client'] } + let(:uid) { @auth_headers['uid'] } + let(:access_token) { @auth_headers['access-token'] } + let(:role) { Role.all } + + before do + @user = create(:user, roles: [role.find_by(name: 'partner')]) + @auth_headers = @user.create_new_auth_token + end + +end