diff --git a/app/models/user.rb b/app/models/user.rb index b815846..4b069f4 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -161,7 +161,7 @@ # # @return [Boolean] true if the user is an admin def can_super_admin? - return self.can_add_orgs? + return self.can_add_orgs? || self.can_grant_api_to_orgs? || can_change_org? end ## @@ -228,15 +228,24 @@ return !use_api.nil? end - # + ## # checks if the user can modify their org's details - # + # # @return [Boolean] true if the user can modify the org's details def can_modify_org_details? modify_org_details = roles.find_by(name: constant("user_role_types.change_org_details")) return !modify_org_details.nil? end - + + ## + # checks if the user can grant the api to organisations + # + # @return [Boolean] true if the user can grant api permissions to organisations + def can_grant_api_to_orgs? + grant_api = roles.find_by(name: constant('user_role_types.grant_api_to_orgs')) + return !modify_org_details.nil? + end + ## # checks what type the user's organisation is # diff --git a/config/locales/en-UK.yml b/config/locales/en-UK.yml index b443c6d..6d07ede 100644 --- a/config/locales/en-UK.yml +++ b/config/locales/en-UK.yml @@ -956,6 +956,7 @@ modify_guidance: 'modify_guidance' use_api: 'use_api' change_org_details: 'change_org_detials' + grant_api_to_orgs: 'grant_api_to_orgs' api_endpoint_types: guidances: 'guidances' plans: 'plans' diff --git a/db/seeds.rb b/db/seeds.rb index 713f6ee..18eee76 100644 --- a/db/seeds.rb +++ b/db/seeds.rb @@ -203,6 +203,9 @@ }, 'change_org_detials' => { name: 'change_org_detials' + }, + 'grant_api_to_orgs' => { + name: 'grant_api_to_orgs' } } @@ -241,7 +244,7 @@ password_confirmation: "password123", organisation: "RCC", language: 'English(UK)', - roles: ['admin','org_admin','add_organisations','change_org_affiliation','grant_permissions','modify_templates','modify_guidance','use_api','change_org_detials'], + roles: ['admin','org_admin','add_organisations','change_org_affiliation','grant_permissions','modify_templates','modify_guidance','use_api','change_org_detials','grant_api_to_orgs'], accept_terms: true, confirmed_at: Time.zone.now }, @@ -286,20 +289,20 @@ users.each do |user, details| if User.where(email: details[:email]).empty? usr = User.new + else + usr = User.where(email: details[:email]) + end usr.email = details[:email] usr.password = details[:password] usr.password_confirmation = details[:password_confirmation] usr.confirmed_at = details[:confirmed_at] usr.organisation_id = Organisation.find_by_abbreviation(details[:organisation]).id -# usr.user_org_roles << UserOrgRole.create(organisation: Organisation.find_by_abbreviation(details[:organisation]), -# user_role_type: UserRoleType.find_by_name('admin')) usr.language_id = Language.find_by_name(details[:language]).id details[:roles].each do |role| usr.roles << Role.find_by_name(role) end usr.accept_terms = details[:accept_terms] usr.save! - end end themes = {