Module: Gitlab::Client::Users

Included in:
Gitlab::Client
Defined in:
lib/gitlab/client/users.rb

Overview

Defines methods related to users.

Instance Method Summary collapse

Instance Method Details

#activate_user(user_id) ⇒ Boolean

Activate the specified user. Available only for admin.

Examples:

Gitlab.activate_user(15)

Parameters:

  • user_id (Integer)

    The Id of user

Returns:

  • (Boolean)

    success or not



147
148
149
# File 'lib/gitlab/client/users.rb', line 147

def activate_user(user_id)
  post("/users/#{user_id}/activate")
end

#activities(options = {}) ⇒ Array<Gitlab::ObjectifiedHash>

Gets a list of user activities (for admin access only).

Examples:

Gitlab.activities

Parameters:

  • options (Hash) (defaults to: {})

    A customizable set of options.

Options Hash (options):

  • :page (Integer)

    The page number.

  • :per_page (Integer)

    The number of results per page.

  • :from (String)

    The start date for paginated results.

Returns:



185
186
187
# File 'lib/gitlab/client/users.rb', line 185

def activities(options = {})
  get('/user/activities', query: options)
end

#add_email(email, user_id = nil, skip_confirmation = nil) ⇒ Gitlab::ObjectifiedHash

Creates a new email Will create a new email an authorized user if no user ID passed.

Examples:

Gitlab.add_email('[email protected]')
Gitlab.add_email('[email protected]', 2)

Parameters:

  • email (String)

    Email address

  • user_id (Integer) (defaults to: nil)

    The ID of a user.

  • skip_confirmation (Boolean) (defaults to: nil)

    Skip confirmation and assume e-mail is verified

Returns:



293
294
295
296
297
298
299
300
# File 'lib/gitlab/client/users.rb', line 293

def add_email(email, user_id = nil, skip_confirmation = nil)
  url = user_id.to_i.zero? ? '/user/emails' : "/users/#{user_id}/emails"
  if skip_confirmation.nil?
    post(url, body: { email: email })
  else
    post(url, body: { email: email, skip_confirmation: skip_confirmation })
  end
end

#add_user_custom_attribute(key, value, user_id) ⇒ Gitlab::ObjectifiedHash

Creates a new custom_attribute

Examples:

Gitlab.add_custom_attribute('some_new_key', 'some_new_value', 2)

Parameters:

  • key (String)

    The custom_attributes key

  • value (String)

    The custom_attributes value

  • user_id (Integer)

    The ID of a user.

Returns:



377
378
379
380
# File 'lib/gitlab/client/users.rb', line 377

def add_user_custom_attribute(key, value, user_id)
  url = "/users/#{user_id}/custom_attributes/#{key}"
  put(url, body: { value: value })
end

#approve_user(user_id) ⇒ Boolean

Approves the specified user. Available only for admin.

Examples:

Gitlab.approve_user(15)

Parameters:

  • user_id (Integer)

    The Id of user

Returns:

  • (Boolean)

    success or not



158
159
160
# File 'lib/gitlab/client/users.rb', line 158

def approve_user(user_id)
  post("/users/#{user_id}/approve")
end

#block_user(user_id) ⇒ Boolean

Blocks the specified user. Available only for admin.

Examples:

Gitlab.block_user(15)

Parameters:

  • user_id (Integer)

    The Id of user

Returns:

  • (Boolean)

    success or not



114
115
116
# File 'lib/gitlab/client/users.rb', line 114

def block_user(user_id)
  post("/users/#{user_id}/block")
end

#create_personal_access_token(user_id, name, scopes, expires_at = nil) ⇒ Gitlab::ObjectifiedHash

Create personal access token

Examples:

Gitlab.create_personal_access_token(2, "token", ["api", "read_user"])
Gitlab.create_personal_access_token(2, "token", ["api", "read_user"], "1970-01-01")

Parameters:

  • user_id (Integer)

    The ID of the user.

  • name (String)

    Name of the personal access token.

  • scopes (Array<String>)

    Array of scopes for the impersonation token

  • expires_at (String) (defaults to: nil)

    Date for impersonation token expiration in ISO format.

Returns:



458
459
460
461
462
# File 'lib/gitlab/client/users.rb', line 458

