warrant 0.1.0 → 0.1.1
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/warrant/models/permission.rb +11 -0
- data/lib/warrant/models/role.rb +11 -0
- data/lib/warrant/models/tenant.rb +11 -0
- data/lib/warrant/models/user.rb +7 -5
- data/lib/warrant/version.rb +1 -1
- data/lib/warrant/warrant_client.rb +160 -6
- data/lib/warrant.rb +3 -0
- metadata +5 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5243205fa7c1a3a21d681d66ab0071c2b71c95fb018a9812b7844919611c8b31
|
4
|
+
data.tar.gz: f36c01ea86c7cb028b142fc30eae84824e6ef861915d3f71038052b704cedb8e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4675af03e0ca8a149e5b01c0a58a6e7f72064597c167a4a6ddef76e98975d321dcb0efe1feafe85df558207f070cbae2969dd3c84bafeaad35a99ad97aa9c31c
|
7
|
+
data.tar.gz: 188ddcc865f033900b0f1b11e4ba49d11ce5a6ff01a0cc67387a07e0600e048ccbbbe75c0f6297a9b4eeefb9e759f71c3104d4fe5a8d2221610b649b56fad630
|
data/lib/warrant/models/user.rb
CHANGED
@@ -1,11 +1,13 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
module Warrant
|
4
|
-
|
5
|
-
|
4
|
+
class User
|
5
|
+
attr_reader :tenant_id, :user_id, :email
|
6
6
|
|
7
|
-
|
8
|
-
|
7
|
+
def initialize(tenant_id, user_id, email)
|
8
|
+
@tenant_id = tenant_id
|
9
|
+
@user_id = user_id
|
10
|
+
@email = email
|
11
|
+
end
|
9
12
|
end
|
10
|
-
end
|
11
13
|
end
|
data/lib/warrant/version.rb
CHANGED
@@ -3,18 +3,91 @@
|
|
3
3
|
module Warrant
|
4
4
|
class WarrantClient
|
5
5
|
class << self
|
6
|
-
def
|
6
|
+
def create_tenant(tenant_id = '')
|
7
|
+
uri = URI.parse("#{Warrant.config.api_base}/v1/tenants")
|
8
|
+
params = {
|
9
|
+
tenantId: tenant_id
|
10
|
+
}
|
11
|
+
res = post(uri, params)
|
12
|
+
res_json = JSON.parse(res.body)
|
13
|
+
|
14
|
+
case res
|
15
|
+
when Net::HTTPSuccess
|
16
|
+
Tenant.new(res_json['tenantId'])
|
17
|
+
else
|
18
|
+
res_json
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
def create_user(email, user_id = '', tenant_id = '')
|
7
23
|
uri = URI.parse("#{Warrant.config.api_base}/v1/users")
|
8
24
|
params = {
|
25
|
+
tenantId: tenant_id,
|
9
26
|
userId: user_id,
|
10
|
-
|
27
|
+
email: email
|
28
|
+
}
|
29
|
+
res = post(uri, params)
|
30
|
+
res_json = JSON.parse(res.body)
|
31
|
+
|
32
|
+
case res
|
33
|
+
when Net::HTTPSuccess
|
34
|
+
User.new(res_json['tenantId'], res_json['userId'], res_json['email'])
|
35
|
+
else
|
36
|
+
res_json
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
def create_role(role_id)
|
41
|
+
uri = URI.parse("#{Warrant.config.api_base}/v1/roles")
|
42
|
+
params = {
|
43
|
+
roleId: role_id
|
44
|
+
}
|
45
|
+
res = post(uri, params)
|
46
|
+
res_json = JSON.parse(res.body)
|
47
|
+
|
48
|
+
case res
|
49
|
+
when Net::HTTPSuccess
|
50
|
+
Role.new(res_json['roleId'])
|
51
|
+
else
|
52
|
+
res_json
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
def delete_role(role_id)
|
57
|
+
uri = URI.parse("#{Warrant.config.api_base}/v1/roles/#{role_id}")
|
58
|
+
res = delete(uri)
|
59
|
+
|
60
|
+
case res
|
61
|
+
when Net::HTTPSuccess
|
62
|
+
return
|
63
|
+
else
|
64
|
+
res_json
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
def create_permission(permission_id)
|
69
|
+
uri = URI.parse("#{Warrant.config.api_base}/v1/permissions")
|
70
|
+
params = {
|
71
|
+
permissionId: permission_id
|
11
72
|
}
|
12
73
|
res = post(uri, params)
|
13
74
|
res_json = JSON.parse(res.body)
|
14
|
-
|
75
|
+
|
76
|
+
case res
|
77
|
+
when Net::HTTPSuccess
|
78
|
+
Permission.new(res_json['permissionId'])
|
79
|
+
else
|
80
|
+
res_json
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
84
|
+
def delete_permission(permission_id)
|
85
|
+
uri = URI.parse("#{Warrant.config.api_base}/v1/permissions/#{permission_id}")
|
86
|
+
res = delete(uri)
|
87
|
+
|
15
88
|
case res
|
16
89
|
when Net::HTTPSuccess
|
17
|
-
|
90
|
+
return
|
18
91
|
else
|
19
92
|
res_json
|
20
93
|
end
|
@@ -30,7 +103,7 @@ module Warrant
|
|
30
103
|
}
|
31
104
|
res = post(uri, params)
|
32
105
|
res_json = JSON.parse(res.body)
|
33
|
-
|
106
|
+
|
34
107
|
case res
|
35
108
|
when Net::HTTPSuccess
|
36
109
|
if res_json['user']['userId']
|
@@ -43,6 +116,56 @@ module Warrant
|
|
43
116
|
end
|
44
117
|
end
|
45
118
|
|
119
|
+
def assign_role_to_user(user_id, role_id)
|
120
|
+
uri = URI.parse("#{Warrant.config.api_base}/v1/users/#{user_id}/roles/#{role_id}")
|
121
|
+
res = post(uri)
|
122
|
+
res_json = JSON.parse(res.body)
|
123
|
+
|
124
|
+
case res
|
125
|
+
when Net::HTTPSuccess
|
126
|
+
Role.new(res_json['roleId'])
|
127
|
+
else
|
128
|
+
res_json
|
129
|
+
end
|
130
|
+
end
|
131
|
+
|
132
|
+
def remove_role_from_user(user_id, role_id)
|
133
|
+
uri = URI.parse("#{Warrant.config.api_base}/v1/users/#{user_id}/roles/#{role_id}")
|
134
|
+
res = delete(uri)
|
135
|
+
|
136
|
+
case res
|
137
|
+
when Net::HTTPSuccess
|
138
|
+
return
|
139
|
+
else
|
140
|
+
res_json
|
141
|
+
end
|
142
|
+
end
|
143
|
+
|
144
|
+
def assign_permission_to_user(user_id, permission_id)
|
145
|
+
uri = URI.parse("#{Warrant.config.api_base}/v1/users/#{user_id}/permissions/#{permission_id}")
|
146
|
+
res = post(uri)
|
147
|
+
res_json = JSON.parse(res.body)
|
148
|
+
|
149
|
+
case res
|
150
|
+
when Net::HTTPSuccess
|
151
|
+
Permission.new(res_json['permissionId'])
|
152
|
+
else
|
153
|
+
res_json
|
154
|
+
end
|
155
|
+
end
|
156
|
+
|
157
|
+
def remove_permission_from_user(user_id, permission_id)
|
158
|
+
uri = URI.parse("#{Warrant.config.api_base}/v1/users/#{user_id}/permissions/#{permission_id}")
|
159
|
+
res = delete(uri)
|
160
|
+
|
161
|
+
case res
|
162
|
+
when Net::HTTPSuccess
|
163
|
+
return
|
164
|
+
else
|
165
|
+
res_json
|
166
|
+
end
|
167
|
+
end
|
168
|
+
|
46
169
|
def create_session(user_id)
|
47
170
|
uri = URI.parse("#{Warrant.config.api_base}/v1/users/#{user_id}/sessions")
|
48
171
|
res = post(uri)
|
@@ -56,6 +179,24 @@ module Warrant
|
|
56
179
|
end
|
57
180
|
end
|
58
181
|
|
182
|
+
def create_self_service_session(user_id, redirect_url)
|
183
|
+
uri = URI.parse("#{Warrant.config.api_base}/v1/sessions")
|
184
|
+
params = {
|
185
|
+
type: "ssdash",
|
186
|
+
userId: user_id,
|
187
|
+
redirectUrl: redirect_url
|
188
|
+
}
|
189
|
+
res = post(uri, params)
|
190
|
+
res_json = JSON.parse(res.body)
|
191
|
+
|
192
|
+
case res
|
193
|
+
when Net::HTTPSuccess
|
194
|
+
res_json['url']
|
195
|
+
else
|
196
|
+
res_json
|
197
|
+
end
|
198
|
+
end
|
199
|
+
|
59
200
|
def is_authorized(object_type, object_id, relation, user_id)
|
60
201
|
uri = URI.parse("#{Warrant.config.api_base}/v1/authorize")
|
61
202
|
params = {
|
@@ -76,9 +217,13 @@ module Warrant
|
|
76
217
|
end
|
77
218
|
end
|
78
219
|
|
220
|
+
def has_permission(permission_id, user_id)
|
221
|
+
return is_authorized("permission", permission_id, "member", user_id)
|
222
|
+
end
|
223
|
+
|
79
224
|
private
|
80
225
|
|
81
|
-
def post(uri, params = {})
|
226
|
+
def post(uri, params = {})
|
82
227
|
http = Net::HTTP.new(uri.host, uri.port)
|
83
228
|
http.use_ssl = true
|
84
229
|
headers = {
|
@@ -86,6 +231,15 @@ module Warrant
|
|
86
231
|
}
|
87
232
|
http.post(uri.path, params.to_json, headers)
|
88
233
|
end
|
234
|
+
|
235
|
+
def delete(uri)
|
236
|
+
http = Net::HTTP.new(uri.host, uri.port)
|
237
|
+
http.use_ssl = true
|
238
|
+
headers = {
|
239
|
+
"Authorization": "ApiKey #{Warrant.config.api_key}"
|
240
|
+
}
|
241
|
+
http.delete(uri.path, headers)
|
242
|
+
end
|
89
243
|
end
|
90
244
|
end
|
91
245
|
end
|
data/lib/warrant.rb
CHANGED
@@ -6,6 +6,9 @@ require "net/http"
|
|
6
6
|
require "json"
|
7
7
|
require "forwardable"
|
8
8
|
|
9
|
+
require "warrant/models/permission"
|
10
|
+
require "warrant/models/role"
|
11
|
+
require "warrant/models/tenant"
|
9
12
|
require "warrant/models/user"
|
10
13
|
require "warrant/models/userset"
|
11
14
|
require "warrant/models/user_warrant"
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: warrant
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Warrant
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2022-01-26 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: Ruby library for the Warrant API at https://warrant.dev.
|
14
14
|
email: hello@warrant.dev
|
@@ -26,6 +26,9 @@ files:
|
|
26
26
|
- bin/console
|
27
27
|
- bin/setup
|
28
28
|
- lib/warrant.rb
|
29
|
+
- lib/warrant/models/permission.rb
|
30
|
+
- lib/warrant/models/role.rb
|
31
|
+
- lib/warrant/models/tenant.rb
|
29
32
|
- lib/warrant/models/user.rb
|
30
33
|
- lib/warrant/models/user_warrant.rb
|
31
34
|
- lib/warrant/models/userset.rb
|