diff --git a/.rubocop.yml b/.rubocop.yml index 96d82be6ca532b2665c29cc59a695f9dd480e809..b6908154e5e2ff5e73595a184169298346d712b0 100644 --- a/.rubocop.yml +++ b/.rubocop.yml @@ -76,7 +76,7 @@ RSpec/AnyInstance: Enabled: false Metrics/CyclomaticComplexity: - Max: 13 + Max: 14 Metrics/PerceivedComplexity: Max: 13 diff --git a/app/services/permissions_checker.rb b/app/services/permissions_checker.rb index 03e40aa416d75b0e31bf9ba20073418bb73242f5..cb169c7611ffcb76b3e48c5b87baec669f3b4deb 100644 --- a/app/services/permissions_checker.rb +++ b/app/services/permissions_checker.rb @@ -10,6 +10,8 @@ class PermissionsChecker end def call + return true if @current_user.role == Role.find_by(name: 'SuperAdmin', provider: 'bn') + return true if RolePermission.joins(:permission).exists?( role_id: @current_user.role_id, permission: { name: @permission_names }, diff --git a/spec/services/permissions_checker_spec.rb b/spec/services/permissions_checker_spec.rb index 20ff358955463d3447088b63fac5ee46fe1df0f6..21cb986b32c96d7313f0ff39333a0aa280415892 100644 --- a/spec/services/permissions_checker_spec.rb +++ b/spec/services/permissions_checker_spec.rb @@ -66,6 +66,18 @@ describe PermissionsChecker, type: :service do record_id: '' ).call).to be(true) end + + it 'checks the users role and returns true since user has SuperAdmin role' do + super_admin_role = create(:role, name: 'SuperAdmin', provider: 'bn') + super_admin_user = create(:user, provider: 'bn', role: super_admin_role) + expect(described_class.new( + current_user: super_admin_user, + permission_names: [], + user_id: super_admin_user.id, + friendly_id: '', + record_id: '' + ).call).to be(true) + end end end end