def create_personal_access_token(user_id, name, scopes, expires_at = nil)
  body = { name: name, scopes: scopes }
  body[:expires_at] = expires_at if expires_at
  post("/users/#{user_id}/personal_access_tokens", body: body)
end

#create_service_account(*args) ⇒ Gitlab::ObjectifiedHash

Creates a service account. Requires authentication from an admin account.

Examples:

Gitlab.('service_account_6018816a18e515214e0c34c2b33523fc', 'Service account user')

Parameters:

  • name (String)

    (required) The email of the service account.

  • username (String)

    (required) The username of the service account.

Returns:

Raises:

  • (ArgumentError)


70
71
72
73
74
75
# File 'lib/gitlab/client/users.rb', line 70

def (*args)
  raise ArgumentError, 'Missing required parameters' unless args[1]

  body = { name: args[0], username: args[1] }
  post('/service_accounts', body: body)
end

#create_ssh_key(title, key, options = {}) ⇒ Gitlab::ObjectifiedHash

Creates a new SSH key.

Examples:

Gitlab.create_ssh_key('key title', 'key body')

Parameters:

  • title (String)

    The title of an SSH key.

  • key (String)

    The SSH key body.

  • options (Hash) (defaults to: {})

    A customizable set of options.

Options Hash (options):

  • :user_id (Integer)

    id of the user to associate the key with

Returns:



230
231
232
233
234
235
236
237
# File 'lib/gitlab/client/users.rb', line 230

def create_ssh_key(title, key, options = {})
  user_id = options.delete :user_id
  if user_id.to_i.zero?
    post('/user/keys', body: { title: title, key: key })
  else
    post("/users/#{user_id}/keys", body: { title: title, key: key })
  end
end

#create_user(*args) ⇒ Gitlab::ObjectifiedHash

Creates a new user. Requires authentication from an admin account.

Examples:

Gitlab.create_user('[email protected]', 'secret', 'joe', { name: 'Joe Smith' })
or
Gitlab.create_user('[email protected]', 'secret', 'joe')

Parameters:

  • email(required) (String)

    The email of a user.

  • password(required) (String)

    The password of a user.

  • username(required) (String)

    The username of a user.

  • options (Hash)

    A customizable set of options.

Returns:

Raises:

  • (ArgumentError)


52
53
54
55
56
57
58
59
# File 'lib/gitlab/client/users.rb', line 52

def create_user(*args)
  options = args.last.is_a?(Hash) ? args.pop : {}
  raise ArgumentError, 'Missing required parameters' unless args[2]

  body = { email: args[0], password: args[1], username: args[2], name: args[0] }
  body.merge!(options)
  post('/users', body: body)
end

#create_user_impersonation_token(user_id, name, scopes, expires_at = nil) ⇒ Gitlab::ObjectifiedHash

Create impersonation token

Examples:

Gitlab.create_user_impersonation_token(2, "token", ["api", "read_user"])
Gitlab.create_user_impersonation_token(2, "token", ["api", "read_user"], "1970-01-01")

Parameters:

  • user_id (Integer)

    The ID of the user.

  • name (String)

    Name for impersonation token.

  • scopes (Array<String>)

    Array of scopes for the impersonation token

  • expires_at (String) (defaults to: nil)

    Date for impersonation token expiration in ISO format.

Returns:



430
431
432
433
434
# File 'lib/gitlab/client/users.rb', line 430

def create_user_impersonation_token(user_id, name, scopes, expires_at = nil)
  body = { name: name, scopes: scopes }
  body[:expires_at] = expires_at if expires_at
  post("/users/#{user_id}/impersonation_tokens", body: body)
end

#deactivate_user(user_id) ⇒ Boolean

Deactivates the specified user. Available only for admin.

Examples:

Gitlab.deactivate_user(15)

Parameters:

  • user_id (Integer)

    The Id of user

Returns:

  • (Boolean)

    success or not



136
137
138
# File 'lib/gitlab/client/users.rb', line 136

def deactivate_user(user_id)
  post("/users/#{user_id}/deactivate")
end

#delete_email(id, user_id = nil) ⇒ Boolean

Delete email Will delete a email an authorized user if no user ID passed.

Examples:

Gitlab.delete_email(2)
Gitlab.delete_email(3, 2)

Parameters:

  • id (Integer)

    Email address ID

  • user_id (Integer) (defaults to: nil)

    The ID of a user.

