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
JavaScript
;
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