71 lines
1.5 KiB
TypeScript
71 lines
1.5 KiB
TypeScript
import { personModel } from './personModel';
|
|
import { roleModel } from './roleModel';
|
|
|
|
enum SigningMethods {
|
|
Password = 'password',
|
|
MagicLink = 'magic-link',
|
|
Passkeys = 'passkeys',
|
|
Google = 'google',
|
|
Meta = 'meta',
|
|
Apple = 'apple',
|
|
Microsoft = 'microsoft',
|
|
}
|
|
|
|
class userModel extends personModel {
|
|
constructor(
|
|
public override id: string,
|
|
public email: string,
|
|
public password: string,
|
|
public override name: string,
|
|
public role: roleModel[],
|
|
public createdAt: Date,
|
|
public updatedAt: Date,
|
|
public isLoggedIn: boolean,
|
|
public preferredSigningMethod: SigningMethods = SigningMethods.Password
|
|
) {
|
|
super({
|
|
id,
|
|
name,
|
|
profilePicture: null,
|
|
avatar: null,
|
|
socialMedia: null,
|
|
});
|
|
}
|
|
|
|
get isAdmin(): boolean {
|
|
return this.role.some((role) => role.isAdmin);
|
|
}
|
|
|
|
get isContentManager(): boolean {
|
|
return this.role.some((role) => role.isContentManager);
|
|
}
|
|
|
|
get isUser(): boolean {
|
|
return this.role.some((role) => role.isUser);
|
|
}
|
|
|
|
public static readonly DefaultUser: userModel = new userModel(
|
|
'0',
|
|
'default@example.com',
|
|
'',
|
|
'Default User',
|
|
[roleModel.UserRole],
|
|
new Date(),
|
|
new Date(),
|
|
false
|
|
);
|
|
|
|
public static readonly TestAdminUser: userModel = new userModel(
|
|
'-1',
|
|
'testadmin@example.com',
|
|
'password',
|
|
'Test Admin User',
|
|
[roleModel.AdminRole],
|
|
new Date(),
|
|
new Date(),
|
|
true
|
|
);
|
|
}
|
|
|
|
export { SigningMethods, userModel };
|