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