From d78bb3d00c2a4e2f867089813ce18bec6b1826b2 Mon Sep 17 00:00:00 2001 From: Marcela Ribeiro de Oliveira <mro15@inf.ufpr.br> Date: Thu, 6 Jul 2017 15:09:59 -0300 Subject: [PATCH] support to role partner --- app/models/role.rb | 6 +++++- app/models/user.rb | 7 +++++++ app/policies/learning_object_policy.rb | 6 +++--- spec/shared/contexts.rb | 13 +++++++++++++ 4 files changed, 28 insertions(+), 4 deletions(-) diff --git a/app/models/role.rb b/app/models/role.rb index 4beb5f5c..4d4af879 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 b3036386..d603fdd3 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 e0044b49..ff55dfce 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 e972b801..90ba69ca 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 -- GitLab