class Mongo::Auth::User::View
Defines behavior for user related operation on databases.
@since 2.0.0
Attributes
@return [ Database
] database The view's database.
Public Class Methods
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 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
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 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 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
# 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
# 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