login_radius 2.0.0 → 3.0.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,327 @@
1
+ module LoginRadius
2
+ module ManagementApi
3
+
4
+
5
+
6
+ # ------------------------------------------------------------- Get API --------------------------------------------------------------------#
7
+
8
+
9
+
10
+ def accountIdentitiesByEmail(email)
11
+ return getRequest("identity/v2/manage/account/identities", {:apikey=> appkey,:apisecret=>appsecret,:email=>email},"api");
12
+ rescue LoginRadiusRaas::Exception => e
13
+ false
14
+ end
15
+
16
+
17
+ def userImpersonation(uid)
18
+ return getRequest("identity/v2/manage/account/access_token", {:apikey=> appkey,:apisecret=>appsecret,:uid=>uid},"api");
19
+ rescue LoginRadiusRaas::Exception => e
20
+ false
21
+ end
22
+
23
+
24
+
25
+ def accountPassword(uid)
26
+ return getRequest("identity/v2/manage/account/"+uid+"/password", {:apikey=> appkey,:apisecret=>appsecret},"api");
27
+ rescue LoginRadiusRaas::Exception => e
28
+ false
29
+ end
30
+
31
+
32
+
33
+ def accountProfileByEmail(email)
34
+ return getRequest("identity/v2/manage/account", {:apikey=> appkey,:apisecret=>appsecret,:email=>email},"api");
35
+ rescue LoginRadiusRaas::Exception => e
36
+ false
37
+ end
38
+
39
+
40
+
41
+ def accountProfileByUserName(username)
42
+ return getRequest("identity/v2/manage/account", {:apikey=> appkey,:apisecret=>appsecret,:username=>username},"api");
43
+ rescue LoginRadiusRaas::Exception => e
44
+ false
45
+ end
46
+
47
+
48
+ def accountProfileByPhone(phone)
49
+ return getRequest("identity/v2/manage/account", {:apikey=> appkey,:apisecret=>appsecret,:phone=>phone},"api");
50
+ rescue LoginRadiusRaas::Exception => e
51
+ false
52
+ end
53
+
54
+
55
+
56
+ def accountProfileByUid(uid)
57
+ return getRequest("identity/v2/manage/account/"+uid, {:apikey=> appkey,:apisecret=>appsecret},"api");
58
+ rescue LoginRadiusRaas::Exception => e
59
+ false
60
+ end
61
+
62
+
63
+ def getContextWithRolesAndPermissions(uid)
64
+ return getRequest("identity/v2/manage/account/"+uid+"/rolecontext", {:apikey=> appkey,:apisecret=>appsecret},"api");
65
+ rescue LoginRadiusRaas::Exception => e
66
+ false
67
+ end
68
+
69
+
70
+ def getRolesList()
71
+ return getRequest("identity/v2/manage/role", {:apikey=> appkey,:apisecret=>appsecret},"api");
72
+ rescue LoginRadiusRaas::Exception => e
73
+ false
74
+ end
75
+
76
+
77
+ def getRolesByUid(uid)
78
+ return getRequest("identity/v2/manage/account/"+uid+"/role", {:apikey=> appkey,:apisecret=>appsecret},"api");
79
+ rescue LoginRadiusRaas::Exception => e
80
+ false
81
+ end
82
+
83
+
84
+
85
+ def getCustomObjectByObjectrecordIdAndUid(objectname,uid,objectrecordid)
86
+ return getRequest("identity/v2/manage/account/"+uid+"/customobject/"+objectrecordid, {:apikey=> appkey,:apisecret=>appsecret,:objectname=>objectname},"api");
87
+ rescue LoginRadiusRaas::Exception => e
88
+ false
89
+ end
90
+
91
+
92
+ def getCustomObjectByUid(objectname,uid)
93
+ return getRequest("identity/v2/manage/account/"+uid+"/customobject", {:apikey=> appkey,:apisecret=>appsecret,:objectname=>objectname},"api");
94
+ rescue LoginRadiusRaas::Exception => e
95
+ false
96
+ end
97
+
98
+
99
+
100
+ def generateSott(timedifference)
101
+ return getRequest("identity/v2/manage/account/sott", {:apikey=> appkey,:apisecret=>appsecret,:timedifference=>timedifference},"api");
102
+ rescue LoginRadiusRaas::Exception => e
103
+ false
104
+ end
105
+
106
+
107
+ def getServerTime(timedifference)
108
+ return getRequest("identity/v2/serverinfo", {:apikey=> appkey,:timedifference=>timedifference},"api");
109
+ rescue LoginRadiusRaas::Exception => e
110
+ false
111
+ end
112
+
113
+
114
+
115
+ def getRegistrationData(type,parentid,skip,limit)
116
+ return getRequest("identity/v2/manage/registrationdata/"+type, {:apikey=> appkey,:parentid=>parentid,:skip=>skip,:limit=>limit},"api");
117
+ rescue LoginRadiusRaas::Exception => e
118
+ false
119
+ end
120
+
121
+ def getRegistrationDataServer(type,parentid,skip,limit)
122
+ return getRequest("identity/v2/auth/registrationdata/"+type, {:apikey=> appkey,:apisecret=>appsecret,:parentid=>parentid,:skip=>skip,:limit=>limit},"api");
123
+ rescue LoginRadiusRaas::Exception => e
124
+ false
125
+ end
126
+
127
+
128
+ # ------------------------------------------------------------- Post API --------------------------------------------------------------------#
129
+
130
+
131
+ def accountCreate(payload)
132
+ return postRequest("identity/v2/manage/account",{:apikey=> appkey,:apisecret=>appsecret},payload,nil,"api");
133
+ rescue LoginRadiusRaas::Exception => e
134
+ false
135
+ end
136
+
137
+
138
+ def getEmailVerificationToken(payload)
139
+ return postRequest("identity/v2/manage/account/verify/token",{:apikey=> appkey,:apisecret=>appsecret},payload,nil,"api");
140
+ rescue LoginRadiusRaas::Exception => e
141
+ false
142
+ end
143
+
144
+
145
+
146
+ def getForgotPasswordToken(payload)
147
+ return postRequest("identity/v2/manage/account/forgot/token",{:apikey=> appkey,:apisecret=>appsecret},payload,nil,"api");
148
+ rescue LoginRadiusRaas::Exception => e
149
+ false
150
+ end
151
+
152
+
153
+ def rolesCreate(payload)
154
+ return postRequest("identity/v2/manage/role",{:apikey=> appkey,:apisecret=>appsecret},payload,nil,"api");
155
+ rescue LoginRadiusRaas::Exception => e
156
+ false
157
+ end
158
+
159
+
160
+ def createCustomObjectByUid(objectname,uid,payload)
161
+ return postRequest("identity/v2/manage/account/"+uid+"/customobject",{:apikey=> appkey,:apisecret=>appsecret,:objectname =>objectname },payload,nil,"api");
162
+ rescue LoginRadiusRaas::Exception => e
163
+ false
164
+ end
165
+
166
+
167
+ def addRegistrationData(payload)
168
+ return postRequest("identity/v2/manage/registrationdata",{:apikey=> appkey,:apisecret=>appsecret},payload,nil,"api");
169
+ rescue LoginRadiusRaas::Exception => e
170
+ false
171
+ end
172
+
173
+ def ValidateSecretCode(payload)
174
+ return postRequest("identity/v2/auth/registrationdata/validatecode", {:apikey=> appkey},payload,nil,"api");
175
+ rescue LoginRadiusRaas::Exception => e
176
+ false
177
+ end
178
+
179
+ # ------------------------------------------------------------- Put API --------------------------------------------------------------------#
180
+
181
+
182
+ def accountSetPasswordToken(uid,payload)
183
+ return putRequest("identity/v2/manage/account/"+uid+"/password",{:apikey=> appkey,:apisecret=>appsecret},payload,"api");
184
+ rescue LoginRadiusRaas::Exception => e
185
+ false
186
+ end
187
+
188
+
189
+ def accountUpdate(uid,payload)
190
+ return putRequest("identity/v2/manage/account/"+uid,{:apikey=> appkey,:apisecret=>appsecret},payload,"api");
191
+ rescue LoginRadiusRaas::Exception => e
192
+ false
193
+ end
194
+
195
+
196
+ def accountUpdateSecurityQuestionConfiguration(uid,payload)
197
+ return putRequest("identity/v2/manage/account/"+uid,{:apikey=> appkey,:apisecret=>appsecret},payload,"api");
198
+ rescue LoginRadiusRaas::Exception => e
199
+ false
200
+ end
201
+
202
+
203
+ def accountInvalidateVerificationEmail(uid,verificationurl,emailtemplate)
204
+ return putRequest("identity/v2/manage/account/"+uid+"/invalidateemail",{:apikey=> appkey,:apisecret=>appsecret,:verificationurl=>verificationurl,:emailtemplate=>emailtemplate},{},"api");
205
+ rescue LoginRadiusRaas::Exception => e
206
+ false
207
+ end
208
+
209
+
210
+ def accountAddPermissionsToRole(role,payload)
211
+ return putRequest("identity/v2/manage/role/"+role+"/permission",{:apikey=> appkey,:apisecret=>appsecret},payload,"api");
212
+ rescue LoginRadiusRaas::Exception => e
213
+ false
214
+ end
215
+
216
+
217
+ def roleAssignToUser(uid,payload)
218
+ return putRequest("identity/v2/manage/account/"+uid+"/role",{:apikey=> appkey,:apisecret=>appsecret},payload,"api");
219
+ rescue LoginRadiusRaas::Exception => e
220
+ false
221
+ end
222
+
223
+
224
+ def upsertContext(uid,payload)
225
+ return putRequest("identity/v2/manage/account/"+uid+"/rolecontext",{:apikey=> appkey,:apisecret=>appsecret},payload,"api");
226
+ rescue LoginRadiusRaas::Exception => e
227
+ false
228
+ end
229
+
230
+
231
+ def customObjectUpdateByUid(objectname,updatetype,uid,objectrecordid,payload)
232
+ return putRequest("identity/v2/manage/account/"+uid+"/customobject/"+objectrecordid,{:apikey=> appkey,:apisecret=>appsecret,:updatetype=> updatetype,:objectname=>objectname},payload,"api");
233
+ rescue LoginRadiusRaas::Exception => e
234
+ false
235
+ end
236
+
237
+
238
+
239
+ def resetPhoneIdVerification(uid)
240
+ return putRequest("identity/v2/manage/account/"+uid+"/invalidatephone",{:apikey=> appkey,:apisecret=>appsecret},{},"api");
241
+ rescue LoginRadiusRaas::Exception => e
242
+ false
243
+ end
244
+
245
+ def updateRegistrationData(recordid,payload)
246
+ return putRequest("identity/v2/manage/registrationdata/"+recordid,{:apikey=> appkey,:apisecret=>appsecret},payload,"api");
247
+ rescue LoginRadiusRaas::Exception => e
248
+ false
249
+ end
250
+
251
+ # ------------------------------------------------------------- Delete API --------------------------------------------------------------------#
252
+
253
+
254
+
255
+ def accountEmailDelete(uid,email)
256
+ payload = {
257
+ :email=> email
258
+ }
259
+ return deleteRequest("identity/v2/manage/account/"+uid+"/email",{:apikey=> appkey,:apisecret=>appsecret},payload);
260
+ rescue LoginRadiusRaas::Exception => e
261
+ false
262
+ end
263
+
264
+ def accountDelete(uid)
265
+ return deleteRequest("identity/v2/manage/account/"+uid,{:apikey=> appkey,:apisecret=>appsecret},{});
266
+ rescue LoginRadiusRaas::Exception => e
267
+ false
268
+ end
269
+
270
+
271
+ def accountDeleteRole(uid)
272
+ return deleteRequest("identity/v2/manage/role/"+uid,{:apikey=> appkey,:apisecret=>appsecret},{});
273
+ rescue LoginRadiusRaas::Exception => e
274
+ false
275
+ end
276
+
277
+
278
+ def roleUnassignToUser(uid,payload)
279
+ return deleteRequest("identity/v2/manage/account/"+uid+"/role",{:apikey=> appkey,:apisecret=>appsecret},payload);
280
+ rescue LoginRadiusRaas::Exception => e
281
+ false
282
+ end
283
+
284
+
285
+ def accountRemovePermission(roleName,payload)
286
+ return deleteRequest("identity/v2/manage/role/"+roleName+"/permission",{:apikey=> appkey,:apisecret=>appsecret},payload);
287
+ rescue LoginRadiusRaas::Exception => e
288
+ false
289
+ end
290
+
291
+
292
+ def deleteRoleContext(uid,rolecontextname)
293
+ return deleteRequest("identity/v2/manage/account/"+uid+"/rolecontext/"+rolecontextname,{:apikey=> appkey,:apisecret=>appsecret},{});
294
+ rescue LoginRadiusRaas::Exception => e
295
+ false
296
+ end
297
+
298
+
299
+ def deleteRoleFromContext(uid,rolecontextname,payload)
300
+ return deleteRequest("identity/v2/manage/account/"+uid+"/rolecontext/"+rolecontextname+"/role",{:apikey=> appkey,:apisecret=>appsecret},payload);
301
+ rescue LoginRadiusRaas::Exception => e
302
+ false
303
+ end
304
+
305
+
306
+ def deleteAdditionalPermissionsFromContext(uid,rolecontextname,payload)
307
+ return deleteRequest("identity/v2/manage/account/"+uid+"/rolecontext/"+rolecontextname+"/additionalpermission",{:apikey=> appkey,:apisecret=>appsecret},payload);
308
+ rescue LoginRadiusRaas::Exception => e
309
+ false
310
+ end
311
+
312
+
313
+ def deleteCustomObjectByObjectrecordId(uid,objectrecordid,objectname)
314
+ return deleteRequest("identity/v2/manage/account/"+uid+"/customobject/"+objectrecordid,{:apikey=> appkey,:apisecret=>appsecret,:objectname=>objectname},{});
315
+ rescue LoginRadiusRaas::Exception => e
316
+ false
317
+ end
318
+
319
+ def deleteRegistrationData(recordid)
320
+ return deleteRequest("identity/v2/manage/registrationdata/"+recordid,{:apikey=> appkey,:apisecret=>appsecret},{});
321
+ rescue LoginRadiusRaas::Exception => e
322
+ false
323
+ end
324
+
325
+
326
+ end
327
+ end
@@ -0,0 +1,142 @@
1
+ require 'net/http'
2
+
3
+ module LoginRadius
4
+ class RestRequest
5
+ include SocialApi
6
+ include AdvancedApi
7
+ include AuthenticationApi
8
+ include ManagementApi
9
+ include Two_FA_Api
10
+
11
+ attr_accessor :appkey, :appsecret, :ssl_verify_peer
12
+
13
+ API_V2_BASE_URL = "https://api.loginradius.com/"
14
+ API_V2_BASE_URL_CONFIG = "https://config.lrcontent.com/"
15
+ API_V2_BASE_URL_CLOUD = "https://cloud-api.loginradius.com/"
16
+
17
+ # Takes a hash of account secret, token, and connection type(net_http or em_http)
18
+ # and uses it to auth against the LoginRadius API. Then it returns the Account object. The
19
+ # async key is optional, if set to true, will use Em::HTTP instead of Net::HTTP.
20
+ #
21
+ # @param opts [Hash] Must have keys :token, :secret, :async(optional) and :ssl_verify_peer(optional)
22
+ # @return [LoginRadius::Account]
23
+ def initialize(opts = {})
24
+ self.appsecret = opts[:appsecret]
25
+ self.appkey = opts[:appkey]
26
+ self.ssl_verify_peer = opts[:ssl_verify_peer]
27
+ raise LoginRadiusRaas::Exception.new("Invalid appkey") unless guid_valid?(appkey)
28
+ raise LoginRadiusRaas::Exception.new("Invalid appsecret") unless guid_valid?(appsecret)
29
+ end
30
+
31
+ # Takes a guid and returns whether or not it is valid.
32
+ #
33
+ # @param guid [String]
34
+ # @return [Boolean]
35
+ def guid_valid?(guid)
36
+ guid.match(/^\{?[A-Z0-9]{8}-[A-Z0-9]{4}-[A-Z0-9]{4}-[A-Z0-9]{4}-[A-Z0-9]{12}\}?$/i)
37
+ end
38
+
39
+ # Generic GET call function that other submodules can use to hit the API.
40
+ #
41
+ # @param url [String] Target URL to fetch data from.
42
+ # @param params [Hash] Parameters to send
43
+ # @return data [Hash] Parsed JSON data from the call
44
+
45
+
46
+
47
+
48
+ def getRequest(url,getparams = {},baseURL)
49
+ if baseURL == "cloud"
50
+ url_obj = URI.parse(API_V2_BASE_URL_CLOUD+url)
51
+ elsif baseURL == "config"
52
+ url_obj = URI.parse(API_V2_BASE_URL_CONFIG+url)
53
+ else
54
+ url_obj = URI.parse(API_V2_BASE_URL+url)
55
+ end
56
+ url_obj.query = URI.encode_www_form(getparams)
57
+ http = Net::HTTP.new(url_obj.host, url_obj.port)
58
+ http.use_ssl = true
59
+ response = http.get(url_obj.request_uri)
60
+ begin
61
+ converted_response = JSON.parse(response.body, :symbolize_names => true)
62
+ return converted_response
63
+ rescue JSON::ParserError => e
64
+ raise LoginRadiusRaas::Exception.new("A JSON parsing error occurred because the API returned an HTML page instead of JSON. This happens mostly when you're using an expired Token. Specifics: #{e.message}")
65
+ end
66
+ end
67
+
68
+
69
+
70
+ def postRequest(url,getparams = {},postparams,sott,baseURL)
71
+ if baseURL == "cloud"
72
+ url_obj = URI.parse(API_V2_BASE_URL_CLOUD+url)
73
+ elsif baseURL == "config"
74
+ url_obj = URI.parse(API_V2_BASE_URL_CONFIG+url)
75
+ else
76
+ url_obj = URI.parse(API_V2_BASE_URL+url)
77
+ end
78
+ url_obj.query = URI.encode_www_form(getparams)
79
+ http = Net::HTTP.new(url_obj.host, url_obj.port)
80
+ http.use_ssl = true
81
+ if sott!=nil
82
+ response = http.post(url_obj.request_uri, postparams.to_json, {'Content-Type' => 'application/json', 'X-LoginRadius-Sott' => sott})
83
+ else
84
+ response = http.post(url_obj.request_uri, postparams.to_json, {'Content-Type' => 'application/json'})
85
+ end
86
+ begin
87
+ converted_response = JSON.parse(response.body, :symbolize_names => true)
88
+ return converted_response
89
+ rescue JSON::ParserError => e
90
+ raise LoginRadiusRaas::Exception.new("A JSON parsing error occurred because the API returned an HTML page instead of JSON. This happens mostly when you're using an expired Token. Specifics: #{e.message}")
91
+ end
92
+ end
93
+
94
+
95
+
96
+ def putRequest(url,getparams = {},postparams,baseURL)
97
+
98
+ if baseURL == "cloud"
99
+ url_obj = URI.parse(API_V2_BASE_URL_CLOUD+url)
100
+ elsif baseURL == "config"
101
+ url_obj = URI.parse(API_V2_BASE_URL_CONFIG+url)
102
+ else
103
+ url_obj = URI.parse(API_V2_BASE_URL+url)
104
+ end
105
+ url_obj.query = URI.encode_www_form(getparams)
106
+ http = Net::HTTP.new(url_obj.host, url_obj.port)
107
+ http.use_ssl = true
108
+ response = http.put(url_obj.request_uri, postparams.to_json, {'Content-Type' => 'application/json'})
109
+ begin
110
+ converted_response = JSON.parse(response.body, :symbolize_names => true)
111
+ return converted_response
112
+ rescue JSON::ParserError => e
113
+ raise LoginRadiusRaas::Exception.new("A JSON parsing error occurred because the API returned an HTML page instead of JSON. This happens mostly when you're using an expired Token. Specifics: #{e.message}")
114
+ end
115
+ end
116
+
117
+
118
+ def deleteRequest(url,getparams = {},postparams)
119
+ url_obj = URI.parse(API_V2_BASE_URL+url)
120
+ url_obj.query = URI.encode_www_form(getparams)
121
+ require 'uri'
122
+ require 'net/http'
123
+ url = URI("https://api.loginradius.com"+url_obj.request_uri)
124
+ http = Net::HTTP.new(url.host, url.port)
125
+ http.use_ssl = true
126
+ http.verify_mode = false
127
+ request = Net::HTTP::Delete.new(url)
128
+ request.body = postparams.to_json #"{\n \"provider\": \"xxxxxxxxxxx\",\n \"providerid\": \"xxxxxxxxxxxxxxxxxxx\"\n}"
129
+ request['content-Type'] = 'application/json'
130
+ response = http.request(request)
131
+ begin
132
+ converted_response = JSON.parse(response.read_body, :symbolize_names => true)
133
+ return converted_response
134
+ rescue JSON::ParserError => e
135
+ raise LoginRadiusRaas::Exception.new("A JSON parsing error occurred because the API returned an HTML page instead of JSON. This happens mostly when you're using an expired Token. Specifics: #{e.message}")
136
+ end
137
+ end
138
+
139
+
140
+
141
+ end
142
+ end