Module: Auth0::Api::V2::Users

Includes:
Mixins::Validation
Included in:
Auth0::Api::V2
Defined in:
lib/auth0/api/v2/users.rb

Overview

Methods to use the users endpoints

Instance Method Summary collapse

Methods included from Mixins::Validation

#validate_permissions_array, #validate_strings_array

Instance Method Details

#add_user_permissions(user_id, permissions) ⇒ Object

Add one or more permissions from a specific user.



287
288
289
290
291
# File 'lib/auth0/api/v2/users.rb', line 287

def add_user_permissions(user_id, permissions)
  raise Auth0::MissingUserId, 'Must supply a valid user_id' if user_id.to_s.empty?
  permissions = validate_permissions_array permissions
  post "#{users_path}/#{user_id}/permissions", permissions: permissions
end

#add_user_roles(user_id, roles) ⇒ Object

Add one or more roles to a specific user.



231
232
233
234
235
236
# File 'lib/auth0/api/v2/users.rb', line 231

def add_user_roles(user_id, roles)
  raise Auth0::MissingUserId, 'Must supply a valid user_id' if user_id.to_s.empty?
  validate_strings_array roles
  path = "#{users_path}/#{user_id}/roles"
  post(path, roles: roles)
end

#create_user(connection, options = {}) ⇒ json

Creates a new user according to optional parameters received. The attribute connection is always mandatory but depending on the type of connection you are using there could be others too. For instance, Auth0 DB Connections require email and password.



49
50
51
52
53
54
55
56
# File 'lib/auth0/api/v2/users.rb', line 49

def create_user(connection, options = {})
  if !connection.is_a?(String) || connection.empty?
    raise Auth0::MissingParameter, 'Must supply a valid connection'
  end
  request_params = Hash[options.map { |(k, v)| [k.to_sym, v] }]
  request_params[:connection] = connection
  post(users_path, request_params)
end

#delete_user(user_id) ⇒ Object

Deletes a single user given its id



84
85
86
87
88
# File 'lib/auth0/api/v2/users.rb', line 84

def delete_user(user_id)
  raise Auth0::MissingUserId, 'Must supply a valid user_id' if user_id.to_s.empty?
  path = "#{users_path}/#{user_id}"
  delete(path)
end

#delete_user_provider(user_id, provider_name) ⇒ Object

Delete a user’s multifactor provider



118
119
120
121
122
123
# File 'lib/auth0/api/v2/users.rb', line 118

def delete_user_provider(user_id, provider_name)
  raise Auth0::MissingUserId, 'Must supply a valid user_id' if user_id.to_s.empty?
  raise Auth0::InvalidParameter, 'Must supply a valid provider name' if provider_name.to_s.empty?
  path = "#{users_path}/#{user_id}/multifactor/#{provider_name}"
  delete(path)
end

#delete_usersObject

Deprecated.
  • 4.8.0, endpoint has been removed

Delete all users - USE WITH CAUTION



60
61
62
# File 'lib/auth0/api/v2/users.rb', line 60

def delete_users
  delete(users_path)
end

#generate_recovery_code(user_id) ⇒ Object

Remove the current Guardian recovery code and generates and returns a new one.



297
298
299
300
# File 'lib/auth0/api/v2/users.rb', line 297

def generate_recovery_code(user_id)
  raise Auth0::MissingUserId, 'Must supply a valid user_id' if user_id.to_s.empty?
  post "#{users_path}/#{user_id}/recovery-code-regeneration"
end

#get_enrollments(user_id) ⇒ json

Get all Guardian enrollments for a specific user



244
245
246
247
# File 'lib/auth0/api/v2/users.rb', line 244

def get_enrollments(user_id)
  raise Auth0::MissingUserId, 'Must supply a valid user_id' if user_id.to_s.empty?
  get "#{users_path}/#{user_id}/enrollments"
end

#get_user_organizations(user_id) ⇒ json

Get a list of organizations for a user.



