UNPKG

lbx-jwt

Version:

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

84 lines 2.84 kB
"use strict"; var BaseUser_1; Object.defineProperty(exports, "__esModule", { value: true }); exports.BaseUser = void 0; const tslib_1 = require("tslib"); const core_1 = require("@loopback/core"); const repository_1 = require("@loopback/repository"); const biometric_credentials_model_1 = require("./biometric-credentials.model"); const credentials_model_1 = require("./credentials.model"); const keys_1 = require("../keys"); /** * The base user model with data that all user types share. */ let BaseUser = BaseUser_1 = class BaseUser extends repository_1.Entity { constructor(data) { super(data); BaseUser_1.definition.properties['roles'].jsonSchema = { items: { enum: this.roleValues } }; } }; exports.BaseUser = BaseUser; tslib_1.__decorate([ (0, repository_1.property)({ type: 'string', required: true, defaultFn: 'uuidv4', id: true }), tslib_1.__metadata("design:type", String) ], BaseUser.prototype, "id", void 0); tslib_1.__decorate([ (0, repository_1.property)({ type: 'string', required: true, index: { unique: true }, jsonSchema: { format: 'email' } }), tslib_1.__metadata("design:type", String) ], BaseUser.prototype, "email", 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) ], BaseUser.prototype, "roles", void 0); tslib_1.__decorate([ (0, repository_1.property)({ type: 'boolean', required: false }), tslib_1.__metadata("design:type", Boolean) ], BaseUser.prototype, "twoFactorEnabled", void 0); tslib_1.__decorate([ (0, repository_1.property)({ type: 'boolean', required: false }), tslib_1.__metadata("design:type", Boolean) ], BaseUser.prototype, "requiresPasswordChange", void 0); tslib_1.__decorate([ (0, repository_1.hasOne)(() => credentials_model_1.Credentials), tslib_1.__metadata("design:type", credentials_model_1.Credentials) ], BaseUser.prototype, "credentials", void 0); tslib_1.__decorate([ (0, repository_1.hasMany)(() => biometric_credentials_model_1.BiometricCredentials), tslib_1.__metadata("design:type", Array) ], BaseUser.prototype, "biometricCredentials", void 0); tslib_1.__decorate([ (0, core_1.inject)(keys_1.LbxJwtBindings.ROLES), tslib_1.__metadata("design:type", Array) ], BaseUser.prototype, "roleValues", void 0); exports.BaseUser = BaseUser = BaseUser_1 = tslib_1.__decorate([ (0, repository_1.model)(), tslib_1.__metadata("design:paramtypes", [Object]) ], BaseUser); //# sourceMappingURL=base-user.model.js.map