Skip to content

Commit f7a2d66

Browse files
authored
Merge pull request #14 from sascha-karnatz/prevent-updating-base-roles
Prevent updating base roles
2 parents f52678b + a5182fa commit f7a2d66

File tree

2 files changed

+13
-2
lines changed

2 files changed

+13
-2
lines changed

app/decorators/models/solidus_user_roles/spree/role_decorator.rb

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,15 @@
33
module SolidusUserRoles
44
module Spree
55
module RoleDecorator
6+
BASE_ROLES = ["admin", "user"]
7+
68
def self.prepended(base)
79
base.has_many :role_permissions, dependent: :destroy
810
base.has_many :permission_sets, through: :role_permissions
911

10-
base.scope :non_base_roles, -> { where.not(name: ["admin", "user"]) }
12+
base.scope :non_base_roles, -> { where.not(name: BASE_ROLES) }
1113
base.validates_uniqueness_of :name, case_sensitive: false
12-
base.after_save :assign_permissions
14+
base.after_save :assign_permissions, if: -> { BASE_ROLES.none?(name) }
1315
end
1416

1517
def permission_sets_constantized

spec/models/spree/role_spec.rb

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,15 @@
2929

3030
expect { role.save }.to change { Spree::Config.roles.roles[role.name].permission_sets.count }.from(1).to(0)
3131
end
32+
33+
it "should not update base roles" do
34+
role.name = "admin"
35+
role.save
36+
37+
role.permission_sets = []
38+
39+
expect { role.save }.to_not change { Spree::Config.roles.roles[role.name].permission_sets.count }
40+
end
3241
end
3342

3443
describe "#destroy" do

0 commit comments

Comments
 (0)