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
80
81
82
|
# File 'app/models/dscf/core/user.rb', line 80
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
76
77
78
|
# File 'app/models/dscf/core/user.rb', line 76
def self.ransackable_attributes(_auth_object = nil)
%w[id email phone status suspended_at suspension_reason verified_at created_at updated_at]
end
|
Instance Method Details
#active_permissions ⇒ Object
48
49
50
51
52
53
54
55
56
57
58
59
60
|
# File 'app/models/dscf/core/user.rb', line 48
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
62
63
64
65
66
67
68
69
|
# File 'app/models/dscf/core/user.rb', line 62
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
71
72
73
74
|
# File 'app/models/dscf/core/user.rb', line 71
def clear_permission_cache!
@active_permissions = nil
@active_role_codes = nil
end
|
#has_all_permissions?(*permission_codes) ⇒ Boolean
36
37
38
|
# File 'app/models/dscf/core/user.rb', line 36
def has_all_permissions?(*permission_codes)
permission_codes.flatten.all? { |code| has_permission?(code) }
end
|
#has_any_permission?(*permission_codes) ⇒ Boolean
40
41
42
|
# File 'app/models/dscf/core/user.rb', line 40
def has_any_permission?(*permission_codes)
permission_codes.flatten.any? { |code| has_permission?(code) }
end
|
#has_permission?(permission_code) ⇒ Boolean
Also known as:
can?
28
29
30
31
32
|
# File 'app/models/dscf/core/user.rb', line 28
def has_permission?(permission_code)
return true if super_admin?
active_permissions.include?(permission_code.to_s)
end
|
#has_role?(role_code) ⇒ Boolean
24
25
26
|
# File 'app/models/dscf/core/user.rb', line 24
def has_role?(role_code)
active_role_codes.include?(role_code.to_s.upcase)
end
|
#super_admin? ⇒ Boolean
44
45
46
|
# File 'app/models/dscf/core/user.rb', line 44
def super_admin?
active_role_codes.include?("SUPER_ADMIN")
end
|