- aded npm packages @types/qrcode, qrcode and node-f2a
Some checks failed
CI Pipeline / japa-tests (push) Failing after 53s
Some checks failed
CI Pipeline / japa-tests (push) Failing after 53s
- corrected UsersController.ts and RoleController.ts with correct routes for settings - added migration script and ui and Controller for 2 Factor Authentication - npm updates
This commit is contained in:
parent
87e9314b00
commit
c70fa4a0d8
16 changed files with 1098 additions and 417 deletions
|
@ -6,6 +6,7 @@ import Database from '@ioc:Adonis/Lucid/Database';
|
|||
import Config from '@ioc:Adonis/Core/Config';
|
||||
import Dataset from './Dataset';
|
||||
import BaseModel from './BaseModel';
|
||||
import Encryption from '@ioc:Adonis/Core/Encryption';
|
||||
|
||||
// export default interface IUser {
|
||||
// id: number;
|
||||
|
@ -44,6 +45,22 @@ export default class User extends BaseModel {
|
|||
@column.dateTime({ autoCreate: true, autoUpdate: true })
|
||||
public updatedAt: DateTime;
|
||||
|
||||
// serializeAs: null removes the model properties from the serialized output.
|
||||
@column({
|
||||
serializeAs: null,
|
||||
consume: (value: string) => (value ? JSON.parse(Encryption.decrypt(value) ?? '{}') : null),
|
||||
prepare: (value: string) => Encryption.encrypt(JSON.stringify(value)),
|
||||
})
|
||||
public twoFactorSecret?: string;
|
||||
|
||||
// serializeAs: null removes the model properties from the serialized output.
|
||||
@column({
|
||||
serializeAs: null,
|
||||
consume: (value: string) => (value ? JSON.parse(Encryption.decrypt(value) ?? '[]') : []),
|
||||
prepare: (value: string[]) => Encryption.encrypt(JSON.stringify(value)),
|
||||
})
|
||||
public twoFactorRecoveryCodes?: string[];
|
||||
|
||||
@beforeSave()
|
||||
public static async hashPassword(user) {
|
||||
if (user.$dirty.password) {
|
||||
|
@ -51,6 +68,10 @@ export default class User extends BaseModel {
|
|||
}
|
||||
}
|
||||
|
||||
public get isTwoFactorEnabled() {
|
||||
return Boolean(this?.twoFactorSecret);
|
||||
}
|
||||
|
||||
@manyToMany(() => Role, {
|
||||
pivotForeignKey: 'account_id',
|
||||
pivotRelatedForeignKey: 'role_id',
|
||||
|
|
Loading…
Add table
editor.link_modal.header
Reference in a new issue