Skip to content

Commit fd9fdcc

Browse files
committed
Introduce User#experience_cs_admin? method
I'm planning to make use of this to grant access to `Api::PublicProjectsController#create` so that admin users on the `experience-cs` website can create public Scratch projects via the `editor-api` API.
1 parent a789a1c commit fd9fdcc

File tree

3 files changed

+20
-0
lines changed

3 files changed

+20
-0
lines changed

app/models/user.rb

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,10 @@ def admin?
5454
parsed_roles.include?('editor-admin')
5555
end
5656

57+
def experience_cs_admin?
58+
parsed_roles.include?('experience-cs-admin')
59+
end
60+
5761
def parsed_roles
5862
roles&.to_s&.split(',')&.map(&:strip) || []
5963
end

spec/factories/user.rb

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,10 @@
1111
roles { 'editor-admin' }
1212
end
1313

14+
factory :experience_cs_admin_user do
15+
roles { 'experience-cs-admin' }
16+
end
17+
1418
factory :student do
1519
email { nil }
1620
username { Faker::Internet.username }

spec/models/user_spec.rb

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -311,6 +311,18 @@
311311
end
312312
end
313313

314+
describe '#experience_cs_admin?' do
315+
it 'returns true if the user has the experience-cs-admin role in Hydra' do
316+
user = build(:experience_cs_admin_user)
317+
expect(user).to be_experience_cs_admin
318+
end
319+
320+
it 'returns false if the user does not have the experience-cs-admin role in Hydra' do
321+
user = build(:user, roles: 'another-admin')
322+
expect(user).not_to be_experience_cs_admin
323+
end
324+
end
325+
314326
describe '#school_roles' do
315327
subject(:user) { build(:user) }
316328

0 commit comments

Comments
 (0)