@@ -1,5 +1,6 @@
 | 
			
		||||
import { IsInt, IsOptional } from 'class-validator';
 | 
			
		||||
import { Entity, OneToMany, PrimaryGeneratedColumn, TableInheritance } from 'typeorm';
 | 
			
		||||
import { ResponsePrincipal } from '../responses/ResponsePrincipal';
 | 
			
		||||
import { Permission } from './Permission';
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
@@ -21,4 +22,6 @@ export abstract class Principal {
 | 
			
		||||
  @IsOptional()
 | 
			
		||||
  @OneToMany(() => Permission, permission => permission.principal, { nullable: true })
 | 
			
		||||
  permissions?: Permission[];
 | 
			
		||||
 | 
			
		||||
  public abstract toResponse(): ResponsePrincipal;
 | 
			
		||||
}
 | 
			
		||||
@@ -1,6 +1,8 @@
 | 
			
		||||
import { IsBoolean, IsEmail, IsInt, IsNotEmpty, IsOptional, IsPhoneNumber, IsString, IsUUID } from "class-validator";
 | 
			
		||||
import { ChildEntity, Column, JoinTable, ManyToMany, OneToMany } from "typeorm";
 | 
			
		||||
import { config } from '../../config';
 | 
			
		||||
import { ResponsePrincipal } from '../responses/ResponsePrincipal';
 | 
			
		||||
import { ResponseUser } from '../responses/ResponseUser';
 | 
			
		||||
import { Permission } from './Permission';
 | 
			
		||||
import { Principal } from './Principal';
 | 
			
		||||
import { UserAction } from './UserAction';
 | 
			
		||||
@@ -126,4 +128,8 @@ export class User extends Principal {
 | 
			
		||||
    })
 | 
			
		||||
    return final_permissions
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  public toResponse(): ResponsePrincipal {
 | 
			
		||||
    return new ResponseUser(this);
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -4,6 +4,8 @@ import {
 | 
			
		||||
  IsString
 | 
			
		||||
} from "class-validator";
 | 
			
		||||
import { ChildEntity, Column } from "typeorm";
 | 
			
		||||
import { ResponsePrincipal } from '../responses/ResponsePrincipal';
 | 
			
		||||
import { ResponseUserGroup } from '../responses/ResponseUserGroup';
 | 
			
		||||
import { Principal } from './Principal';
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
@@ -27,4 +29,8 @@ export class UserGroup extends Principal {
 | 
			
		||||
  @IsOptional()
 | 
			
		||||
  @IsString()
 | 
			
		||||
  description?: string;
 | 
			
		||||
 | 
			
		||||
  public toResponse(): ResponsePrincipal {
 | 
			
		||||
    return new ResponseUserGroup(this);
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
@@ -4,9 +4,9 @@ import {
 | 
			
		||||
    IsObject
 | 
			
		||||
} from "class-validator";
 | 
			
		||||
import { Permission } from '../entities/Permission';
 | 
			
		||||
import { Principal } from '../entities/Principal';
 | 
			
		||||
import { PermissionAction } from '../enums/PermissionAction';
 | 
			
		||||
import { PermissionTarget } from '../enums/PermissionTargets';
 | 
			
		||||
import { ResponsePrincipal } from './ResponsePrincipal';
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Defines a track of given length.
 | 
			
		||||
@@ -23,7 +23,7 @@ export class ResponsePermission {
 | 
			
		||||
     */
 | 
			
		||||
    @IsObject()
 | 
			
		||||
    @IsNotEmpty()
 | 
			
		||||
    principal: Principal;
 | 
			
		||||
    principal: ResponsePrincipal;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * The permissions's target.
 | 
			
		||||
@@ -39,7 +39,7 @@ export class ResponsePermission {
 | 
			
		||||
 | 
			
		||||
    public constructor(permission: Permission) {
 | 
			
		||||
        this.id = permission.id;
 | 
			
		||||
        this.principal = permission.principal;
 | 
			
		||||
        this.principal = permission.principal.toResponse();
 | 
			
		||||
        this.target = permission.target;
 | 
			
		||||
        this.action = permission.action;
 | 
			
		||||
    }
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										45
									
								
								src/models/responses/ResponseUserGroup.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										45
									
								
								src/models/responses/ResponseUserGroup.ts
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,45 @@
 | 
			
		||||
import {
 | 
			
		||||
    IsArray,
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    IsNotEmpty,
 | 
			
		||||
 | 
			
		||||
    IsOptional,
 | 
			
		||||
    IsString
 | 
			
		||||
} from "class-validator";
 | 
			
		||||
import { Permission } from '../entities/Permission';
 | 
			
		||||
import { UserGroup } from '../entities/UserGroup';
 | 
			
		||||
import { ResponsePrincipal } from './ResponsePrincipal';
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Defines a user response.
 | 
			
		||||
*/
 | 
			
		||||
export class ResponseUserGroup extends ResponsePrincipal {
 | 
			
		||||
    /**
 | 
			
		||||
     * The group's name
 | 
			
		||||
     */
 | 
			
		||||
    @IsNotEmpty()
 | 
			
		||||
    @IsString()
 | 
			
		||||
    name: string;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * The group's description
 | 
			
		||||
     */
 | 
			
		||||
    @IsOptional()
 | 
			
		||||
    @IsString()
 | 
			
		||||
    description?: string;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * permissions
 | 
			
		||||
     */
 | 
			
		||||
    @IsArray()
 | 
			
		||||
    @IsOptional()
 | 
			
		||||
    permissions: Permission[];
 | 
			
		||||
 | 
			
		||||
    public constructor(group: UserGroup) {
 | 
			
		||||
        super(group);
 | 
			
		||||
        this.name = group.name;
 | 
			
		||||
        this.description = group.description;
 | 
			
		||||
        this.permissions = group.permissions;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user