Returns:

  • (Boolean)


312
313
314
315
# File 'lib/gitlab/client/users.rb', line 312

def delete_email(id, user_id = nil)
  url = user_id.to_i.zero? ? "/user/emails/#{id}" : "/users/#{user_id}/emails/#{id}"
  delete(url)
end

#delete_ssh_key(id, options = {}) ⇒ Gitlab::ObjectifiedHash

Deletes an SSH key.

Examples:

Gitlab.delete_ssh_key(1)

Parameters:

  • id (Integer)

    The ID of a user’s SSH key.

  • options (Hash) (defaults to: {})

    A customizable set of options.

Options Hash (options):

  • :user_id (Integer)

    id of the user to associate the key with

Returns:



248
249
250
251
252
253
254
255
# File 'lib/gitlab/client/users.rb', line 248

def delete_ssh_key(id, options = {})
  user_id = options.delete :user_id
  if user_id.to_i.zero?
    delete("/user/keys/#{id}")
  else
    delete("/users/#{user_id}/keys/#{id}")
  end
end

#delete_user(user_id) ⇒ Gitlab::ObjectifiedHash

Deletes a user.

Examples:

Gitlab.delete_user(1)

Parameters:

  • id (Integer)

    The ID of a user.

Returns:



103
104
105
# File 'lib/gitlab/client/users.rb', line 103

def delete_user(user_id)
  delete("/users/#{user_id}")
end

#delete_user_custom_attribute(key, user_id) ⇒ Boolean

Delete custom_attribute Will delete a custom_attribute

Examples:

Gitlab.delete_user_custom_attribute('somekey', 2)

Parameters:

  • key (String)

    The custom_attribute key to delete

  • user_id (Integer)

    The ID of a user.

Returns:

  • (Boolean)


391
392
393
# File 'lib/gitlab/client/users.rb', line 391

def delete_user_custom_attribute(key, user_id)
  delete("/users/#{user_id}/custom_attributes/#{key}")
end

#disable_two_factor(user_id) ⇒ Gitlab::ObjectifiedHash

Disables two factor authentication (2FA) for the specified user.

Examples:

Gitlab.disable_two_factor(1)

Parameters:

  • id (Integer)

    The ID of a user.

Returns:



517
518
519
# File 'lib/gitlab/client/users.rb', line 517

def disable_two_factor(user_id)
  patch("/users/#{user_id}/disable_two_factor")
end

#edit_user(user_id, options = {}) ⇒ Gitlab::ObjectifiedHash

Updates a user.

Examples:

Gitlab.edit_user(15, { email: '[email protected]', projects_limit: 20 })

Parameters:

  • id (Integer)

    The ID of a user.

  • options (Hash) (defaults to: {})

    A customizable set of options.

Options Hash (options):

  • :email (String)

    The email of a user.

  • :password (String)

    The password of a user.

  • :name (String)

    The name of a user. Defaults to email.

  • :skype (String)

    The skype of a user.

  • :linkedin (String)

    The linkedin of a user.

  • :twitter (String)

    The twitter of a user.

  • :projects_limit (Integer)

    The limit of projects for a user.

Returns:



92
93
94
# File 'lib/gitlab/client/users.rb', line 92

def edit_user(user_id, options = {})
  put("/users/#{user_id}", body: options)
end

#email(id) ⇒ Gitlab::ObjectifiedHash

Get a single email.

Examples:

Gitlab.email(3)

Parameters:

  • id (Integer)

    The ID of a email.

Returns:



278
279
280
# File 'lib/gitlab/client/users.rb', line 278

def email(id)
  get("/user/emails/#{id}")
end

#emails(user_id = nil) ⇒ Gitlab::ObjectifiedHash

Gets user emails. Will return emails an authorized user if no user ID passed.

Examples:

Gitlab.emails
Gitlab.emails(2)

Parameters:

  • user_id (Integer) (defaults to: nil)

    The ID of a user.

Returns:



266
267
268
269
# File 'lib/gitlab/client/users.rb', line 266

def emails(user_id = nil)
  url = user_id.to_i.zero? ? '/user/emails' : "/users/#{user_id}/emails"
  get(url)
end

#memberships(user_id) ⇒ Object

Lists all projects and groups a user is a member of

