parent
8ef5f90abd
commit
6b7ecd3044
@ -1,7 +1,7 @@
|
|||||||
import { Authorized, Body, Delete, Get, JsonController, OnUndefined, Param, Post, Put, QueryParam } from 'routing-controllers';
|
import { Authorized, Body, Delete, Get, JsonController, OnUndefined, Param, Post, Put, QueryParam } from 'routing-controllers';
|
||||||
import { OpenAPI, ResponseSchema } from 'routing-controllers-openapi';
|
import { OpenAPI, ResponseSchema } from 'routing-controllers-openapi';
|
||||||
import { getConnectionManager, Repository } from 'typeorm';
|
import { getConnectionManager, Repository } from 'typeorm';
|
||||||
import { UserIdsNotMatchingError, UsernameContainsIllegalCharacterError, UserNotFoundError } from '../errors/UserErrors';
|
import { UserDeletionNotConfirmedError, UserIdsNotMatchingError, UsernameContainsIllegalCharacterError, UserNotFoundError } from '../errors/UserErrors';
|
||||||
import { UserGroupNotFoundError } from '../errors/UserGroupErrors';
|
import { UserGroupNotFoundError } from '../errors/UserGroupErrors';
|
||||||
import { CreateUser } from '../models/actions/create/CreateUser';
|
import { CreateUser } from '../models/actions/create/CreateUser';
|
||||||
import { UpdateUser } from '../models/actions/update/UpdateUser';
|
import { UpdateUser } from '../models/actions/update/UpdateUser';
|
||||||
@ -105,9 +105,11 @@ export class UserController {
|
|||||||
@Authorized("USER:DELETE")
|
@Authorized("USER:DELETE")
|
||||||
@ResponseSchema(ResponseUser)
|
@ResponseSchema(ResponseUser)
|
||||||
@ResponseSchema(ResponseEmpty, { statusCode: 204 })
|
@ResponseSchema(ResponseEmpty, { statusCode: 204 })
|
||||||
|
@ResponseSchema(UserDeletionNotConfirmedError, { statusCode: 406 })
|
||||||
@OnUndefined(204)
|
@OnUndefined(204)
|
||||||
@OpenAPI({ description: 'Delete the user whose id you provided. <br> If there are any permissions directly granted to the user they will get deleted as well. <br> If no user with this id exists it will just return 204(no content).' })
|
@OpenAPI({ description: 'Delete the user whose id you provided. <br> You have to confirm your decision by providing the ?force=true query param. <br> If there are any permissions directly granted to the user they will get deleted as well. <br> If no user with this id exists it will just return 204(no content).' })
|
||||||
async remove(@Param("id") id: number, @QueryParam("force") force: boolean) {
|
async remove(@Param("id") id: number, @QueryParam("force") force: boolean) {
|
||||||
|
if (!force) { throw new UserDeletionNotConfirmedError; }
|
||||||
let user = await this.userRepository.findOne({ id: id });
|
let user = await this.userRepository.findOne({ id: id });
|
||||||
if (!user) { return null; }
|
if (!user) { return null; }
|
||||||
const responseUser = await this.userRepository.findOne({ id: id }, { relations: ['permissions', 'groups', 'groups.permissions'] });;
|
const responseUser = await this.userRepository.findOne({ id: id }, { relations: ['permissions', 'groups', 'groups.permissions'] });;
|
||||||
|
@ -60,3 +60,15 @@ export class UserIdsNotMatchingError extends NotAcceptableError {
|
|||||||
@IsString()
|
@IsString()
|
||||||
message = "The ids don't match!! \n And if you wanted to change a user's id: This isn't allowed!"
|
message = "The ids don't match!! \n And if you wanted to change a user's id: This isn't allowed!"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Error to throw when two users' ids don't match.
|
||||||
|
* Usually occurs when a user tries to change a user's id.
|
||||||
|
*/
|
||||||
|
export class UserDeletionNotConfirmedError extends NotAcceptableError {
|
||||||
|
@IsString()
|
||||||
|
name = "UserDeletionNotConfirmedError"
|
||||||
|
|
||||||
|
@IsString()
|
||||||
|
message = "You are trying to delete a user! \n If you're sure about doing this: provide the ?force=true query param."
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user