UNPKG

lbx-jwt

Version:

Provides JWT authentication for loopback applications. Includes storing roles inside tokens and handling refreshing. Built-in reuse detection.

80 lines 2.65 kB
"use strict"; var AuthData_1; Object.defineProperty(exports, "__esModule", { value: true }); exports.AuthData = void 0; const tslib_1 = require("tslib"); const core_1 = require("@loopback/core"); const repository_1 = require("@loopback/repository"); const rest_1 = require("@loopback/rest"); const keys_1 = require("../../keys"); const models_1 = require("../../models"); /** * The authentication data that is send to the user. * This is needed eg. To Display navigation elements only if the user has the required role. */ let AuthData = AuthData_1 = class AuthData extends repository_1.Model { constructor(data) { super(data); AuthData_1.definition.properties['roles'].jsonSchema = { items: { enum: this.roleValues } }; } }; exports.AuthData = AuthData; tslib_1.__decorate([ (0, repository_1.property)({ type: models_1.Jwt, required: true }), tslib_1.__metadata("design:type", models_1.Jwt) ], AuthData.prototype, "accessToken", void 0); tslib_1.__decorate([ (0, repository_1.property)({ type: models_1.Jwt, required: true }), tslib_1.__metadata("design:type", models_1.Jwt) ], AuthData.prototype, "refreshToken", void 0); tslib_1.__decorate([ (0, repository_1.property)({ type: 'array', itemType: 'string', required: true // json schema restricting to certain roles is set in constructor. }), tslib_1.__metadata("design:type", Array) ], AuthData.prototype, "roles", void 0); tslib_1.__decorate([ (0, repository_1.property)({ type: 'boolean', required: true }), tslib_1.__metadata("design:type", Boolean) ], AuthData.prototype, "twoFactorEnabled", void 0); tslib_1.__decorate([ (0, repository_1.property)({ type: 'array', itemType: 'object', required: false, jsonSchema: (0, rest_1.getJsonSchema)(models_1.BiometricCredentials) }), tslib_1.__metadata("design:type", Array) ], AuthData.prototype, "biometricCredentials", void 0); tslib_1.__decorate([ (0, repository_1.property)({ type: 'string', required: true }), tslib_1.__metadata("design:type", String) ], AuthData.prototype, "userId", void 0); tslib_1.__decorate([ (0, core_1.inject)(keys_1.LbxJwtBindings.ROLES), tslib_1.__metadata("design:type", Array) ], AuthData.prototype, "roleValues", void 0); exports.AuthData = AuthData = AuthData_1 = tslib_1.__decorate([ (0, repository_1.model)(), tslib_1.__metadata("design:paramtypes", [Object]) ], AuthData); //# sourceMappingURL=auth-data.model.js.map