mints 0.0.16 → 0.0.20
Sign up to get free protection for your applications and to get access to all the features.
- 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
|