Files
mmorales.photo/front/v2/src/models/userModel.ts
2025-08-24 14:18:20 +02:00

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