Exception: Mongo::Auth::Unauthorized

Inherits:
Error::AuthError show all
Defined in:
build/ruby-driver-master/lib/mongo/auth.rb

Overview

Raised when a user is not authorized on a database.

Since:

  • 2.0.0

Instance Attribute Summary

Attributes included from Error::Notable

#generation, #service_id

Instance Method Summary collapse

Methods included from Error::Notable

#add_note, #notes, #to_s

Constructor Details

#initialize(user, used_mechanism: nil, message: nil, server: nil) ⇒ Unauthorized

Instantiate the new error.

Examples:

Instantiate the error.

Mongo::Auth::Unauthorized.new(user)

Parameters:

  • user (Mongo::Auth::User)

    The unauthorized user.

  • used_mechanism (String) (defaults to: nil)

    Auth mechanism actually used for authentication. This is a full string like SCRAM-SHA-256.

  • message (String) (defaults to: nil)

    The error message returned by the server.

  • server (Server) (defaults to: nil)

    The server instance that authentication was attempted against.

Since:

  • 2.0.0



144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
# File 'build/ruby-driver-master/lib/mongo/auth.rb', line 144

def initialize(user, used_mechanism: nil, message: nil,
  server: nil
)
  configured_bits = []
  used_bits = [
    "auth source: #{user.auth_source}",
  ]

  if user.mechanism
    configured_bits << "mechanism: #{user.mechanism}"
  end

  if used_mechanism
    used_bits << "used mechanism: #{used_mechanism}"
  end

  if server
    used_bits << "used server: #{server.address} (#{server.status})"
  end

  used_user = if user.mechanism == :mongodb_x509
    'Client certificate'
  else
    "User #{user.name}"
  end

  if configured_bits.empty?
    configured_bits = ''
  else
    configured_bits = " (#{configured_bits.join(', ')})"
  end

  used_bits = " (#{used_bits.join(', ')})"

  msg = "#{used_user}#{configured_bits} is not authorized to access #{user.database}#{used_bits}"
  if message
    msg += ': ' + message
  end
  super(msg)
end