Examples:

Gitlab.memberships(2)

Parameters:

  • user_id (Integer)

    The ID of the user.



495
496
497
# File 'lib/gitlab/client/users.rb', line 495

def memberships(user_id)
  get("/users/#{user_id}/memberships")
end

#revoke_personal_access_token(personal_access_token_id) ⇒ Gitlab::ObjectifiedHash

Revoke a personal access token

Examples:

Gitlab.revoke_personal_access_token(1)

Parameters:

  • personal_access_token_id (Integer)

    ID of the personal access token.

Returns:



506
507
508
# File 'lib/gitlab/client/users.rb', line 506

def revoke_personal_access_token(personal_access_token_id)
  delete("/personal_access_tokens/#{personal_access_token_id}")
end

#revoke_user_impersonation_token(user_id, impersonation_token_id) ⇒ Gitlab::ObjectifiedHash

Revoke an impersonation token

Examples:

Gitlab.revoke_user_impersonation_token(1, 1)

Parameters:

  • user_id (Integer)

    The ID of the user.

  • impersonation_token_id (Integer)

    ID of the impersonation token.

Returns:



485
486
487
# File 'lib/gitlab/client/users.rb', line 485

def revoke_user_impersonation_token(user_id, impersonation_token_id)
  delete("/users/#{user_id}/impersonation_tokens/#{impersonation_token_id}")
end

#rotate_personal_access_token(personal_access_token_id, expires_at = nil) ⇒ Gitlab::ObjectifiedHash

Rotate a personal access token

Examples:

Gitlab.rotate_personal_access_token(1)

Parameters:

  • personal_access_token_id (Integer)

    ID of the personal access token.

Returns:



471
472
473
474
475
# File 'lib/gitlab/client/users.rb', line 471

def rotate_personal_access_token(personal_access_token_id, expires_at = nil)
  body = {}
  body[:expires_at] = expires_at if expires_at
  post("/personal_access_tokens/#{personal_access_token_id}/rotate", body: body)
end

#session(email, password) ⇒ Gitlab::ObjectifiedHash

Note:

This method doesn’t require private_token to be set.

Creates a new user session.

Examples:

Gitlab.session('[email protected]', 'secret12345')

Parameters:

  • email (String)

    The email of a user.

  • password (String)

    The password of a user.

Returns:



171
172
173
# File 'lib/gitlab/client/users.rb', line 171

def session(email, password)
  post('/session', body: { email: email, password: password }, unauthenticated: true)
end

#ssh_key(id) ⇒ Gitlab::ObjectifiedHash

Gets information about SSH key.

Examples:

Gitlab.ssh_key(1)

Parameters:

  • id (Integer)

    The ID of a user’s SSH key.

Returns:



216
217
218
# File 'lib/gitlab/client/users.rb', line 216

def ssh_key(id)
  get("/user/keys/#{id}")
end

#ssh_keys(options = {}) ⇒ Array<Gitlab::ObjectifiedHash>

Gets a list of user’s SSH keys.

Examples:

Gitlab.ssh_keys
Gitlab.ssh_keys({ user_id: 2 })

Parameters:

  • options (Hash) (defaults to: {})

    A customizable set of options.

Options Hash (options):

  • :page (Integer)

    The page number.

  • :per_page (Integer)

    The number of results per page.

  • :user_id (Integer)

    The ID of the user to retrieve the keys for.

Returns:



200
201
202
203
204
205
206
207
# File 'lib/gitlab/client/users.rb', line 200

def ssh_keys(options = {})
  user_id = options.delete :user_id
  if user_id.to_i.zero?
    get('/user/keys', query: options)
  else
    get("/users/#{user_id}/keys", query: options)
  end
end

#unblock_user(user_id) ⇒ Boolean

Unblocks the specified user. Available only for admin.

Examples:

Gitlab.unblock_user(15)

Parameters:

  • user_id (Integer)

    The Id of user

Returns:

  • (Boolean)

    success or not



125
126
127
# File 'lib/gitlab/client/users.rb', line 125

def unblock_user(user_id)
  post("/users/#{user_id}/unblock")
end

#user(id = nil) ⇒ Gitlab::ObjectifiedHash

Gets information about a user. Will return information about an authorized user if no ID passed.

Examples:

Gitlab.user
Gitlab.user(2)

