Class: Dscf::Core::User
Class Method Summary
collapse
Instance Method Summary
collapse
#active?, #authenticate_with_password, #generate_auth_tokens, #locked?, #revoke_all_tokens, #track_device, #valid_for_authentication?
Class Method Details
.ransackable_associations(_auth_object = nil) ⇒ Object
77
78
79
|
# File 'app/models/dscf/core/user.rb', line 77
def self.ransackable_associations(_auth_object = nil)
%w[refresh_tokens user_roles roles businesses addresses documents user_profile]
end
|
.ransackable_attributes(_auth_object = nil) ⇒ Object
73
74
75
|
# File 'app/models/dscf/core/user.rb', line 73
def self.ransackable_attributes(_auth_object = nil)
%w[id email phone verified_at created_at updated_at]
end
|
Instance Method Details
#active_permissions ⇒ Object
45
46
47
48
49
50
51
52
53
54
55
56
57
|
# File 'app/models/dscf/core/user.rb', line 45
def active_permissions
@active_permissions ||= Set.new(
Permission
.joins(role_permissions: {role: :user_roles})
.where(
dscf_core_user_roles: {user_id: id},
dscf_core_roles: {active: true},
dscf_core_permissions: {active: true}
)
.where("dscf_core_user_roles.expires_at IS NULL OR dscf_core_user_roles.expires_at > ?", Time.current)
.pluck("dscf_core_permissions.code")
)
end
|
#active_role_codes ⇒ Object
59
60
61
62
63
64
65
66
|
# File 'app/models/dscf/core/user.rb', line 59
def active_role_codes
@active_role_codes ||= roles
.where(active: true)
.joins(:user_roles)
.where(dscf_core_user_roles: {user_id: id})
.where("dscf_core_user_roles.expires_at IS NULL OR dscf_core_user_roles.expires_at > ?", Time.current)
.pluck("dscf_core_roles.code")
end
|
#clear_permission_cache! ⇒ Object
68
69
70
71
|
# File 'app/models/dscf/core/user.rb', line 68
def clear_permission_cache!
@active_permissions = nil
@active_role_codes = nil
end
|
#has_all_permissions?(*permission_codes) ⇒ Boolean
32
33
34
|
# File 'app/models/dscf/core/user.rb', line 32
def has_all_permissions?(*permission_codes)
permission_codes.flatten.all? { |code| has_permission?(code) }
end
|
#has_any_permission?(*permission_codes) ⇒ Boolean
36
37
38
|
# File 'app/models/dscf/core/user.rb', line 36
def has_any_permission?(*permission_codes)
permission_codes.flatten.any? { |code| has_permission?(code) }
end
|
#has_permission?(permission_code) ⇒ Boolean
Also known as:
can?
24
25
26
27
28
|
# File 'app/models/dscf/core/user.rb', line 24
def has_permission?(permission_code)
return true if super_admin?
active_permissions.include?(permission_code.to_s)
end
|
#has_role?(role_code) ⇒ Boolean
rubocop:disable Naming/PredicateName
20
21
22
|
# File 'app/models/dscf/core/user.rb', line 20
def has_role?(role_code)
active_role_codes.include?(role_code.to_s.upcase)
end
|
#super_admin? ⇒ Boolean
rubocop:enable Naming/PredicateName
41
42
43
|
# File 'app/models/dscf/core/user.rb', line 41
def super_admin?
active_role_codes.include?("SUPER_ADMIN")
end
|