@loopback/authentication
Version:
A LoopBack component for authentication support.
118 lines • 5.02 kB
JavaScript
;
// Copyright IBM Corp. and LoopBack contributors 2017,2020. All Rights Reserved.
// Node module: @loopback/authentication
// This file is licensed under the MIT License.
// License text available at https://opensource.org/licenses/MIT
Object.defineProperty(exports, "__esModule", { value: true });
exports.AUTHENTICATION_METADATA_CLASS_KEY = exports.AUTHENTICATION_METADATA_KEY = exports.AUTHENTICATION_METADATA_METHOD_KEY = exports.AuthenticationBindings = void 0;
const core_1 = require("@loopback/core");
const security_1 = require("@loopback/security");
/**
* Binding keys used by this component.
*/
var AuthenticationBindings;
(function (AuthenticationBindings) {
AuthenticationBindings.COMPONENT = core_1.BindingKey.create('components.AuthenticationComponent');
/**
* Key used to bind a user profile factory to the context for any
* consumer to use when they need to convert a user object
* into a slimmer user profile object
*
* @example
* ```ts
* server
* .bind(AuthenticationBindings.USER_PROFILE_FACTORY)
* .to(myUserProfileFactory);
* ```
*/
/* eslint-disable @typescript-eslint/no-explicit-any */
AuthenticationBindings.USER_PROFILE_FACTORY = core_1.BindingKey.create('authentication.userProfileFactory');
/**
* Key used to bind an authentication strategy or multiple strategies
* to the context for the authentication function to use.
*
* @example
* ```ts
* server
* .bind(AuthenticationBindings.STRATEGY)
* .toProvider(MyAuthenticationStrategy);
* ```
*/
AuthenticationBindings.STRATEGY = core_1.BindingKey.create('authentication.strategy');
/**
* Key used to inject the authentication function into the sequence.
*
* @example
* ```ts
* class MySequence implements SequenceHandler {
* constructor(
* @inject(AuthenticationBindings.AUTH_ACTION)
* protected authenticateRequest: AuthenticateFn,
* // ... other sequence action injections
* ) {}
*
* async handle(context: RequestContext) {
* try {
* const {request, response} = context;
* const route = this.findRoute(request);
*
* // Authenticate
* await this.authenticateRequest(request);
*
* // Authentication successful, proceed to invoke controller
* const args = await this.parseParams(request, route);
* const result = await this.invoke(route, args);
* this.send(response, result);
* } catch (err) {
* this.reject(context, err);
* }
* }
* }
* ```
*/
AuthenticationBindings.AUTH_ACTION = core_1.BindingKey.create('authentication.actions.authenticate');
/**
* Binding key for AUTHENTICATION_MIDDLEWARE
*/
AuthenticationBindings.AUTHENTICATION_MIDDLEWARE = core_1.BindingKey.create('middleware.authentication');
/**
* Key used to inject authentication metadata, which is used to determine
* whether a request requires authentication or not.
*
* @example
* ```ts
* class MyPassportStrategyProvider implements Provider<Strategy | undefined> {
* constructor(
* @inject(AuthenticationBindings.METADATA)
* private metadata?: AuthenticationMetadata[],
* ) {}
* value(): ValueOrPromise<Strategy | undefined> {
* if (this.metadata?.length) {
* // logic to determine which authentication strategy to return
* }
* }
* }
* ```
*/
AuthenticationBindings.METADATA = core_1.BindingKey.create('authentication.operationMetadata');
AuthenticationBindings.AUTHENTICATION_STRATEGY_EXTENSION_POINT_NAME = 'authentication.strategies';
// Make `CURRENT_USER` the alias of SecurityBindings.USER for backward compatibility
AuthenticationBindings.CURRENT_USER = security_1.SecurityBindings.USER;
// Redirect url for authenticating current user
AuthenticationBindings.AUTHENTICATION_REDIRECT_URL = core_1.BindingKey.create('authentication.redirect.url');
// Authentication redirect status, usually 302 or 303, indicates a web client will redirect
AuthenticationBindings.AUTHENTICATION_REDIRECT_STATUS = core_1.BindingKey.create('authentication.redirect.status');
})(AuthenticationBindings || (exports.AuthenticationBindings = AuthenticationBindings = {}));
/**
* The key used to store method-level metadata for `@authenticate`
*/
exports.AUTHENTICATION_METADATA_METHOD_KEY = core_1.MetadataAccessor.create('authentication:method');
/**
* Alias for AUTHENTICATION_METADATA_METHOD_KEY to keep it backward compatible
*/
exports.AUTHENTICATION_METADATA_KEY = exports.AUTHENTICATION_METADATA_METHOD_KEY;
/**
* The key used to store class-level metadata for `@authenticate`
*/
exports.AUTHENTICATION_METADATA_CLASS_KEY = core_1.MetadataAccessor.create('authentication:class');
//# sourceMappingURL=keys.js.map