warrant 1.2.0 → 2.0.0.rc1

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.
@@ -2,16 +2,20 @@
2
2
 
3
3
  module Warrant
4
4
  class Role
5
- attr_reader :role_id
5
+ include Warrant::WarrantObject
6
+
7
+ attr_reader :role_id, :name, :description
6
8
 
7
9
  # @!visibility private
8
- def initialize(role_id)
10
+ def initialize(role_id, name = nil, description = nil)
9
11
  @role_id = role_id
12
+ @name = name
13
+ @description = description
10
14
  end
11
15
 
12
16
  # Creates a role with the given parameters
13
17
  #
14
- # @option params [String] :role_id A string identifier for this new role. The role_id can only be composed of lower-case alphanumeric chars and/or '-' and '_'. (optional)
18
+ # @option params [String] :role_id A string identifier for this new role. The role_id can only be composed of lower-case alphanumeric chars and/or '-' and '_'.
15
19
  #
16
20
  # @return [Role] created role
17
21
  #
@@ -20,19 +24,15 @@ module Warrant
20
24
  #
21
25
  # @raise [Warrant::DuplicateRecordError]
22
26
  # @raise [Warrant::InternalError]
23
- # @raise [Warrant::InvalidParameterError]
24
27
  # @raise [Warrant::InvalidRequestError]
25
- # @raise [Warrant::MissingRequiredParameterError]
26
- # @raise [Warrant::NotFoundError]
27
28
  # @raise [Warrant::UnauthorizedError]
28
- # @raise [Warrant::WarrantError]
29
29
  def self.create(params = {})
30
30
  res = APIOperations.post(URI.parse("#{::Warrant.config.api_base}/v1/roles"), Util.normalize_params(params))
31
31
 
32
32
  case res
33
33
  when Net::HTTPSuccess
34
34
  res_json = JSON.parse(res.body)
35
- Role.new(res_json['roleId'])
35
+ Role.new(res_json['roleId'], res_json['name'], res_json['description'])
36
36
  else
37
37
  APIOperations.raise_error(res)
38
38
  end
@@ -40,7 +40,7 @@ module Warrant
40
40
 
41
41
  # Deletes a role with given role id
42
42
  #
43
- # @param role_id [String] A string identifier for this new role. The role_id can only be composed of lower-case alphanumeric chars and/or '-' and '_'.
43
+ # @param role_id [String] The role_id of the role to delete.
44
44
  #
45
45
  # @return [nil] if delete was successful
46
46
  #
@@ -48,10 +48,9 @@ module Warrant
48
48
  # Warrant::Role.delete("test-role")
49
49
  #
50
50
  # @raise [Warrant::InternalError]
51
- # @raise [Warrant::InvalidRequestError]
51
+ # @raise [Warrant::MissingRequiredParameterError]
52
52
  # @raise [Warrant::NotFoundError]
53
53
  # @raise [Warrant::UnauthorizedError]
54
- # @raise [Warrant::WarrantError]
55
54
  def self.delete(role_id)
56
55
  res = APIOperations.delete(URI.parse("#{::Warrant.config.api_base}/v1/roles/#{role_id}"))
57
56
 
@@ -65,50 +64,121 @@ module Warrant
65
64
 
66
65
  # Lists all roles for your organization
67
66
  #
67
+ # @option filters [Integer] :page A positive integer (starting with 1) representing the page of items to return in response. Used in conjunction with the limit param. (optional)
68
+ # @option filters [Integer] :limit A positive integer representing the max number of items to return in response. (optional)
69
+ #
68
70
  # @return [Array<Role>] all roles for your organization
69
71
  #
70
72
  # @example List all roles
71
73
  # Warrant::Role.list()
72
74
  #
73
75
  # @raise [Warrant::InternalError]
74
- # @raise [Warrant::InvalidRequestError]
75
- # @raise [Warrant::NotFoundError]
76
+ # @raise [Warrant::InvalidParameterError]
76
77
  # @raise [Warrant::UnauthorizedError]
77
- # @raise [Warrant::WarrantError]
78
78
  def self.list(filters = {})