Parameters:

  • id (Integer) (defaults to: nil)

    The ID of a user.

Returns:



30
31
32
# File 'lib/gitlab/client/users.rb', line 30

def user(id = nil)
  id.to_i.zero? ? get('/user') : get("/users/#{id}")
end

#user_by_username(username, options = {}) ⇒ Array<Gitlab::ObjectifiedHash>

Get user by username

Examples:

Gitlab.user_by_username('gitlab')

Parameters:

  • username (String)

    A username to get.

  • options (Hash) (defaults to: {})

    A customizable set of options.

Returns:



340
341
342
343
# File 'lib/gitlab/client/users.rb', line 340

def user_by_username(username, options = {})
  options[:username] = username
  get('/users', query: options)
end

#user_custom_attribute(key, user_id) ⇒ Gitlab::ObjectifiedHash

Gets single user custom_attribute.

Examples:

Gitlab.user_custom_attribute(key, 2)

Parameters:

  • key (String)

    The custom_attributes key

  • user_id (Integer)

    The ID of a user.

Returns:



364
365
366
# File 'lib/gitlab/client/users.rb', line 364

def user_custom_attribute(key, user_id)
  get("/users/#{user_id}/custom_attributes/#{key}")
end

#user_custom_attributes(user_id) ⇒ Gitlab::ObjectifiedHash

Gets user custom_attributes.

Examples:

Gitlab.user_custom_attributes(2)

Parameters:

  • user_id (Integer)

    The ID of a user.

Returns:



352
353
354
# File 'lib/gitlab/client/users.rb', line 352

def user_custom_attributes(user_id)
  get("/users/#{user_id}/custom_attributes")
end

#user_impersonation_token(user_id, impersonation_token_id) ⇒ Gitlab::ObjectifiedHash

Get impersonation token information

Examples:

Gitlab.user_impersonation_token(1, 1)

Parameters:

  • user_id (Integer)

    The ID of the user.

  • impersonation_token_id (Integer)

    ID of the impersonation token.

Returns:



415
416
417
# File 'lib/gitlab/client/users.rb', line 415

def user_impersonation_token(user_id, impersonation_token_id)
  get("/users/#{user_id}/impersonation_tokens/#{impersonation_token_id}")
end

#user_impersonation_tokens(user_id) ⇒ Array<Gitlab::ObjectifiedHash>

Get all impersonation tokens for a user

Examples:

Gitlab.user_impersonation_tokens(1)

Parameters:

  • user_id (Integer)

    The ID of the user.

  • state (String)

    Filter impersonation tokens by state {}

Returns:



403
404
405
# File 'lib/gitlab/client/users.rb', line 403

def user_impersonation_tokens(user_id)
  get("/users/#{user_id}/impersonation_tokens")
end

#user_personal_access_tokens(user_id) ⇒ Array<Gitlab::ObjectifiedHash>

Get all personal access tokens for a user

Examples:

Gitlab.user_personal_access_tokens(1)

Parameters:

  • user_id (Integer)

    The ID of the user.

Returns:



443
444
445
# File 'lib/gitlab/client/users.rb', line 443

def user_personal_access_tokens(user_id)
  get("/personal_access_tokens?user_id=#{user_id}")
end

#user_search(search, options = {}) ⇒ Array<Gitlab::ObjectifiedHash>

Search for users by name

Examples:

Gitlab.user_search('gitlab')

Parameters:

  • search (String)

    A string to search for in user names and paths.

  • options (Hash) (defaults to: {})

    A customizable set of options.

Options Hash (options):

  • :per_page (String)

    Number of user to return per page

  • :page (String)

    The page to retrieve

Returns:



327
328
329
330
# File 'lib/gitlab/client/users.rb', line 327

def user_search(search, options = {})
  options[:search] = search
  get('/users', query: options)
end

#users(options = {}) ⇒ Array<Gitlab::ObjectifiedHash>

Gets a list of users.

Examples:

Gitlab.users

Parameters:

  • options (Hash) (defaults to: {})

    A customizable set of options.

Options Hash (options):

  • :page (Integer)

    The page number.

  • :per_page (Integer)

    The number of results per page.

Returns:



17
18
19
# File 'lib/gitlab/client/users.rb', line 17

def users(options = {})
  get('/users', query: options)
end