317
318
319
320
321
# File 'lib/auth0/api/v2/users.rb', line 317

def get_user_organizations(user_id)
  raise Auth0::MissingUserId, 'Must supply a valid user_id' if user_id.to_s.empty?

  get "#{users_path}/#{user_id}/organizations"
end

#get_user_permissions(user_id, options = {}) ⇒ json

Get all permissions for a specific user.



259
260
261
262
263
264
265
266
267
268
269
# File 'lib/auth0/api/v2/users.rb', line 259

def get_user_permissions(user_id, options = {})
  raise Auth0::MissingUserId, 'Must supply a valid user_id' if user_id.to_s.empty?

  request_params = {
    per_page: options.fetch(:per_page, nil),
    page: options.fetch(:page, nil),
    include_totals: options.fetch(:include_totals, nil)
  }

  get "#{users_path}/#{user_id}/permissions", request_params
end

#get_user_roles(user_id, options = {}) ⇒ json

Get all roles assigned to a specific user.



203
204
205
206
207
208
209
210
211
212
# File 'lib/auth0/api/v2/users.rb', line 203

def get_user_roles(user_id, options = {})
  raise Auth0::MissingUserId, 'Must supply a valid user_id' if user_id.to_s.empty?
  path = "#{users_path}/#{user_id}/roles"
  request_params = {
    per_page:       options.fetch(:per_page, nil),
    page:           options.fetch(:page, nil),
    include_totals: options.fetch(:include_totals, nil)
  }
  get(path, request_params)
end

#invalidate_browsers(user_id) ⇒ Object

Invalidate all remembered browsers for all authentication factors for a specific user.



306
307
308
309
# File 'lib/auth0/api/v2/users.rb', line 306

def invalidate_browsers(user_id)
  raise Auth0::MissingUserId, 'Must supply a valid user_id' if user_id.to_s.empty?
  post "#{users_path}/#{user_id}/multifactor/actions/invalidate-remember-browser"
end

Links the account specified in the body (secondary account) to the account specified by the id param of the URL (primary account).

  1. With the authenticated primary account’s JWT in the Authorization header, which has the

update:current_user_identities scope. In this case only the link_with param is required in the body, containing the JWT obtained upon the secondary account’s authentication.

  1. With an API V2 generated token with update:users scope. In this case you need to send provider and user_id

in the body. Optionally you can also send the connection_id param which is suitable for identifying a particular database connection for the ‘auth0’ provider.



138
139
140
141
142
143
# File 'lib/auth0/api/v2/users.rb', line 138

def (user_id, body)
  raise Auth0::MissingUserId, 'Must supply a valid user_id' if user_id.to_s.empty?
  raise Auth0::InvalidParameter, 'Must supply a valid body' if body.to_s.empty?
  path = "#{users_path}/#{user_id}/identities"
  post(path, body)
end

#patch_user(user_id, body) ⇒ json Also known as: update_user

Updates a user with the object’s properties received in the optional parameters. These are the attributes that can be updated at the root level: blocked, email_verified, email, verify_email, password, phone_number, phone_verified, verify_password, user_metadata, app_metadata, username Some considerations: The properties of the new object will replace the old ones. The metadata fields are an exception to this rule (user_metadata and app_metadata). These properties are merged instead of being replaced but be careful, the merge only occurs on the first level. If you are updating email_verified, phone_verified, username or password you need to specify the connection property too. If your are updating email or phone_number you need to specify the connection and the client_id properties.



106
107
108
109
110
111
# File 'lib/auth0/api/v2/users.rb', line 106

def patch_user(user_id, body)
  raise Auth0::MissingUserId, 'Must supply a valid user_id' if user_id.to_s.empty?
  raise Auth0::InvalidParameter, 'Must supply a valid body' if body.to_s.empty? || body.empty?
  path = "#{users_path}/#{user_id}"
  patch(path, body)
end

#remove_user_permissions(user_id, permissions) ⇒ Object

