class Mongo::Auth::User

Represents a user in MongoDB.

@since 2.0.0

Constants

COLLECTION

The users collection for the database.

@since 2.0.0

Attributes

auth_mech_properties[R]

@return [ Hash ] The authentication mechanism properties.

auth_source[R]

@return [ String ] The authorization source, either a database or

external name.
database[R]

@return [ String ] The database the user is created in.

mechanism[R]

@return [ Symbol ] The authorization mechanism.

name[R]

@return [ String ] The username.

password[R]

@return [ String ] The cleartext password.

roles[R]

@return [ Array<String> ] roles The user roles.

Public Class Methods

new(options) click to toggle source

Create the new user.

@example Create a new user.

Mongo::Auth::User.new(options)

@param [ Hash ] options The options to create the user from.

@option options [ String ] :auth_source The authorization database or

external source.

@option options [ String ] :database The database the user is

authorized for.

@option options [ String ] :user The user name. @option options [ String ] :password The user's password. @option options [ Symbol ] :auth_mech The authorization mechanism. @option options [ Array<String>, Array<Hash> ] roles The user roles.

@since 2.0.0

# File lib/mongo/auth/user.rb, line 136
def initialize(options)
  @database = options[:database] || Database::ADMIN
  @auth_source = options[:auth_source] || @database
  @name = options[:user]
  @password = options[:password] || options[:pwd]
  @mechanism = options[:auth_mech] || :mongodb_cr
  @auth_mech_properties = options[:auth_mech_properties] || {}
  @roles = options[:roles] || []
end

Public Instance Methods

==(other) click to toggle source

Determine if this user is equal to another.

@example Check user equality.

user == other

@param [ Object ] other The object to compare against.

@return [ true, false ] If the objects are equal.

@since 2.0.0

# File lib/mongo/auth/user.rb, line 62
def ==(other)
  return false unless other.is_a?(User)
  name == other.name && database == other.database && password == other.password
end
auth_key(nonce) click to toggle source

Get an authentication key for the user based on a nonce from the server.

@example Get the authentication key.

user.auth_key(nonce)

@param [ String ] nonce The response from the server.

@return [ String ] The authentication key.

@since 2.0.0

# File lib/mongo/auth/user.rb, line 78
def auth_key(nonce)
  Digest::MD5.hexdigest("#{nonce}#{name}#{hashed_password}")
end
encoded_name() click to toggle source

Get the UTF-8 encoded name with escaped special characters for use with SCRAM authorization.

@example Get the encoded name.

user.encoded_name

@return [ String ] The encoded user name.

@since 2.0.0

# File lib/mongo/auth/user.rb, line 91
def encoded_name
  name.encode(BSON::UTF8).gsub('=','=3D').gsub(',','=2C')
end
hash() click to toggle source

Get the hash key for the user.

@example Get the hash key.

user.hash

@return [ String ] The user hash key.

@since 2.0.0

# File lib/mongo/auth/user.rb, line 103
def hash
  [ name, database, password ].hash
end
hashed_password() click to toggle source

Get the user's hashed password.

@example Get the user's hashed password.

user.hashed_password

@return [ String ] The hashed password.

@since 2.0.0

# File lib/mongo/auth/user.rb, line 115
def hashed_password
  @hashed_password ||= Digest::MD5.hexdigest("#{name}:mongo:#{password}").encode(BSON::UTF8)
end
spec() click to toggle source

Get the specification for the user, used in creation.

@example Get the user's specification.

user.spec

@return [ Hash ] The user spec.

@since 2.0.0

# File lib/mongo/auth/user.rb, line 154
def spec
  { pwd: hashed_password, roles: roles }
end