Added dto for Admin Panel, moved UserRole to dto
This commit is contained in:
parent
c83319c300
commit
9923593a6f
@ -1,3 +1,8 @@
|
|||||||
export * as Requests from './requests';
|
export * as Requests from './requests';
|
||||||
export * as Responses from './responses';
|
export * as Responses from './responses';
|
||||||
export { validateSync, validateAsync, validateAsyncInline } from './utils';
|
export {
|
||||||
|
UserRole,
|
||||||
|
validateSync,
|
||||||
|
validateAsync,
|
||||||
|
validateAsyncInline
|
||||||
|
} from './utils';
|
||||||
|
17
dto/src/requests/admin.ts
Normal file
17
dto/src/requests/admin.ts
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
import { BaseRequest } from './base';
|
||||||
|
import { IsEnum, IsNumber } from 'class-validator';
|
||||||
|
import { UserRole } from '../utils';
|
||||||
|
|
||||||
|
class AdminRequest extends BaseRequest {
|
||||||
|
@IsNumber()
|
||||||
|
user: number;
|
||||||
|
}
|
||||||
|
|
||||||
|
export class SetUserRole extends AdminRequest {
|
||||||
|
@IsEnum(UserRole)
|
||||||
|
role: UserRole;
|
||||||
|
}
|
||||||
|
|
||||||
|
export class LogoutAll extends AdminRequest {}
|
||||||
|
export class DeleteUser extends AdminRequest {}
|
||||||
|
export class DisableTfa extends AdminRequest {}
|
@ -1,3 +1,4 @@
|
|||||||
export * from './base';
|
export * from './base';
|
||||||
export * as Auth from './auth';
|
export * as Auth from './auth';
|
||||||
export * as FS from './fs';
|
export * as FS from './fs';
|
||||||
|
export * as Admin from './admin';
|
||||||
|
61
dto/src/responses/admin.ts
Normal file
61
dto/src/responses/admin.ts
Normal file
@ -0,0 +1,61 @@
|
|||||||
|
import { SuccessResponse } from './base';
|
||||||
|
import {
|
||||||
|
IsArray,
|
||||||
|
IsBoolean,
|
||||||
|
IsEnum,
|
||||||
|
IsNotEmpty,
|
||||||
|
IsNumber,
|
||||||
|
IsString,
|
||||||
|
ValidateNested
|
||||||
|
} from 'class-validator';
|
||||||
|
import { UserRole, ValidateConstructor } from '../utils';
|
||||||
|
|
||||||
|
@ValidateConstructor
|
||||||
|
export class GetUsersEntry {
|
||||||
|
constructor(
|
||||||
|
id: number,
|
||||||
|
gitlab: boolean,
|
||||||
|
name: string,
|
||||||
|
role: UserRole,
|
||||||
|
tfaEnabled: boolean
|
||||||
|
) {
|
||||||
|
this.id = id;
|
||||||
|
this.gitlab = gitlab;
|
||||||
|
this.name = name;
|
||||||
|
this.role = role;
|
||||||
|
this.tfaEnabled = tfaEnabled;
|
||||||
|
}
|
||||||
|
|
||||||
|
@IsNumber()
|
||||||
|
id: number;
|
||||||
|
|
||||||
|
@IsBoolean()
|
||||||
|
gitlab: boolean;
|
||||||
|
|
||||||
|
@IsString()
|
||||||
|
@IsNotEmpty()
|
||||||
|
name: string;
|
||||||
|
|
||||||
|
@IsEnum(UserRole)
|
||||||
|
role: UserRole;
|
||||||
|
|
||||||
|
@IsBoolean()
|
||||||
|
tfaEnabled: boolean;
|
||||||
|
}
|
||||||
|
|
||||||
|
@ValidateConstructor
|
||||||
|
export class GetUsers extends SuccessResponse {
|
||||||
|
constructor(users: GetUsersEntry[]) {
|
||||||
|
super();
|
||||||
|
this.users = users;
|
||||||
|
}
|
||||||
|
|
||||||
|
@IsArray()
|
||||||
|
@ValidateNested({ each: true })
|
||||||
|
users: GetUsersEntry[];
|
||||||
|
}
|
||||||
|
|
||||||
|
export class LogoutAllUser extends SuccessResponse {}
|
||||||
|
export class DeleteUser extends SuccessResponse {}
|
||||||
|
export class SetUserRole extends SuccessResponse {}
|
||||||
|
export class DisableTfa extends SuccessResponse {}
|
@ -2,3 +2,4 @@ export * from './base';
|
|||||||
export * as Auth from './auth';
|
export * as Auth from './auth';
|
||||||
export * as FS from './fs';
|
export * as FS from './fs';
|
||||||
export * as User from './user';
|
export * as User from './user';
|
||||||
|
export * as Admin from './admin';
|
||||||
|
@ -1,5 +1,11 @@
|
|||||||
import { validate, validateSync as _validateSync } from 'class-validator';
|
import { validate, validateSync as _validateSync } from 'class-validator';
|
||||||
|
|
||||||
|
export enum UserRole {
|
||||||
|
ADMIN = 2,
|
||||||
|
USER = 1,
|
||||||
|
DISABLED = 0
|
||||||
|
}
|
||||||
|
|
||||||
export function validateSync<T extends object>(data: T): void {
|
export function validateSync<T extends object>(data: T): void {
|
||||||
const errors = _validateSync(data);
|
const errors = _validateSync(data);
|
||||||
if (errors.length > 0) {
|
if (errors.length > 0) {
|
||||||
|
@ -1,12 +1,13 @@
|
|||||||
import { Controller, Get, Module } from '@nestjs/common';
|
import { Controller, Get, Module } from '@nestjs/common';
|
||||||
import { TypeOrmModule } from '@nestjs/typeorm';
|
import { TypeOrmModule } from '@nestjs/typeorm';
|
||||||
import { INode, JWTToken, User, UserRole } from './entities';
|
import { INode, JWTToken, User } from './entities';
|
||||||
import FileSystemModule from './modules/filesystem';
|
import FileSystemModule from './modules/filesystem';
|
||||||
import { JWTAuthGuard, Role, RoleGuard } from './authguards';
|
import { JWTAuthGuard, Role, RoleGuard } from './authguards';
|
||||||
import AuthModule from './modules/auth';
|
import AuthModule from './modules/auth';
|
||||||
import { ServeStaticModule } from '@nestjs/serve-static';
|
import { ServeStaticModule } from '@nestjs/serve-static';
|
||||||
import { join } from 'path';
|
import { join } from 'path';
|
||||||
import { cwd } from 'process';
|
import { cwd } from 'process';
|
||||||
|
import { UserRole } from 'dto';
|
||||||
|
|
||||||
declare const PROD: boolean | undefined;
|
declare const PROD: boolean | undefined;
|
||||||
|
|
||||||
|
@ -6,7 +6,8 @@ import {
|
|||||||
} from '@nestjs/common';
|
} from '@nestjs/common';
|
||||||
import { AuthGuard } from '@nestjs/passport';
|
import { AuthGuard } from '@nestjs/passport';
|
||||||
import { Reflector } from '@nestjs/core';
|
import { Reflector } from '@nestjs/core';
|
||||||
import { User, UserRole } from './entities';
|
import { User } from './entities';
|
||||||
|
import { UserRole } from 'dto';
|
||||||
|
|
||||||
const IS_PUBLIC_KEY = 'isPublic';
|
const IS_PUBLIC_KEY = 'isPublic';
|
||||||
export const Public = () => SetMetadata(IS_PUBLIC_KEY, true);
|
export const Public = () => SetMetadata(IS_PUBLIC_KEY, true);
|
||||||
|
@ -9,9 +9,8 @@ import {
|
|||||||
StreamableFile,
|
StreamableFile,
|
||||||
ValidationPipe
|
ValidationPipe
|
||||||
} from '@nestjs/common';
|
} from '@nestjs/common';
|
||||||
import { Responses, Requests, validateAsyncInline } from 'dto';
|
import { Responses, Requests, validateAsyncInline, UserRole } from 'dto';
|
||||||
import FileSystemService from 'services/filesystem';
|
import FileSystemService from 'services/filesystem';
|
||||||
import { UserRole } from 'entities';
|
|
||||||
import { Role } from 'authguards';
|
import { Role } from 'authguards';
|
||||||
|
|
||||||
@Controller('api/fs')
|
@Controller('api/fs')
|
||||||
|
@ -6,12 +6,7 @@ import {
|
|||||||
OneToMany,
|
OneToMany,
|
||||||
OneToOne
|
OneToOne
|
||||||
} from 'typeorm';
|
} from 'typeorm';
|
||||||
|
import { UserRole } from 'dto';
|
||||||
export enum UserRole {
|
|
||||||
ADMIN = 2,
|
|
||||||
USER = 1,
|
|
||||||
DISABLED = 0
|
|
||||||
}
|
|
||||||
|
|
||||||
export enum tfaTypes {
|
export enum tfaTypes {
|
||||||
NONE = 0,
|
NONE = 0,
|
||||||
|
@ -4,11 +4,12 @@ import {
|
|||||||
UnauthorizedException
|
UnauthorizedException
|
||||||
} from '@nestjs/common';
|
} from '@nestjs/common';
|
||||||
import { InjectRepository } from '@nestjs/typeorm';
|
import { InjectRepository } from '@nestjs/typeorm';
|
||||||
import { JWTToken, User, UserRole } from 'entities';
|
import { JWTToken, User } from 'entities';
|
||||||
import { LessThanOrEqual, Repository } from 'typeorm';
|
import { LessThanOrEqual, Repository } from 'typeorm';
|
||||||
import * as argon2 from 'argon2';
|
import * as argon2 from 'argon2';
|
||||||
import FileSystemService from 'services/filesystem';
|
import FileSystemService from 'services/filesystem';
|
||||||
import * as jwt from 'jsonwebtoken';
|
import * as jwt from 'jsonwebtoken';
|
||||||
|
import { UserRole } from 'dto';
|
||||||
|
|
||||||
export const jwtSecret = 'CUM';
|
export const jwtSecret = 'CUM';
|
||||||
|
|
||||||
|
@ -1,9 +1,10 @@
|
|||||||
import { User, UserRole } from 'entities';
|
import { User } from 'entities';
|
||||||
import { FastifyRequest } from 'fastify';
|
import { FastifyRequest } from 'fastify';
|
||||||
import axios from 'axios';
|
import axios from 'axios';
|
||||||
import * as argon2 from 'argon2';
|
import * as argon2 from 'argon2';
|
||||||
import { ForbiddenException, UnauthorizedException } from '@nestjs/common';
|
import { ForbiddenException, UnauthorizedException } from '@nestjs/common';
|
||||||
import TfaAuthService from './tfa';
|
import TfaAuthService from './tfa';
|
||||||
|
import { UserRole } from 'dto';
|
||||||
|
|
||||||
const GITLAB_ID =
|
const GITLAB_ID =
|
||||||
'98bcbad78cb1f880d1d1de62291d70a791251a7bea077bfe7df111ef3c115760';
|
'98bcbad78cb1f880d1d1de62291d70a791251a7bea077bfe7df111ef3c115760';
|
||||||
|
Loading…
Reference in New Issue
Block a user