79
- res = APIOperations.get(URI.parse("#{::Warrant.config.api_base}/v1/roles"))
79
+ res = APIOperations.get(URI.parse("#{::Warrant.config.api_base}/v1/roles"), Util.normalize_params(filters))
80
80
 
81
81
  case res
82
82
  when Net::HTTPSuccess
83
83
  roles = JSON.parse(res.body)
84
- roles.map{ |role| Role.new(role['roleId']) }
84
+ roles.map{ |role| Role.new(role['roleId'], role['name'], role['description']) }
85
85
  else
86
86
  APIOperations.raise_error(res)
87
- end
87
+ end
88
88
  end
89
89
 
90
90
  # Get a role with the given role_id
91
91
  #
92
- # @param role_id [String] A string identifier for this new role. The role_id can only be composed of lower-case alphanumeric chars and/or '-' and '_'.
92
+ # @param role_id [String] The role_id of the role to retrieve.
93
93
  #
94
94
  # @return [Role] retrieved role
95
95
  #
96
96
  # @raise [Warrant::InternalError]
97
- # @raise [Warrant::InvalidParameterError]
98
- # @raise [Warrant::InvalidRequestError]
97
+ # @raise [Warrant::MissingRequiredParameterError]
99
98
  # @raise [Warrant::NotFoundError]
100
99
  # @raise [Warrant::UnauthorizedError]
101
- # @raise [Warrant::WarrantError]
102
100
  def self.get(role_id)
103
101
  res = APIOperations.get(URI.parse("#{::Warrant.config.api_base}/v1/roles/#{role_id}"))
104
102
 
105
103
  case res
106
104
  when Net::HTTPSuccess
107
105
  role = JSON.parse(res.body)
108
- Role.new(role['roleId'])
106
+ Role.new(role['roleId'], role['name'], role['description'])
107
+ else
108
+ APIOperations.raise_error(res)
109
+ end
110
+ end
111
+
112
+ # Updates a role with the given role_id and params
113
+ #
114
+ # @param role_id [String] The role_id of the role to be updated.
115
+ # @param [Hash] params attributes to update user with
116
+ # @option params [String] :name Name for the role. Designed to be used as a UI-friendly identifier. (optional)
117
+ # @option params [String] :description Description of the role. Designed to be used as a UI-friendly identifier. (optional)
118
+ #
119
+ # @return [Role] updated role
120
+ #
121
+ # @example Update role "test-role"'s name
122
+ # Warrant::Role.update("test-role", { name: "Test Role" })
123
+ #
124
+ # @raise [Warrant::InternalError]
125
+ # @raise [Warrant::InvalidParameterError]
126
+ # @raise [Warrant::InvalidRequestError]
127
+ # @raise [Warrant::NotFoundError]
128
+ # @raise [Warrant::UnauthorizedError]
129
+ def self.update(role_id, params = {})
130
+ res = APIOperations.put(URI.parse("#{::Warrant.config.api_base}/v1/roles/#{role_id}"), Util.normalize_params(params))
131
+
132
+ case res
133
+ when Net::HTTPSuccess
134
+ res_json = JSON.parse(res.body)
135
+ Role.new(res_json['roleId'], res_json['name'], res_json['description'])
136
+ else
137
+ APIOperations.raise_error(res)
138
+ end
139
+ end
140
+
141
+ # Updates a role with the given params
142
+ #
143
+ # @param [Hash] params attributes to update user with
144
+ # @option params [String] :name Name for the role. Designed to be used as a UI-friendly identifier. (optional)
145
+ # @option params [String] :description Description of the role. Designed to be used as a UI-friendly identifier. (optional)
146
+ #
147
+ # @return [Role] updated role
148
+ #
149
+ # @example Update role "test-role"'s name
150
+ # Warrant::Role.update("test-role", { name: "Test Role" })
151
+ #
152
+ # @raise [Warrant::InternalError]
153
+ # @raise [Warrant::InvalidParameterError]
154
+ # @raise [Warrant::InvalidRequestError]
155
+ # @raise [Warrant::NotFoundError]
156
+ # @raise [Warrant::UnauthorizedError]
157
+ def update(params = {})
158
+ return Role.update(role_id, params)
159
+ end
160
+
161
+ # List roles for user
162
+ #
163
+ # @param user_id [String] The user_id of the user you want to retrieve roles for.
164
+ # @option filters [Integer] :page A positive integer (starting with 1) representing the page of items to return in response. Used in conjunction with the limit param. (optional)
165
+ # @option filters [Integer] :limit A positive integer representing the max number of items to return in response. (optional)
166
+ #
167
+ # @return [Array<Role>] all assigned roles for the user
168
+ #
169
+ # @raise [Warrant::InternalError]
170
+ # @raise [Warrant::MissingRequiredParameterError]
171
+ # @raise [Warrant::UnauthorizedError]
172
+ def self.list_for_user(user_id, filters = {})
173
+ res = APIOperations.get(URI.parse("#{::Warrant.config.api_base}/v1/users/#{user_id}/roles"), Util.normalize_params(filters))
174
+
175
+ case res
176
+ when Net::HTTPSuccess
177
+ roles = JSON.parse(res.body)
178
+ roles.map{ |role| Role.new(role['roleId'], role['name'], role['description']) }
109
179
  else