Remove one or more permissions from a specific user.



276
277
278
279
280
# File 'lib/auth0/api/v2/users.rb', line 276

def remove_user_permissions(user_id, permissions)
  raise Auth0::MissingUserId, 'Must supply a valid user_id' if user_id.to_s.empty?
  permissions = validate_permissions_array permissions
  delete_with_body "#{users_path}/#{user_id}/permissions", permissions: permissions
end

#remove_user_roles(user_id, roles) ⇒ Object

Remove one or more roles from a specific user.



219
220
221
222
223
224
# File 'lib/auth0/api/v2/users.rb', line 219

def remove_user_roles(user_id, roles)
  raise Auth0::MissingUserId, 'Must supply a valid user_id' if user_id.to_s.empty?
  validate_strings_array roles
  path = "#{users_path}/#{user_id}/roles"
  delete_with_body path, roles: roles
end

Unlink a user account



152
153
154
155
156
157
158
# File 'lib/auth0/api/v2/users.rb', line 152

def (user_id, provider, secondary_user_id)
  raise Auth0::MissingUserId, 'Must supply a valid user_id' if user_id.to_s.empty?
  raise Auth0::MissingUserId, 'Must supply a valid secondary user_id' if secondary_user_id.to_s.empty?
  raise Auth0::InvalidParameter, 'Must supply a valid provider' if provider.to_s.empty?
  path = "#{users_path}/#{user_id}/identities/#{provider}/#{secondary_user_id}"
  delete(path)
end

#user(user_id, fields: nil, include_fields: true) ⇒ json

Retrieves a user given a user_id



71
72
73
74
75
76
77
78
79
# File 'lib/auth0/api/v2/users.rb', line 71

def user(user_id, fields: nil, include_fields: true)
  raise Auth0::MissingUserId, 'Must supply a valid user_id' if user_id.to_s.empty?
  path = "#{users_path}/#{user_id}"
  request_params = {
    fields:         fields,
    include_fields: include_fields
  }
  get(path, request_params)
end

#user_logs(user_id, options = {}) ⇒ json Also known as: get_user_log_events

Retrieve every log event for a specific user id rubocop:disable Metrics/MethodLength, Metrics/AbcSize



172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
# File 'lib/auth0/api/v2/users.rb', line 172

def user_logs(user_id, options = {})
  raise Auth0::MissingUserId, 'Must supply a valid user_id' if user_id.to_s.empty?
  path = "#{users_path}/#{user_id}/logs"
  request_params = {
    per_page:       options.fetch(:per_page, nil),
    page:           options.fetch(:page, nil),
    include_totals: options.fetch(:include_totals, nil),
    sort:           options.fetch(:sort, nil)
  }
  if request_params[:per_page].to_i > 100
    raise Auth0::InvalidParameter, 'The total amount of entries per page should be less than 100'
  end
  sort_pattern = /^(([a-zA-Z0-9_\.]+))\:(1|-1)$/
  if !request_params[:sort].nil? && !sort_pattern.match(request_params[:sort])
    raise Auth0::InvalidParameter, 'Sort does not match pattern ^(([a-zA-Z0-9_\\.]+))\\:(1|-1)$'
  end
  get(path, request_params)
end

#users(options = {}) ⇒ json Also known as: get_users

Retrieves a list of Auth0 users.



26
27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/auth0/api/v2/users.rb', line 26

def users(options = {})
  request_params = {
    per_page:       options.fetch(:per_page, nil),
    page:           options.fetch(:page, nil),
    include_totals: options.fetch(:include_totals, nil),
    sort:           options.fetch(:sort, nil),
    connection:     options.fetch(:connection, nil),
    fields:         options.fetch(:fields, nil),
    include_fields: options.fetch(:include_fields, nil),
    q:              options.fetch(:q, nil),
    search_engine:  options.fetch(:search_engine, nil)
  }
  get(users_path, request_params)
end