@antelopejs/auth-jwt
Version:
Authentication and authorization module that implements the Auth interface of antelopejs with JWT
64 lines • 3.12 kB
JavaScript
;
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