110
180
  APIOperations.raise_error(res)
111
- end
181
+ end
112
182
  end
113
183
 
114
184
  # Assign a role to a user
@@ -116,35 +186,35 @@ module Warrant
116
186
  # @param user_id [String] The user_id of the user you want to assign a role to.
117
187
  # @param role_id [String] The role_id of the role you want to assign to a user.
118
188
  #
119
- # @return [Permission] assigned role
189
+ # @return [Role] assigned role
120
190
  #
191
+ # @raise [Warrant::DuplicateRecordError]
121
192
  # @raise [Warrant::InternalError]
122
- # @raise [Warrant::InvalidRequestError]
193
+ # @raise [Warrant::InvalidParameterError]
123
194
  # @raise [Warrant::MissingRequiredParameterError]
124
195
  # @raise [Warrant::NotFoundError]
125
196
  # @raise [Warrant::UnauthorizedError]
126
- # @raise [Warrant::WarrantError]
127
197
  def self.assign_to_user(user_id, role_id)
128
198
  res = APIOperations.post(URI.parse("#{::Warrant.config.api_base}/v1/users/#{user_id}/roles/#{role_id}"))
129
199
 
130
200
  case res
131
201
  when Net::HTTPSuccess
132
202
  role = JSON.parse(res.body)
133
- Role.new(role['permissionId'])
203
+ Role.new(role['roleId'], role['name'], role['description'])
134
204
  else
135
205
  APIOperations.raise_error(res)
136
- end
206
+ end
137
207
  end
138
208
 
139
209
  # Remove a role from a user
140
210
  #
141
- # @param user_id [String] The user_id of the role you want to assign a role to.
142
- # @param role_id [String] The role_id of the role you want to assign to a user.
211
+ # @param user_id [String] The user_id of the role you want to remove a role from.
212
+ # @param role_id [String] The role_id of the role you want to remove from a user.
143
213
  #
144
214
  # @return [nil] if remove was successful
145
215
  #
216
+ # @raise [Warrant::ForbiddenError]
146
217
  # @raise [Warrant::InternalError]
147
- # @raise [Warrant::InvalidRequestError]
148
218
  # @raise [Warrant::MissingRequiredParameterError]
149
219
  # @raise [Warrant::NotFoundError]
150
220
  # @raise [Warrant::UnauthorizedError]
@@ -157,33 +227,46 @@ module Warrant
157
227
  return
158
228
  else
159
229
  APIOperations.raise_error(res)
160
- end
230
+ end
231
+ end
232
+
233
+ # List assigned permissions for the role
234
+ #
235
+ # @option filters [Integer] :page A positive integer (starting with 1) representing the page of items to return in response. Used in conjunction with the limit param. (optional)
236
+ # @option filters [Integer] :limit A positive integer representing the max number of items to return in response. (optional)
237
+ #
238
+ # @return [Permission] assigned permissions
239
+ #
240
+ # @raise [Warrant::InternalError]
241
+ # @raise [Warrant::MissingRequiredParameterError]
242
+ # @raise [Warrant::UnauthorizedError]
243
+ def list_permissions(filters = {})
244
+ return Permission.list_for_role(role_id, filters)
161
245
  end
