mints 0.0.16 → 0.0.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/client.rb +97 -38
- data/lib/contact.rb +124 -21
- data/lib/mints/controllers/admin_base_controller.rb +2 -2
- data/lib/mints/controllers/base_api_controller.rb +12 -11
- data/lib/mints/controllers/base_controller.rb +38 -9
- data/lib/mints_helper.rb +47 -0
- data/lib/pub.rb +147 -61
- data/lib/user/config/api_keys.rb +65 -0
- data/lib/user/config/appointments.rb +221 -0
- data/lib/user/config/attribute_groups.rb +77 -0
- data/lib/user/config/attributes.rb +86 -0
- data/lib/user/config/calendars.rb +89 -0
- data/lib/user/config/config.rb +65 -0
- data/lib/user/config/importers.rb +184 -0
- data/lib/user/config/public_folders.rb +108 -0
- data/lib/user/config/relationships.rb +138 -0
- data/lib/user/config/roles.rb +84 -0
- data/lib/user/config/seeds.rb +14 -0
- data/lib/user/config/system_settings.rb +53 -0
- data/lib/user/config/tags.rb +63 -0
- data/lib/user/config/taxonomies.rb +124 -0
- data/lib/user/config/teams.rb +70 -0
- data/lib/user/config/users.rb +76 -0
- data/lib/user/contacts/contacts.rb +21 -0
- data/lib/user/content/assets.rb +98 -0
- data/lib/user/content/content.rb +235 -0
- data/lib/user/content/content_instances.rb +147 -0
- data/lib/user/content/content_templates.rb +111 -0
- data/lib/user/content/conversations.rb +174 -0
- data/lib/user/content/dam.rb +88 -0
- data/lib/user/content/forms.rb +168 -0
- data/lib/user/content/message_templates.rb +162 -0
- data/lib/user/content/messages.rb +90 -0
- data/lib/user/content/pages.rb +81 -0
- data/lib/user/content/stories.rb +164 -0
- data/lib/user/content/story_templates.rb +95 -0
- data/lib/user/crm/companies.rb +111 -0
- data/lib/user/crm/contacts.rb +312 -0
- data/lib/user/crm/crm.rb +21 -0
- data/lib/user/crm/deals.rb +111 -0
- data/lib/user/crm/favorites.rb +17 -0
- data/lib/user/crm/segments.rb +132 -0
- data/lib/user/crm/users.rb +22 -0
- data/lib/user/crm/workflow_step_objects.rb +89 -0
- data/lib/user/crm/workflow_steps.rb +49 -0
- data/lib/user/crm/workflows.rb +70 -0
- data/lib/user/ecommerce/ecommerce.rb +29 -0
- data/lib/user/ecommerce/item_prices.rb +86 -0
- data/lib/user/ecommerce/locations.rb +166 -0
- data/lib/user/ecommerce/order_items_groups.rb +109 -0
- data/lib/user/ecommerce/order_statuses.rb +26 -0
- data/lib/user/ecommerce/orders.rb +258 -0
- data/lib/user/ecommerce/price_lists.rb +73 -0
- data/lib/user/ecommerce/product_templates.rb +104 -0
- data/lib/user/ecommerce/product_variations.rb +129 -0
- data/lib/user/ecommerce/products.rb +169 -0
- data/lib/user/ecommerce/skus.rb +88 -0
- data/lib/user/ecommerce/taxes.rb +82 -0
- data/lib/user/ecommerce/variant_options.rb +69 -0
- data/lib/user/ecommerce/variant_values.rb +72 -0
- data/lib/user/helpers/helpers.rb +113 -0
- data/lib/user/helpers/object_activities.rb +83 -0
- data/lib/user/helpers/object_folders.rb +82 -0
- data/lib/user/helpers/user_folders.rb +83 -0
- data/lib/user/marketing/marketing.rb +120 -0
- data/lib/user/profile/profile.rb +111 -0
- data/lib/user.rb +24 -368
- metadata +63 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 805f9ad3f355a55e73dfeea6ace38749e32fdb5eb8427f003bd520fcd04204e6
|
4
|
+
data.tar.gz: b5aeb908efaf757a6bb1acb32c57a0330cc597549acdc9b539a048aacf1e3211
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1d98cb6dd69f6e9e1e56f67ad1a352e865f8b71fea0ce1c4d207a78959ff3a28cdbda7aed3058a0b57f3d26ab9bff459de1cc7256ebd2268046c166e2d9afa22
|
7
|
+
data.tar.gz: 6bef5686332e40cf0c838bb0a7a32db247841864c3ac79e31f5eb0bfd934d13abd2e4061be0fa006f74f7b3ac2302ee613401958789da3b99d79492329b467a6
|
data/lib/client.rb
CHANGED
@@ -11,16 +11,20 @@ module Mints
|
|
11
11
|
attr_accessor :session_token
|
12
12
|
attr_accessor :contact_token_id
|
13
13
|
|
14
|
-
def initialize(host, api_key, scope = nil, session_token = nil, contact_token_id = nil, debug = false)
|
14
|
+
def initialize(host, api_key, scope = nil, session_token = nil, contact_token_id = nil, visit_id = nil, debug = false)
|
15
15
|
@host = host
|
16
16
|
@api_key = api_key
|
17
17
|
@session_token = session_token
|
18
18
|
@contact_token_id = contact_token_id
|
19
|
+
@visit_id = visit_id
|
19
20
|
@debug = debug
|
20
21
|
self.set_scope(scope)
|
21
22
|
end
|
22
23
|
|
23
|
-
def raw(action, url, options = nil, data = nil, base_url = nil)
|
24
|
+
def raw(action, url, options = nil, data = nil, base_url = nil, compatibility_options = {}, only_tracking = false)
|
25
|
+
if compatibility_options === nil
|
26
|
+
compatibility_options = {}
|
27
|
+
end
|
24
28
|
base_url = @base_url if !base_url
|
25
29
|
uri = ""
|
26
30
|
if (options && options.class == Hash)
|
@@ -51,8 +55,18 @@ module Mints
|
|
51
55
|
if @redis_server.get(full_url)
|
52
56
|
response = @redis_server.get(full_url)
|
53
57
|
result_from_cache = true
|
54
|
-
|
55
|
-
|
58
|
+
|
59
|
+
headers = nil
|
60
|
+
if only_tracking
|
61
|
+
headers = {"Only-Tracking" => "true"}
|
62
|
+
end
|
63
|
+
#when is already in redis notify to California to register the object usage
|
64
|
+
cali_response = self.send("#{@scope}_#{action}", "#{full_url}", headers, compatibility_options)
|
65
|
+
if @debug
|
66
|
+
puts "CALI RESPONSE: #{cali_response}"
|
67
|
+
end
|
68
|
+
else
|
69
|
+
response = self.send("#{@scope}_#{action}", "#{full_url}", nil, compatibility_options)
|
56
70
|
@redis_server.setex(full_url,time,response)
|
57
71
|
end
|
58
72
|
break
|
@@ -63,15 +77,18 @@ module Mints
|
|
63
77
|
end
|
64
78
|
|
65
79
|
if !url_need_cache
|
66
|
-
response = self.send("#{@scope}_#{action}", "#{full_url}")
|
80
|
+
response = self.send("#{@scope}_#{action}", "#{full_url}", nil, compatibility_options)
|
67
81
|
end
|
68
82
|
|
69
83
|
elsif action === 'create' or action === 'post'
|
70
84
|
action = 'post'
|
71
|
-
response = self.send("#{@scope}_#{action}", "#{full_url}", data)
|
85
|
+
response = self.send("#{@scope}_#{action}", "#{full_url}", data, compatibility_options)
|
72
86
|
elsif action === 'put' or action === 'patch' or action ==='update'
|
73
87
|
action = 'put'
|
74
|
-
response = self.send("#{@scope}_#{action}", "#{full_url}", data)
|
88
|
+
response = self.send("#{@scope}_#{action}", "#{full_url}", data, compatibility_options)
|
89
|
+
elsif action === 'delete' or action === 'destroy'
|
90
|
+
action = 'delete'
|
91
|
+
response = self.send("#{@scope}_#{action}", "#{full_url}", data, compatibility_options)
|
75
92
|
end
|
76
93
|
if result_from_cache
|
77
94
|
return parsed_response = JSON.parse(response)
|
@@ -85,7 +102,6 @@ module Mints
|
|
85
102
|
end
|
86
103
|
|
87
104
|
def method_missing(name, *args, &block)
|
88
|
-
puts name
|
89
105
|
name.to_s.include?("__") ? separator = "__" : separator = "_"
|
90
106
|
# split the name to identify their elements
|
91
107
|
name_spplited = name.to_s.split(separator)
|
@@ -93,7 +109,7 @@ module Mints
|
|
93
109
|
name_len = name_spplited.size
|
94
110
|
# the action always be the first element
|
95
111
|
action = name_spplited.first
|
96
|
-
raise 'NoActionError' unless ['get', 'create', 'post', 'update', 'put'].include?(action)
|
112
|
+
raise 'NoActionError' unless ['get', 'create', 'post', 'update', 'put', 'delete', 'destroy'].include?(action)
|
97
113
|
# the object always be the last element
|
98
114
|
object = separator == "__" ? name_spplited.last.gsub("_","-") : name_spplited.last
|
99
115
|
# get intermediate url elements
|
@@ -121,7 +137,7 @@ module Mints
|
|
121
137
|
uri.query_values = args[1]
|
122
138
|
end
|
123
139
|
url = self.get_url(route, object, uri, slug)
|
124
|
-
response = self.send("#{@scope}_#{action}", url)
|
140
|
+
response = self.send("#{@scope}_#{action}", url, nil, compatibility_options)
|
125
141
|
elsif action == "post" or action == "create"
|
126
142
|
if args[1].class == Hash
|
127
143
|
uri.query_values = args[1]
|
@@ -129,7 +145,7 @@ module Mints
|
|
129
145
|
url = self.get_url(route, object, uri, slug)
|
130
146
|
action = 'post'
|
131
147
|
data = args[0]
|
132
|
-
response = self.send("#{@scope}_#{action}", url, {data: data})
|
148
|
+
response = self.send("#{@scope}_#{action}", url, {data: data}, compatibility_options)
|
133
149
|
elsif action == "put" or action == "update"
|
134
150
|
if args.first.class == String or Integer
|
135
151
|
slug = args.first
|
@@ -139,7 +155,7 @@ module Mints
|
|
139
155
|
action = 'put'
|
140
156
|
id = args[0]
|
141
157
|
data = args[1]
|
142
|
-
response = self.send("#{@scope}_#{action}", "#{url}", {data: data})
|
158
|
+
response = self.send("#{@scope}_#{action}", "#{url}", {data: data}, compatibility_options)
|
143
159
|
end
|
144
160
|
|
145
161
|
if response.response.code == "404"
|
@@ -188,6 +204,7 @@ module Mints
|
|
188
204
|
puts url
|
189
205
|
puts "Headers:"
|
190
206
|
puts headers
|
207
|
+
puts "Method: get"
|
191
208
|
end
|
192
209
|
return headers ? HTTParty.get(url, :headers => headers) : HTTParty.get(url)
|
193
210
|
end
|
@@ -201,6 +218,7 @@ module Mints
|
|
201
218
|
puts headers
|
202
219
|
puts "Data:"
|
203
220
|
puts data
|
221
|
+
puts "Method: post"
|
204
222
|
end
|
205
223
|
return headers ? HTTParty.post(url, :headers=> headers, :body => data) : HTTParty.post(url, :body => data)
|
206
224
|
end
|
@@ -214,78 +232,119 @@ module Mints
|
|
214
232
|
puts headers
|
215
233
|
puts "Data:"
|
216
234
|
puts data
|
235
|
+
puts "Method: put"
|
217
236
|
end
|
218
237
|
return headers ? HTTParty.put(url, :headers=> headers, :body => data) : HTTParty.put(url, :body => data)
|
219
238
|
end
|
220
239
|
|
240
|
+
# Simple HTTP DELETE
|
241
|
+
def http_delete(url, headers = nil, data = nil)
|
242
|
+
if @debug
|
243
|
+
puts "Url:"
|
244
|
+
puts url
|
245
|
+
puts "Headers:"
|
246
|
+
puts headers
|
247
|
+
puts "Data:"
|
248
|
+
puts data
|
249
|
+
puts "Method: delete"
|
250
|
+
end
|
251
|
+
return headers ? HTTParty.delete(url, :headers=> headers, :body => data) : HTTParty.delete(url, :body => data)
|
252
|
+
end
|
253
|
+
|
221
254
|
# Start contact context
|
222
|
-
def contact_get(url)
|
223
|
-
|
255
|
+
def contact_get(url, headers = nil, compatibility_options)
|
256
|
+
h = {
|
224
257
|
"ApiKey" => @api_key,
|
225
258
|
"Accept" => "application/json",
|
226
259
|
"ContactToken" => @contact_token_id
|
227
260
|
}
|
228
|
-
|
229
|
-
|
261
|
+
h["Content-Type"] = "application/json" unless compatibility_options['no_content_type']
|
262
|
+
h["Authorization"] = "Bearer #{@session_token}" if @session_token
|
263
|
+
if headers
|
264
|
+
headers.each do |k,v|
|
265
|
+
h[k] = v
|
266
|
+
end
|
267
|
+
end
|
268
|
+
return self.http_get(url, h)
|
230
269
|
end
|
231
270
|
|
232
|
-
def contact_post(url, data)
|
271
|
+
def contact_post(url, data, compatibility_options)
|
233
272
|
headers = {
|
234
273
|
"ApiKey" => @api_key,
|
235
274
|
"Accept" => "application/json",
|
236
275
|
"ContactToken" => @contact_token_id
|
237
276
|
}
|
277
|
+
headers["Content-Type"] = "application/json" unless compatibility_options['no_content_type']
|
238
278
|
headers["Authorization"] = "Bearer #{@session_token}" if @session_token
|
239
279
|
return self.http_post(url, headers, data)
|
240
280
|
end
|
241
281
|
|
242
|
-
def contact_put(url, data)
|
282
|
+
def contact_put(url, data, compatibility_options)
|
243
283
|
headers = {
|
244
284
|
"ApiKey" => @api_key,
|
245
285
|
"Accept" => "application/json",
|
246
286
|
"ContactToken" => @contact_token_id
|
247
287
|
}
|
288
|
+
headers["Content-Type"] = "application/json" unless compatibility_options['no_content_type']
|
248
289
|
headers["Authorization"] = "Bearer #{@session_token}" if @session_token
|
249
|
-
return self.
|
290
|
+
return self.http_put(url, headers, data)
|
250
291
|
end
|
251
292
|
|
252
293
|
# Start User context
|
253
|
-
def user_get(url)
|
254
|
-
|
255
|
-
"
|
256
|
-
"
|
294
|
+
def user_get(url, headers = nil, compatibility_options)
|
295
|
+
h = {
|
296
|
+
"Accept" => "application/json",
|
297
|
+
"ApiKey" => @api_key
|
257
298
|
}
|
258
|
-
|
259
|
-
|
299
|
+
h["Content-Type"] = "application/json" unless compatibility_options['no_content_type']
|
300
|
+
h["Authorization"] = "Bearer #{@session_token}" if @session_token
|
301
|
+
if headers
|
302
|
+
headers.each do |k,v|
|
303
|
+
h[k] = v
|
304
|
+
end
|
305
|
+
end
|
306
|
+
return self.http_get(url, h)
|
260
307
|
end
|
261
308
|
|
262
|
-
def user_post(url, data)
|
309
|
+
def user_post(url, data, compatibility_options)
|
263
310
|
headers = {
|
264
|
-
"
|
265
|
-
"
|
311
|
+
"Accept" => "application/json",
|
312
|
+
"ApiKey" => @api_key
|
266
313
|
}
|
314
|
+
headers["Content-Type"] = "application/json" unless compatibility_options['no_content_type']
|
267
315
|
headers["Authorization"] = "Bearer #{@session_token}" if @session_token
|
268
316
|
return self.http_post(url, headers, data)
|
269
317
|
end
|
270
318
|
|
271
|
-
def user_put(url, data)
|
319
|
+
def user_put(url, data, compatibility_options)
|
272
320
|
headers = {
|
273
|
-
"ApiKey" => @api_key,
|
274
321
|
"Accept" => "application/json",
|
275
|
-
"
|
322
|
+
"ApiKey" => @api_key
|
276
323
|
}
|
324
|
+
headers["Content-Type"] = "application/json" unless compatibility_options['no_content_type']
|
277
325
|
headers["Authorization"] = "Bearer #{@session_token}" if @session_token
|
278
326
|
return self.http_put(url, headers, data)
|
279
327
|
end
|
328
|
+
|
329
|
+
def user_delete(url, data, compatibility_options)
|
330
|
+
headers = {
|
331
|
+
"Accept" => "application/json",
|
332
|
+
"ApiKey" => @api_key
|
333
|
+
}
|
334
|
+
headers["Content-Type"] = "application/json" unless compatibility_options['no_content_type']
|
335
|
+
headers["Authorization"] = "Bearer #{@session_token}" if @session_token
|
336
|
+
return self.http_delete(url, headers, data)
|
337
|
+
end
|
280
338
|
# End User Context
|
281
339
|
|
282
|
-
def public_get(url, headers = nil)
|
340
|
+
def public_get(url, headers = nil, compatibility_options)
|
283
341
|
h = {
|
284
342
|
"Accept" => "application/json",
|
285
|
-
"Content-Type" => "application/json",
|
286
343
|
"ApiKey" => @api_key
|
287
344
|
}
|
345
|
+
h["Content-Type"] = "application/json" unless compatibility_options['no_content_type']
|
288
346
|
h["ContactToken"] = @contact_token_id if @contact_token_id
|
347
|
+
h["Visit-Id"] = @visit_id if @visit_id
|
289
348
|
if headers
|
290
349
|
headers.each do |k,v|
|
291
350
|
h[k] = v
|
@@ -294,12 +353,12 @@ module Mints
|
|
294
353
|
self.http_get(url, h)
|
295
354
|
end
|
296
355
|
|
297
|
-
def public_post(url, headers = nil, data)
|
356
|
+
def public_post(url, headers = nil, data, compatibility_options)
|
298
357
|
h = {
|
299
358
|
"Accept" => "application/json",
|
300
|
-
"Content-Type" => "application/json",
|
301
359
|
"ApiKey" => @api_key
|
302
360
|
}
|
361
|
+
h["Content-Type"] = "application/json" unless compatibility_options['no_content_type']
|
303
362
|
h["ContactToken"] = @session_token if @session_token
|
304
363
|
if headers
|
305
364
|
headers.each do |k,v|
|
@@ -309,12 +368,12 @@ module Mints
|
|
309
368
|
self.http_post(url, h, data)
|
310
369
|
end
|
311
370
|
|
312
|
-
def public_put(url, headers = nil, data)
|
371
|
+
def public_put(url, headers = nil, data, compatibility_options)
|
313
372
|
h = {
|
314
|
-
"Accept" => "application/json",
|
315
|
-
"Content-Type" => "application/json",
|
373
|
+
"Accept" => "application/json",
|
316
374
|
"ApiKey" => @api_key
|
317
375
|
}
|
376
|
+
h["Content-Type"] = "application/json" unless compatibility_options['no_content_type']
|
318
377
|
h["ContactToken"] = @contact_token_id if @contact_token_id
|
319
378
|
if headers
|
320
379
|
headers.each do |k,v|
|
data/lib/contact.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
require_relative "./client.rb"
|
2
|
+
require_relative "./mints_helper.rb"
|
2
3
|
include ActionController::Cookies
|
3
4
|
module Mints
|
4
5
|
class Contact
|
@@ -7,20 +8,33 @@ module Mints
|
|
7
8
|
# === Initialize.
|
8
9
|
# Class constructor
|
9
10
|
#
|
11
|
+
# ==== Parameters
|
12
|
+
# host:: (String) -- It's the visitor IP.
|
13
|
+
# api_key:: (String) -- Mints instance api key.
|
14
|
+
# contact_token_id:: (Integer) -- Cookie 'mints_contact_id' value (mints_contact_token).
|
15
|
+
#
|
16
|
+
# ==== Return
|
17
|
+
# Returns a Contact object
|
10
18
|
def initialize(host, api_key, session_token = nil, contact_token_id = nil, debug = false)
|
11
|
-
@client = Mints::Client.new(host, api_key, "contact", session_token, contact_token_id, debug)
|
19
|
+
@client = Mints::Client.new(host, api_key, "contact", session_token, contact_token_id, nil, debug)
|
12
20
|
end
|
13
21
|
|
14
22
|
##
|
15
23
|
# === Login.
|
16
|
-
# Starts a contact session
|
24
|
+
# Starts a contact session.
|
25
|
+
#
|
26
|
+
# ==== Parameters:
|
27
|
+
# email:: (String) -- The email that will be logged.
|
28
|
+
# password:: (String) -- The password of the email.
|
17
29
|
#
|
30
|
+
# ==== Example
|
31
|
+
# @mints_contact.login("email@example.com", "password")
|
18
32
|
def login(email, password)
|
19
33
|
data = {
|
20
34
|
email: email,
|
21
35
|
password: password
|
22
36
|
}
|
23
|
-
response = @client.raw("post", "/contacts/login", nil, {data: data})
|
37
|
+
response = @client.raw("post", "/contacts/login", nil, {data: data}.to_json)
|
24
38
|
if response.key? "session_token"
|
25
39
|
@client.session_token = response["session_token"]
|
26
40
|
end
|
@@ -29,8 +43,15 @@ module Mints
|
|
29
43
|
|
30
44
|
##
|
31
45
|
# === Magic Link Login.
|
32
|
-
# Starts a contact session
|
46
|
+
# Starts a contact session with a token received in the contact email. The token will be received by send_magic_link method.
|
47
|
+
#
|
48
|
+
# ==== Parameters:
|
49
|
+
# token:: (String) -- The email token that will be used to log in.
|
33
50
|
#
|
51
|
+
# ==== Example
|
52
|
+
# @mints_contact.magic_link_login(
|
53
|
+
# "d8618c6d-a165-41cb-b3ec-d053cbf30059:zm54HtRdfHED8dpILZpjyqjPIceiaXNLfOklqM92fveBS0nDtyPYBlI4CPlPe3zq"
|
54
|
+
# )
|
34
55
|
def magic_link_login(token)
|
35
56
|
response = @client.raw("get", "/contacts/magic-link-login/#{token}", nil, '/api/v1')
|
36
57
|
if response.key? "session_token"
|
@@ -40,7 +61,21 @@ module Mints
|
|
40
61
|
end
|
41
62
|
|
42
63
|
##
|
43
|
-
# === Send
|
64
|
+
# === Send Magic Link
|
65
|
+
# Send magic link to contact by email. That magic link will be used in magic_link_login method.
|
66
|
+
#
|
67
|
+
# ==== Parameters:
|
68
|
+
# email:: (String) -- Contact's email.
|
69
|
+
# template_slug:: (String) -- Email template's slug to be used in the email.
|
70
|
+
# redirectUrl:: (String) -- Url to be redirected in the implemented page.
|
71
|
+
# lifeTime:: (Integer) -- Maximum time of use in minutes.
|
72
|
+
# maxVisits:: (Integer) -- The maximum number of uses of a token.
|
73
|
+
#
|
74
|
+
# ==== First Example
|
75
|
+
# @mints_contact.send_magic_link("email@example.com", "template_slug")
|
76
|
+
#
|
77
|
+
# ==== Second Example
|
78
|
+
# @mints_contact.send_magic_link("email@example.com", "template_slug", "", 1440, 3)
|
44
79
|
def send_magic_link(email, template_slug, redirectUrl = '', lifeTime = 1440, maxVisits = nil)
|
45
80
|
data = {
|
46
81
|
email: email,
|
@@ -49,14 +84,17 @@ module Mints
|
|
49
84
|
redirectUrl: redirectUrl,
|
50
85
|
templateId: template_slug
|
51
86
|
}
|
52
|
-
response = @client.raw("post", "/contacts/magic-link", nil, { data: data }, '/api/v1')
|
87
|
+
response = @client.raw("post", "/contacts/magic-link", nil, { data: data }.to_json, '/api/v1')
|
53
88
|
return response
|
54
89
|
end
|
55
90
|
|
56
91
|
##
|
57
92
|
# === Logout.
|
58
|
-
# Ends a contact session
|
93
|
+
# Ends a contact session previously logged.
|
59
94
|
#
|
95
|
+
# ==== Example
|
96
|
+
# @mints_contact.login("email@example.com", "password")
|
97
|
+
# @mints_contact.logout
|
60
98
|
def logout
|
61
99
|
response = @client.raw("post", "/contacts/logout") if session_token?
|
62
100
|
if response["success"]
|
@@ -67,62 +105,127 @@ module Mints
|
|
67
105
|
|
68
106
|
##
|
69
107
|
# === Change Password.
|
70
|
-
# Change password
|
108
|
+
# Change password without email. To change the password a contact must be logged.
|
109
|
+
#
|
110
|
+
# ==== Parameters:
|
111
|
+
# data:: (Hash) -- A new password allocated in a data key.
|
71
112
|
#
|
113
|
+
# ==== Example
|
114
|
+
# @mints_contact.login("email@example.com", "password")
|
115
|
+
# data = { "password": "123456" }
|
116
|
+
# @data = @mints_contact.change_password(data)
|
72
117
|
def change_password(data)
|
73
|
-
return @client.raw("post", "/contacts/change-password", nil, data)
|
118
|
+
return @client.raw("post", "/contacts/change-password", nil, data_transform(data))
|
74
119
|
end
|
75
120
|
|
76
121
|
##
|
77
122
|
# === Recover Password.
|
78
|
-
#
|
123
|
+
# Send a email that contains a token to a contact. That token will be used in reset_password to establish a new password.
|
79
124
|
#
|
125
|
+
# ==== Parameters:
|
126
|
+
# data:: (Hash) -- It's a data key where will be hosted the destination email.
|
127
|
+
#
|
128
|
+
# ==== Example
|
129
|
+
# data = { "email": "email@example.com" }
|
130
|
+
# @mints_contact.recover_password(data)
|
80
131
|
def recover_password(data)
|
81
|
-
return @client.raw("post", "/contacts/recover-password", nil, data)
|
132
|
+
return @client.raw("post", "/contacts/recover-password", nil, data_transform(data))
|
82
133
|
end
|
83
134
|
|
84
135
|
##
|
85
136
|
# === Reset Password.
|
86
|
-
# Reset password
|
137
|
+
# Reset password using a token. The token is obtained by recover_password method.
|
138
|
+
#
|
139
|
+
# ==== Parameters:
|
140
|
+
# data:: (Hash) -- It's a set of data which contains all the information to reset a contact password.
|
87
141
|
#
|
142
|
+
# ==== Example
|
143
|
+
# data = {
|
144
|
+
# "email": "email@example.com",
|
145
|
+
# "password": "password",
|
146
|
+
# "password_confirmation": "password",
|
147
|
+
# "token": "644aa3aa0831d782cc42e42b11aedea9a2234389af4f429a8d96651295ecfa09"
|
148
|
+
# }
|
149
|
+
# @mints_contact.reset_password(data)
|
88
150
|
def reset_password(data)
|
89
|
-
return @client.raw("post", "/contacts/reset-password", nil, data)
|
151
|
+
return @client.raw("post", "/contacts/reset-password", nil, data_transform(data))
|
90
152
|
end
|
91
153
|
|
92
154
|
##
|
93
155
|
# === OAuth Login.
|
94
|
-
# Login a contact using oauth
|
95
|
-
#
|
156
|
+
# Login a contact using oauth.
|
96
157
|
def oauth_login(data)
|
97
158
|
return @client.raw("post", "/contacts/oauth-login", nil, data)
|
98
159
|
end
|
99
160
|
|
100
161
|
##
|
101
162
|
# === Me.
|
102
|
-
# Get contact logged info
|
163
|
+
# Get contact logged info.
|
164
|
+
#
|
165
|
+
# ==== First Example
|
166
|
+
# @mints_contact.me
|
103
167
|
#
|
104
|
-
|
105
|
-
|
168
|
+
# ==== Second Example
|
169
|
+
# options = {
|
170
|
+
# "attributes": true,
|
171
|
+
# "taxonomies": true
|
172
|
+
# }
|
173
|
+
# @data = @mints_contact.me(options)
|
174
|
+
def me(options = nil)
|
175
|
+
return @client.raw("get", "/contacts/me", options)
|
106
176
|
end
|
107
177
|
|
108
178
|
##
|
109
179
|
# === Status.
|
110
|
-
# Get contact logged status
|
180
|
+
# Get contact logged status.
|
111
181
|
#
|
182
|
+
# ==== Example
|
183
|
+
# @mints_contact.status
|
112
184
|
def status
|
113
185
|
return @client.raw("get", "/contacts/status")
|
114
186
|
end
|
115
187
|
|
116
188
|
##
|
117
189
|
# === Update.
|
118
|
-
# Update logged contact attributes
|
190
|
+
# Update logged contact attributes.
|
191
|
+
#
|
192
|
+
# ==== Parameters:
|
193
|
+
# data:: (Hash) -- It's the data to update with a session active.
|
119
194
|
#
|
195
|
+
# ==== Example
|
196
|
+
# @mints_contact.login("email@example.com", "password")
|
197
|
+
# data = {
|
198
|
+
# "given_name": "Given Name",
|
199
|
+
# "last_name": "Last Name"
|
200
|
+
# }
|
201
|
+
# @mints_contact.update(data)
|
120
202
|
def update(data)
|
121
|
-
return @client.raw("put", "/contacts/update", nil, data)
|
203
|
+
return @client.raw("put", "/contacts/update", nil, data_transform(data))
|
204
|
+
end
|
205
|
+
|
206
|
+
##
|
207
|
+
# === Register.
|
208
|
+
# Register a contact.
|
209
|
+
#
|
210
|
+
# ==== Parameters:
|
211
|
+
# data:: (Hash) -- It's the register data.
|
212
|
+
#
|
213
|
+
# ==== Example
|
214
|
+
# data = {
|
215
|
+
# "email": "email@example.com",
|
216
|
+
# "given_name": "Given Name",
|
217
|
+
# "last_name": "Last Name",
|
218
|
+
# "password": "password"
|
219
|
+
# }
|
220
|
+
# @mints_contact.register(data);
|
221
|
+
def register(data)
|
222
|
+
return @client.raw("post", "/contacts/register", nil, data_transform(data))
|
122
223
|
end
|
123
224
|
|
124
225
|
private
|
125
226
|
|
227
|
+
include MintsHelper
|
228
|
+
|
126
229
|
def session_token?
|
127
230
|
if @client.session_token
|
128
231
|
return true
|
@@ -22,7 +22,7 @@ module Mints
|
|
22
22
|
# Get session token from response
|
23
23
|
session_token = response['api_token']
|
24
24
|
# Set a permanent cookie with the session token
|
25
|
-
cookies
|
25
|
+
cookies[:mints_user_session_token] = { value: session_token, secure: true, httponly: true, expires: 1.day }
|
26
26
|
end
|
27
27
|
|
28
28
|
##
|
@@ -33,7 +33,7 @@ module Mints
|
|
33
33
|
response = @mints_user.magic_link_login(hash)
|
34
34
|
if response['data'] && response['data']['redirect_url']
|
35
35
|
# Set a cookie with the session token
|
36
|
-
cookies[:mints_user_session_token] = { value: response['data']['api_token'], expires: 1.day }
|
36
|
+
cookies[:mints_user_session_token] = { value: response['data']['api_token'], expires: 1.day, secure: true, httponly: true }
|
37
37
|
redirect_to response['data']['redirect_url']
|
38
38
|
else
|
39
39
|
redirect_to '/'
|
@@ -10,26 +10,26 @@ module Mints
|
|
10
10
|
response = @mints_contact.login(email, password)
|
11
11
|
# Get session token from response
|
12
12
|
session_token = response['session_token']
|
13
|
-
id_token = response['contact']['id_token']
|
13
|
+
id_token = response['contact']['contact_token'] ? response['contact']['contact_token'] : response['contact']['id_token']
|
14
14
|
# Set a permanent cookie with the session token
|
15
|
-
cookies.permanent[:mints_contact_session_token] = session_token
|
16
|
-
cookies.permanent[:mints_contact_id] = id_token
|
15
|
+
cookies.permanent[:mints_contact_session_token] = { value: session_token, secure: true, httponly: true }
|
16
|
+
cookies.permanent[:mints_contact_id] = { value: id_token, secure: true, httponly: true }
|
17
17
|
@contact_token = id_token
|
18
18
|
end
|
19
19
|
|
20
20
|
##
|
21
|
-
# === Mints
|
22
|
-
# Starts a
|
21
|
+
# === Mints contact Login.
|
22
|
+
# Starts a contact session in mints.cloud and set a session cookie
|
23
23
|
def mints_contact_magic_link_login(hash)
|
24
24
|
# Login in mints
|
25
25
|
response = @mints_contact.magic_link_login(hash)
|
26
26
|
if response['data']
|
27
27
|
# Get session token from response
|
28
28
|
session_token = response['data']['session_token']
|
29
|
-
id_token = response['data']['contact']['id_token']
|
29
|
+
id_token = response['data']['contact']['contact_token'] ? response['data']['contact']['contact_token'] : response['data']['contact']['id_token']
|
30
30
|
# Set a permanent cookie with the session token
|
31
|
-
cookies.permanent[:mints_contact_session_token] = session_token
|
32
|
-
cookies.permanent[:mints_contact_id] = id_token
|
31
|
+
cookies.permanent[:mints_contact_session_token] = { value: session_token, secure: true, httponly: true }
|
32
|
+
cookies.permanent[:mints_contact_id] = { value: id_token, secure: true, httponly: true }
|
33
33
|
@contact_token = id_token
|
34
34
|
redirect_to response['data']['redirect_url'] ? response['data']['redirect_url'] : '/'
|
35
35
|
else
|
@@ -58,7 +58,7 @@ module Mints
|
|
58
58
|
# Get session token from response
|
59
59
|
session_token = response['api_token']
|
60
60
|
# Set a permanent cookie with the session token
|
61
|
-
cookies
|
61
|
+
cookies[:mints_user_session_token] = { value: session_token, secure: true, httponly: true, expires: 1.day }
|
62
62
|
end
|
63
63
|
|
64
64
|
##
|
@@ -69,7 +69,7 @@ module Mints
|
|
69
69
|
response = @mints_user.magic_link_login(hash)
|
70
70
|
if response['data']
|
71
71
|
# Set a cookie with the session token
|
72
|
-
cookies[:mints_user_session_token] = { value: response['data']['api_token'], expires: 1.day }
|
72
|
+
cookies[:mints_user_session_token] = { value: response['data']['api_token'], secure: true, httponly: true, expires: 1.day }
|
73
73
|
redirect_to response['data']['redirect_url'] ? response['data']['redirect_url'] : '/'
|
74
74
|
else
|
75
75
|
redirect_to '/'
|
@@ -116,7 +116,8 @@ module Mints
|
|
116
116
|
def set_mints_pub_client
|
117
117
|
|
118
118
|
# Initialize mints pub client, credentials taken from mints_config.yml.erb file
|
119
|
-
@
|
119
|
+
@visit_id = cookies[:mints_visit_id] ? cookies[:mints_visit_id] : nil
|
120
|
+
@mints_pub = Mints::Pub.new(@host, @api_key, nil, @visit_id, @debug)
|
120
121
|
# Set contact token from cookie
|
121
122
|
@mints_pub.client.session_token = @contact_token
|
122
123
|
end
|