mirror of
https://github.com/nvms/prsm.git
synced 2025-12-17 08:30:53 +00:00
107 lines
2.1 KiB
TypeScript
107 lines
2.1 KiB
TypeScript
import {
|
|
Column,
|
|
CreateDateColumn,
|
|
DeleteDateColumn,
|
|
Entity,
|
|
Index,
|
|
PrimaryGeneratedColumn,
|
|
UpdateDateColumn,
|
|
} from "typeorm";
|
|
|
|
export const AuthStatus = {
|
|
Normal: 0,
|
|
Archived: 1,
|
|
Banned: 2,
|
|
Locked: 3,
|
|
PendingReview: 4,
|
|
Suspended: 5,
|
|
} as const;
|
|
|
|
export const AuthRole = {
|
|
Admin: 1,
|
|
Author: 2,
|
|
Collaborator: 4,
|
|
Consultant: 8,
|
|
Consumer: 16,
|
|
Contributor: 32,
|
|
Coordinator: 64,
|
|
Creator: 128,
|
|
Developer: 256,
|
|
Director: 512,
|
|
Editor: 1024,
|
|
Employee: 2048,
|
|
Maintainer: 4096,
|
|
Manager: 8192,
|
|
Moderator: 16384,
|
|
Publisher: 32768,
|
|
Reviewer: 65536,
|
|
Subscriber: 131072,
|
|
SuperAdmin: 262144,
|
|
SuperEditor: 524288,
|
|
SuperModerator: 1048576,
|
|
Translator: 2097152,
|
|
// XX: 4194304,
|
|
// XX: 8388608,
|
|
// XX: 16777216,
|
|
// XX: 33554432,
|
|
// XX: 67108864,
|
|
// XX: 134217728,
|
|
// XX: 268435456,
|
|
// XX: 536870912,
|
|
} as const;
|
|
|
|
const createMapFromEnum = (enumObj: Record<string, number>) => {
|
|
return Object.fromEntries(
|
|
Object.entries(enumObj).map(([key, value]) => [value, key]),
|
|
);
|
|
};
|
|
|
|
export const getStatusMap = () => createMapFromEnum(AuthStatus);
|
|
export const getRoleMap = () => createMapFromEnum(AuthRole);
|
|
|
|
@Entity("users")
|
|
export class User {
|
|
@PrimaryGeneratedColumn("increment", { type: "int" })
|
|
id: number;
|
|
|
|
@Column({ type: "varchar", length: 50, nullable: true })
|
|
@Index()
|
|
username: string;
|
|
|
|
@Column({ type: "varchar", length: 100, unique: true })
|
|
email: string;
|
|
|
|
@Column({ type: "varchar", length: 1000 })
|
|
password: string;
|
|
|
|
@Column({ type: "int", default: AuthStatus.Normal })
|
|
status: number;
|
|
|
|
@Column({ type: "boolean", default: false })
|
|
verified: boolean;
|
|
|
|
@Column({ type: "boolean", default: true })
|
|
resettable: boolean;
|
|
|
|
@Column({ type: "int", default: 0 })
|
|
rolemask: number;
|
|
|
|
@Column({ type: "datetime" })
|
|
registered: Date;
|
|
|
|
@Column({ type: "datetime", nullable: true })
|
|
lastLogin: Date;
|
|
|
|
@Column({ type: "int", default: 0 })
|
|
forceLogout: number;
|
|
|
|
@CreateDateColumn({ type: "datetime" })
|
|
createdAt: Date;
|
|
|
|
@UpdateDateColumn({ type: "datetime" })
|
|
updatedAt: Date;
|
|
|
|
@DeleteDateColumn({ type: "datetime" })
|
|
deletedAt: Date;
|
|
}
|