You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
47 lines
1.4 KiB
JavaScript
47 lines
1.4 KiB
JavaScript
10 months ago
|
"use strict";
|
||
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||
|
exports.AuthProvider = exports.AuthContext = void 0;
|
||
|
const error_1 = require("../../error");
|
||
|
/**
|
||
|
* Context used during authentication
|
||
|
* @internal
|
||
|
*/
|
||
|
class AuthContext {
|
||
|
constructor(connection, credentials, options) {
|
||
|
/** If the context is for reauthentication. */
|
||
|
this.reauthenticating = false;
|
||
|
this.connection = connection;
|
||
|
this.credentials = credentials;
|
||
|
this.options = options;
|
||
|
}
|
||
|
}
|
||
|
exports.AuthContext = AuthContext;
|
||
|
class AuthProvider {
|
||
|
/**
|
||
|
* Prepare the handshake document before the initial handshake.
|
||
|
*
|
||
|
* @param handshakeDoc - The document used for the initial handshake on a connection
|
||
|
* @param authContext - Context for authentication flow
|
||
|
*/
|
||
|
async prepare(handshakeDoc, _authContext) {
|
||
|
return handshakeDoc;
|
||
|
}
|
||
|
/**
|
||
|
* Reauthenticate.
|
||
|
* @param context - The shared auth context.
|
||
|
*/
|
||
|
async reauth(context) {
|
||
|
if (context.reauthenticating) {
|
||
|
throw new error_1.MongoRuntimeError('Reauthentication already in progress.');
|
||
|
}
|
||
|
try {
|
||
|
context.reauthenticating = true;
|
||
|
await this.auth(context);
|
||
|
}
|
||
|
finally {
|
||
|
context.reauthenticating = false;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
exports.AuthProvider = AuthProvider;
|
||
|
//# sourceMappingURL=auth_provider.js.map
|