class Mongo::Auth::User::View

Defines behavior for user related operation on databases.

@since 2.0.0

Attributes

database[R]

@return [ Database ] database The view's database.

Public Class Methods

new(database) click to toggle source

Initialize the new user view.

@example Initialize the user view.

View::User.new(database)

@param [ Mongo::Database ] database The database the view is for.

@since 2.0.0

# File lib/mongo/auth/user/view.rb, line 65
def initialize(database)
  @database = database
end

Public Instance Methods

create(user_or_name, options = {}) click to toggle source

Create a new user in the database.

@example Create a new read/write user.

view.create('user', password: 'password', roles: [ 'readWrite' ])

@param [ Auth::User, String ] user_or_name The user object or user name. @param [ Hash ] options The user options.

@option options [ Session ] :session The session to use for the operation. @option options [ Hash ] :write_concern The write concern options.

@return [ Result ] The command response.

@since 2.0.0

# File lib/mongo/auth/user/view.rb, line 45
def create(user_or_name, options = {})
  user = generate(user_or_name, options)
  client.send(:with_session, options) do |session|
    Operation::CreateUser.new(
      user: user,
      db_name: database.name,
      session: session,
      write_concern: options[:write_concern] && WriteConcern.get(options[:write_concern]),
    ).execute(next_primary(nil, session))
  end
end
info(name, options = {}) click to toggle source

Get info for a particular user in the database.

@example Get a particular user's info.

view.info('emily')

@param [ String ] name The user name. @param [ Hash ] options The options for the info operation.

@option options [ Session ] :session The session to use for the operation.

@return [ Array ] An array wrapping a document containing information on a particular user.

@since 2.1.0

# File lib/mongo/auth/user/view.rb, line 133
def info(name, options = {})
  user_query(name, options).documents
end
remove(name, options = {}) click to toggle source

Remove a user from the database.

@example Remove the user from the database.

view.remove('user')

@param [ String ] name The user name. @param [ Hash ] options The options for the remove operation.

@option options [ Session ] :session The session to use for the operation. @option options [ Hash ] :write_concern The write concern options.

@return [ Result ] The command response.

@since 2.0.0

# File lib/mongo/auth/user/view.rb, line 83
def remove(name, options = {})
  client.send(:with_session, options) do |session|
    Operation::RemoveUser.new(
      user_name: name,
      db_name: database.name,
      session: session,
      write_concern: options[:write_concern] && WriteConcern.get(options[:write_concern]),
    ).execute(next_primary(nil, session))
  end
end
update(user_or_name, options = {}) click to toggle source

Update a user in the database.

@example Update a user.

view.update('name', password: 'testpwd')

@param [ Auth::User, String ] user_or_name The user object or user name. @param [ Hash ] options The user options.

@option options [ Session ] :session The session to use for the operation. @option options [ Hash ] :write_concern The write concern options.

@return [ Result ] The response.

@since 2.0.0

# File lib/mongo/auth/user/view.rb, line 108
def update(user_or_name, options = {})
  client.send(:with_session, options) do |session|
    user = generate(user_or_name, options)
    Operation::UpdateUser.new(
      user: user,
      db_name: database.name,
      session: session,
      write_concern: options[:write_concern] && WriteConcern.get(options[:write_concern]),
    ).execute(next_primary(nil, session))
  end
end

Private Instance Methods

generate(user, options) click to toggle source
# File lib/mongo/auth/user/view.rb, line 149
def generate(user, options)
  user.is_a?(String) ? Auth::User.new({ user: user }.merge(options)) : user
end
user_query(name, options = {}) click to toggle source
# File lib/mongo/auth/user/view.rb, line 139
def user_query(name, options = {})
  client.send(:with_session, options) do |session|
    Operation::UsersInfo.new(
      user_name: name,
      db_name: database.name,
      session: session
    ).execute(next_primary(nil, session))
  end
end