Files
schedule-parser-next/src/users/entity/user.entity.ts
2024-12-20 23:02:58 +04:00

84 lines
1.3 KiB
TypeScript

import {
IsEnum,
IsJWT,
IsMongoId,
IsObject,
IsOptional,
IsSemVer,
IsString,
MaxLength,
MinLength,
} from "class-validator";
import { Type } from "class-transformer";
import { UserRole } from "../user-role.enum";
import { FcmUser } from "./fcm-user.entity";
export class User {
/**
* Идентификатор (ObjectId)
* @example "66e1b7e255c5d5f1268cce90"
*/
@IsMongoId()
id: string;
/**
* Имя
* @example "n08i40k"
*/
@IsString()
@MinLength(1)
@MaxLength(20)
username: string;
/**
* Соль пароля
* @example "$2b$08$34xwFv1WVJpvpVi3tZZuv."
*/
@IsString()
salt: string;
/**
* Хеш пароля
* @example "$2b$08$34xwFv1WVJpvpVi3tZZuv."
*/
@IsString()
password: string;
/**
* Последний токен доступа
* @example "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXCJ9..."
*/
@IsJWT()
accessToken: string;
/**
* Группа
* @example "ИС-214/23"
*/
@IsString()
group: string;
/**
* Роль
* @example STUDENT
*/
@IsEnum(UserRole)
role: UserRole;
/**
* Данные Firebase Cloud Messaging
*/
@IsObject()
@Type(() => FcmUser)
@IsOptional()
fcm?: FcmUser;
/**
* Версия установленного приложения
* @example "2.0.0"
*/
@IsSemVer()
version: string;
}