UNPKG

@antelopejs/auth-jwt

Version:

Authentication and authorization module that implements the Auth interface of antelopejs with JWT

64 lines 3.12 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Authentication = exports.internal = void 0; exports.ValidateRaw = ValidateRaw; exports.SignRaw = SignRaw; exports.SignServerResponse = SignServerResponse; exports.CreateAuthDecorator = CreateAuthDecorator; const beta_1 = require("@ajs/core/beta"); const decorators_1 = require("@ajs/core/beta/decorators"); const beta_2 = require("@ajs/api/beta"); var internal; (function (internal) { internal.Verify = (0, beta_1.InterfaceFunction)(); internal.Sign = (0, beta_1.InterfaceFunction)(); function defaultSource(req) { if (req.headers['x-antelopejs-auth']) { return req.headers['x-antelopejs-auth']; } if (req.headers['cookie']) { const match = (' ' + req.headers['cookie']).match(/ ANTELOPEJS_AUTH=([^;]*)/); if (match) { return match[1]; } } return undefined; } internal.defaultSource = defaultSource; internal.defaultAuthenticator = ValidateRaw; async function CheckAuthentication(req, res, source = undefined, authenticator = undefined, authenticatorOptions = undefined, validator = undefined) { const data = await (authenticator || internal.defaultAuthenticator)((source || defaultSource)(req, res), authenticatorOptions); return validator ? await validator(data) : data; } internal.CheckAuthentication = CheckAuthentication; })(internal || (exports.internal = internal = {})); function ValidateRaw(token, options) { return internal.Verify(token, options); } function SignRaw(data, options) { return internal.Sign(data, options); } function SignServerResponse(res, data, signOptions, cookieOptions) { const opts = cookieOptions ? Object.keys(cookieOptions) .map((key) => `${key}=${cookieOptions[key]}`) .join('; ') : ''; return SignRaw(data, signOptions).then((data) => res.setHeader('Set-Cookie', `ANTELOPEJS_AUTH=${data}; ${opts}`)); } function CreateAuthDecorator(callbacks) { const source = callbacks.source || internal.defaultSource; const authenticator = callbacks.authenticator || internal.defaultAuthenticator; const authenticatorOptions = callbacks.authenticatorOptions || {}; const defaultValidator = callbacks.validator; return (0, decorators_1.MakeParameterAndMethodAndPropertyAndClassDecorator)((target, key, index, validator) => { if (typeof index === 'object' || key === undefined) { (0, beta_2.SetParameterProvider)(target, Symbol(''), undefined, (context) => internal.CheckAuthentication(context.rawRequest, context.rawResponse, source, authenticator, authenticatorOptions, validator || defaultValidator)); } else { (0, beta_2.SetParameterProvider)(target, key, index, (context) => internal.CheckAuthentication(context.rawRequest, context.rawResponse, source, authenticator, authenticatorOptions, validator || defaultValidator)); } }); } exports.Authentication = CreateAuthDecorator({}); //# sourceMappingURL=index.js.map