162
246
 
163
247
  # Assign a permission to a role
164
248
  #
165
- # @param permission_id [String] The permission_id of the permission you want to assign to a role.
249
+ # @param permission_id [String] The permission_id of the permission you want to assign to the role.
166
250
  #
167
251
  # @return [Permission] assigned permission
168
252
  #
253
+ # @raise [Warrant::DuplicateRecordError]
169
254
  # @raise [Warrant::InternalError]
170
- # @raise [Warrant::InvalidRequestError]
255
+ # @raise [Warrant::InvalidParameterError]
171
256
  # @raise [Warrant::MissingRequiredParameterError]
172
257
  # @raise [Warrant::NotFoundError]
173
258
  # @raise [Warrant::UnauthorizedError]
174
- # @raise [Warrant::WarrantError]
175
259
  def assign_permission(permission_id)
176
260
  return Permission.assign_to_role(role_id, permission_id)
177
261
  end
178
262
 
179
263
  # Remove a permission from a role
180
264
  #
181
- # @param permission_id [String] The permission_id of the permission you want to assign to a role.
265
+ # @param permission_id [String] The permission_id of the permission you want to remove from the role.
182
266
  #
183
267
  # @return [nil] if remove was successful
184
268
  #
185
269
  # @raise [Warrant::InternalError]
186
- # @raise [Warrant::InvalidRequestError]
187
270
  # @raise [Warrant::MissingRequiredParameterError]
188
271
  # @raise [Warrant::NotFoundError]
189
272
  # @raise [Warrant::UnauthorizedError]
@@ -191,5 +274,13 @@ module Warrant
191
274
  def remove_permission(permission_id)
192
275
  return Permission.remove_from_role(role_id, permission_id)
193
276
  end
277
+
278
+ def warrant_object_type
279
+ "role"
280
+ end
281
+
282
+ def warrant_object_id
283
+ role_id
284
+ end
194
285
  end
195
286
  end
@@ -6,7 +6,7 @@ module Warrant
6
6
  #
7
7
  # @option params [String] :user_id Id of the user to create a session for.
8
8
  # @option params [Integer] :ttl Number of seconds a session should live for. By default session tokens live for 24 hours and self service tokens live for 30 minutes.
9
- #
9
+ #
10
10
  # @return [String] Session token
11
11
  #
12
12
  # @raise [Warrant::InternalError]
@@ -15,7 +15,6 @@ module Warrant
15
15
  # @raise [Warrant::MissingRequiredParameterError]
16
16
  # @raise [Warrant::NotFoundError]
17
17
  # @raise [Warrant::UnauthorizedError]
18
- # @raise [Warrant::WarrantError]
19
18
  def self.create_authorization_session(params = {})
20
19
  params = params.merge(type: "sess")
21
20
  res = APIOperations.post(URI.parse("#{::Warrant.config.api_base}/v1/sessions"), Util.normalize_params(params))
@@ -36,15 +35,15 @@ module Warrant
36
35
  # @option params [String] :tenant_id Id of the tenant to create a session for
37
36
  # @option params [Integer] :ttl Number of seconds a session should live for. By default session tokens live for 24 hours and self service tokens live for 30 minutes.
38
37
  #
39
- # @return [String] URL to the self service dashboard
40
- #
38
+ # @return [String] URL to the self service dashboard
39
+ #
40
+ # @raise [Warrant::ForbiddenError]
41
41
  # @raise [Warrant::InternalError]
42
42
  # @raise [Warrant::InvalidParameterError]
43
43
  # @raise [Warrant::InvalidRequestError]
44
44
  # @raise [Warrant::MissingRequiredParameterError]
45
45
  # @raise [Warrant::NotFoundError]
46
46
  # @raise [Warrant::UnauthorizedError]
47
- # @raise [Warrant::WarrantError]
48
47
  def self.create_self_service_session(redirect_url, params = {})
49
48
  params = params.merge(type: "ssdash")
50
49
  res = APIOperations.post(URI.parse("#{::Warrant.config.api_base}/v1/sessions"), Util.normalize_params(params))