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