Class: Clerk::Account
Defined Under Namespace
Classes: RolesWrapper
Class Method Summary
collapse
Instance Method Summary
collapse
clerk_persistence_api, clerk_persistence_path, clerk_table_name, transaction
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(method_name, *args, &block) ⇒ Object
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
|
# File 'lib/clerk/account.rb', line 91
def method_missing(method_name, *args, &block)
@miss_test ||= {}
if @miss_test.has_key? method_name.to_sym
super
else
@miss_test[method_name.to_sym] = true
scope_class = method_name.to_s.classify.constantize
send(method_name, *args, &block)
end
rescue => e
super
end
|
Class Method Details
.from_session_token(session_token) ⇒ Object
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
|
# File 'lib/clerk/account.rb', line 27
def self.from_session_token(session_token)
rsa_public = OpenSSL::PKey::RSA.new ENV["CLERK_SESSION_KEY"]
begin
decoded_token = ::JWT.decode (session_token), rsa_public, true, { algorithm: 'RS256' }
session_id = decoded_token[0]["id"]
session = clerk_persistence_api.get("/v1/sessions/#{session_id}").data
account = Clerk::Account.new(
id: session[:account][:id],
email_address: session[:account][:email_address],
verified_email_address: session[:account][:verified_email_address]
)
account.instance_variable_set(:@new_record, false)
account.clear_changes_information
account
rescue => e
puts "Failed to find account from session token"
puts e
return nil
end
end
|
Instance Method Details
#add_clerk_role(role_type_symbol, instance = nil) ⇒ Object
48
49
50
51
52
53
54
55
56
57
58
59
60
|
# File 'lib/clerk/account.rb', line 48
def add_clerk_role(role_type_symbol, instance = nil)
json = {}
json[:name] = role_type_symbol.to_s
json[:account_id] = self.id
if not instance.nil?
json[:scope_class] = instance.class.name
json[:scope_id] = instance.id
end
server_url = "#{Clerk.accounts_url}/roles"
HTTP.auth("Bearer #{Clerk.key}").post(server_url, :json => json)
end
|
#email(from_email_name:, email_template_token: nil, replacements: nil, subject: nil, body: nil) ⇒ Object
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
# File 'lib/clerk/account.rb', line 10
def email(
from_email_name:,
email_template_token: nil,
replacements: nil,
subject: nil,
body: nil
)
Clerk::Email.create(
account_id: self.id,
from_email_name: from_email_name,
email_template_token: email_template_token,
replacements: replacements,
subject: subject,
body: body
)
end
|
#has_permission?(permission, scope) ⇒ Boolean
70
71
72
|
# File 'lib/clerk/account.rb', line 70
def has_permission?(permission, scope)
has_role?(scope.class.roles_with_permission(permission), scope)
end
|
#has_role?(role, scope) ⇒ Boolean
62
63
64
|
# File 'lib/clerk/account.rb', line 62
def has_role?(role, scope)
roles.where(name: role, scope_class: scope.class.name, scope_id: scope.id).exists?
end
|
#permissions_for(scope) ⇒ Object
74
75
76
77
78
79
80
81
82
83
84
85
86
87
|
# File 'lib/clerk/account.rb', line 74
def permissions_for(scope)
permissions = Set.new
roles = roles_for(scope)
roles.each do |role|
role_permissions = scope.class.clerk_permissions_map[role]
unless role_permissions.nil?
permissions.merge(role_permissions)
end
end
return permissions.to_a
end
|
#roles_for(scope) ⇒ Object
66
67
68
|
# File 'lib/clerk/account.rb', line 66
def roles_for(scope)
roles.where(scope_class: scope.class.name, scope_id: scope.id).pluck(:name).map(&:to_sym)
end
|