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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d582aad391d045a0560fa31d72874b6daab745730fde4166a8a928372b0dfd1a
4
- data.tar.gz: b8b88e6cb72cca841e4261460a9562c3f6228894cab278c88de4bb69b4838aeb
3
+ metadata.gz: 5243205fa7c1a3a21d681d66ab0071c2b71c95fb018a9812b7844919611c8b31
4
+ data.tar.gz: f36c01ea86c7cb028b142fc30eae84824e6ef861915d3f71038052b704cedb8e
5
5
  SHA512:
6
- metadata.gz: af98bc58266547012886473b49d3d8e0a4434e922dedc6d7372fb4b1d90f95d7d77cdba276281dde5f0316ffa4ba60b575d9331ba0f30774fbe2cc30d7cbafe3
7
- data.tar.gz: d99f3dccc78f9855ff239671ebde3ac5903e26311e4c1a2d2122ff864fa642b1801d03529a713037de26c510dc6030e32c2fb276bb779206aba8e532d44830de
6
+ metadata.gz: 4675af03e0ca8a149e5b01c0a58a6e7f72064597c167a4a6ddef76e98975d321dcb0efe1feafe85df558207f070cbae2969dd3c84bafeaad35a99ad97aa9c31c
7
+ data.tar.gz: 188ddcc865f033900b0f1b11e4ba49d11ce5a6ff01a0cc67387a07e0600e048ccbbbe75c0f6297a9b4eeefb9e759f71c3104d4fe5a8d2221610b649b56fad630
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Warrant
4
+ class Permission
5
+ attr_reader :permission_id
6
+
7
+ def initialize(permission_id)
8
+ @permission_id = permission_id
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Warrant
4
+ class Role
5
+ attr_reader :role_id
6
+
7
+ def initialize(role_id)
8
+ @role_id = role_id
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Warrant
4
+ class Tenant
5
+ attr_reader :tenant_id
6
+
7
+ def initialize(tenant_id)
8
+ @tenant_id = tenant_id
9
+ end
10
+ end
11
+ end
@@ -1,11 +1,13 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Warrant
4
- class User
5
- attr_reader :user_id
4
+ class User
5
+ attr_reader :tenant_id, :user_id, :email
6
6
 
7
- def initialize(user_id)
8
- @user_id = user_id
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
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Warrant
4
- VERSION = "0.1.0"
4
+ VERSION = "0.1.1"
5
5
  end
@@ -3,18 +3,91 @@
3
3
  module Warrant
4
4
  class WarrantClient
5
5
  class << self
6
- def create_user(user_id = '', username = '')
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
- username: username
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
- User.new(res_json['userId'])
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.0
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: 2021-11-23 00:00:00.000000000 Z
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