Merge branch 'dev' into feature/17-automated_tests
This commit is contained in:
		@@ -2,11 +2,11 @@ import { Body, JsonController, Post } from 'routing-controllers';
 | 
			
		||||
import { OpenAPI, ResponseSchema } from 'routing-controllers-openapi';
 | 
			
		||||
import { IllegalJWTError, InvalidCredentialsError, JwtNotProvidedError, PasswordNeededError, RefreshTokenCountInvalidError, UsernameOrEmailNeededError } from '../errors/AuthError';
 | 
			
		||||
import { UserNotFoundError } from '../errors/UserErrors';
 | 
			
		||||
import { CreateAuth } from '../models/creation/CreateAuth';
 | 
			
		||||
import { HandleLogout } from '../models/creation/HandleLogout';
 | 
			
		||||
import { RefreshAuth } from '../models/creation/RefreshAuth';
 | 
			
		||||
import { Auth } from '../models/responses/Auth';
 | 
			
		||||
import { Logout } from '../models/responses/Logout';
 | 
			
		||||
import { CreateAuth } from '../models/actions/CreateAuth';
 | 
			
		||||
import { HandleLogout } from '../models/actions/HandleLogout';
 | 
			
		||||
import { RefreshAuth } from '../models/actions/RefreshAuth';
 | 
			
		||||
import { Auth } from '../models/responses/ResponseAuth';
 | 
			
		||||
import { Logout } from '../models/responses/ResponseLogout';
 | 
			
		||||
 | 
			
		||||
@JsonController('/auth')
 | 
			
		||||
export class AuthController {
 | 
			
		||||
@@ -25,7 +25,6 @@ export class AuthController {
 | 
			
		||||
		let auth;
 | 
			
		||||
		try {
 | 
			
		||||
			auth = await createAuth.toAuth();
 | 
			
		||||
			console.log(auth);
 | 
			
		||||
		} catch (error) {
 | 
			
		||||
			return error;
 | 
			
		||||
		}
 | 
			
		||||
@@ -44,7 +43,6 @@ export class AuthController {
 | 
			
		||||
		let logout;
 | 
			
		||||
		try {
 | 
			
		||||
			logout = await handleLogout.logout()
 | 
			
		||||
			console.log(logout);
 | 
			
		||||
		} catch (error) {
 | 
			
		||||
			return error;
 | 
			
		||||
		}
 | 
			
		||||
@@ -62,7 +60,6 @@ export class AuthController {
 | 
			
		||||
		let auth;
 | 
			
		||||
		try {
 | 
			
		||||
			auth = await refreshAuth.toAuth();
 | 
			
		||||
			console.log(auth);
 | 
			
		||||
		} catch (error) {
 | 
			
		||||
			return error;
 | 
			
		||||
		}
 | 
			
		||||
 
 | 
			
		||||
@@ -2,8 +2,9 @@ import { Body, Delete, Get, JsonController, OnUndefined, Param, Post, Put, Query
 | 
			
		||||
import { OpenAPI, ResponseSchema } from 'routing-controllers-openapi';
 | 
			
		||||
import { getConnectionManager, Repository } from 'typeorm';
 | 
			
		||||
import { EntityFromBody, EntityFromParam } from 'typeorm-routing-controllers-extensions';
 | 
			
		||||
import { RunnerGroupNeededError, RunnerGroupNotFoundError, RunnerIdsNotMatchingError, RunnerNotFoundError, RunnerOnlyOneGroupAllowedError } from '../errors/RunnerErrors';
 | 
			
		||||
import { CreateRunner } from '../models/creation/CreateRunner';
 | 
			
		||||
import { RunnerGroupNeededError, RunnerIdsNotMatchingError, RunnerNotFoundError } from '../errors/RunnerErrors';
 | 
			
		||||
import { RunnerGroupNotFoundError } from '../errors/RunnerGroupErrors';
 | 
			
		||||
import { CreateRunner } from '../models/actions/CreateRunner';
 | 
			
		||||
import { Runner } from '../models/entities/Runner';
 | 
			
		||||
import { ResponseRunner } from '../models/responses/ResponseRunner';
 | 
			
		||||
 | 
			
		||||
@@ -43,7 +44,6 @@ export class RunnerController {
 | 
			
		||||
 | 
			
		||||
	@Post()
 | 
			
		||||
	@ResponseSchema(ResponseRunner)
 | 
			
		||||
	@ResponseSchema(RunnerOnlyOneGroupAllowedError)
 | 
			
		||||
	@ResponseSchema(RunnerGroupNeededError)
 | 
			
		||||
	@ResponseSchema(RunnerGroupNotFoundError)
 | 
			
		||||
	@OpenAPI({ description: 'Create a new runner object (id will be generated automagicly).' })
 | 
			
		||||
 
 | 
			
		||||
@@ -3,7 +3,7 @@ import { OpenAPI, ResponseSchema } from 'routing-controllers-openapi';
 | 
			
		||||
import { getConnectionManager, Repository } from 'typeorm';
 | 
			
		||||
import { EntityFromBody, EntityFromParam } from 'typeorm-routing-controllers-extensions';
 | 
			
		||||
import { RunnerOrganisationHasRunnersError, RunnerOrganisationHasTeamsError, RunnerOrganisationIdsNotMatchingError, RunnerOrganisationNotFoundError } from '../errors/RunnerOrganisationErrors';
 | 
			
		||||
import { CreateRunnerOrganisation } from '../models/creation/CreateRunnerOrganisation';
 | 
			
		||||
import { CreateRunnerOrganisation } from '../models/actions/CreateRunnerOrganisation';
 | 
			
		||||
import { RunnerOrganisation } from '../models/entities/RunnerOrganisation';
 | 
			
		||||
import { ResponseRunnerOrganisation } from '../models/responses/ResponseRunnerOrganisation';
 | 
			
		||||
import { RunnerController } from './RunnerController';
 | 
			
		||||
 
 | 
			
		||||
@@ -3,7 +3,7 @@ import { OpenAPI, ResponseSchema } from 'routing-controllers-openapi';
 | 
			
		||||
import { getConnectionManager, Repository } from 'typeorm';
 | 
			
		||||
import { EntityFromBody, EntityFromParam } from 'typeorm-routing-controllers-extensions';
 | 
			
		||||
import { RunnerTeamHasRunnersError, RunnerTeamIdsNotMatchingError, RunnerTeamNotFoundError } from '../errors/RunnerTeamErrors';
 | 
			
		||||
import { CreateRunnerTeam } from '../models/creation/CreateRunnerTeam';
 | 
			
		||||
import { CreateRunnerTeam } from '../models/actions/CreateRunnerTeam';
 | 
			
		||||
import { RunnerTeam } from '../models/entities/RunnerTeam';
 | 
			
		||||
import { ResponseRunnerTeam } from '../models/responses/ResponseRunnerTeam';
 | 
			
		||||
import { RunnerController } from './RunnerController';
 | 
			
		||||
 
 | 
			
		||||
@@ -3,7 +3,7 @@ import { OpenAPI, ResponseSchema } from 'routing-controllers-openapi';
 | 
			
		||||
import { getConnectionManager, Repository } from 'typeorm';
 | 
			
		||||
import { EntityFromBody, EntityFromParam } from 'typeorm-routing-controllers-extensions';
 | 
			
		||||
import { TrackIdsNotMatchingError, TrackNotFoundError } from "../errors/TrackErrors";
 | 
			
		||||
import { CreateTrack } from '../models/creation/CreateTrack';
 | 
			
		||||
import { CreateTrack } from '../models/actions/CreateTrack';
 | 
			
		||||
import { Track } from '../models/entities/Track';
 | 
			
		||||
import { ResponseTrack } from '../models/responses/ResponseTrack';
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -2,8 +2,9 @@ import { Body, Delete, Get, JsonController, OnUndefined, Param, Post, Put } from
 | 
			
		||||
import { OpenAPI, ResponseSchema } from 'routing-controllers-openapi';
 | 
			
		||||
import { getConnectionManager, Repository } from 'typeorm';
 | 
			
		||||
import { EntityFromBody, EntityFromParam } from 'typeorm-routing-controllers-extensions';
 | 
			
		||||
import { UserGroupNotFoundError, UserIdsNotMatchingError, UserNotFoundError } from '../errors/UserErrors';
 | 
			
		||||
import { CreateUser } from '../models/creation/CreateUser';
 | 
			
		||||
import { UserIdsNotMatchingError, UserNotFoundError } from '../errors/UserErrors';
 | 
			
		||||
import { UserGroupNotFoundError } from '../errors/UserGroupErrors';
 | 
			
		||||
import { CreateUser } from '../models/actions/CreateUser';
 | 
			
		||||
import { User } from '../models/entities/User';
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -3,7 +3,7 @@ import { OpenAPI, ResponseSchema } from 'routing-controllers-openapi';
 | 
			
		||||
import { getConnectionManager, Repository } from 'typeorm';
 | 
			
		||||
import { EntityFromBody, EntityFromParam } from 'typeorm-routing-controllers-extensions';
 | 
			
		||||
import { UserGroupIdsNotMatchingError, UserGroupNotFoundError } from '../errors/UserGroupErrors';
 | 
			
		||||
import { CreateUserGroup } from '../models/creation/CreateUserGroup';
 | 
			
		||||
import { CreateUserGroup } from '../models/actions/CreateUserGroup';
 | 
			
		||||
import { UserGroup } from '../models/entities/UserGroup';
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,9 @@
 | 
			
		||||
import { IsString } from 'class-validator';
 | 
			
		||||
import { NotAcceptableError, NotFoundError } from 'routing-controllers';
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Error to throw, when to provided address doesn't belong to the accepted types.
 | 
			
		||||
 */
 | 
			
		||||
export class AddressWrongTypeError extends NotAcceptableError {
 | 
			
		||||
	@IsString()
 | 
			
		||||
	name = "AddressWrongTypeError"
 | 
			
		||||
@@ -9,6 +12,9 @@ export class AddressWrongTypeError extends NotAcceptableError {
 | 
			
		||||
	message = "The address must be an existing adress's id. \n You provided a object of another type."
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Error to throw, when a non-existant address get's loaded.
 | 
			
		||||
 */
 | 
			
		||||
export class AddressNotFoundError extends NotFoundError {
 | 
			
		||||
	@IsString()
 | 
			
		||||
	name = "AddressNotFoundError"
 | 
			
		||||
 
 | 
			
		||||
@@ -2,7 +2,7 @@ import { IsString } from 'class-validator';
 | 
			
		||||
import { ForbiddenError, NotAcceptableError, NotFoundError, UnauthorizedError } from 'routing-controllers';
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Error to throw when a jwt is expired
 | 
			
		||||
 * Error to throw when a jwt is expired.
 | 
			
		||||
 */
 | 
			
		||||
export class ExpiredJWTError extends UnauthorizedError {
 | 
			
		||||
	@IsString()
 | 
			
		||||
@@ -13,7 +13,7 @@ export class ExpiredJWTError extends UnauthorizedError {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Error to throw when a jwt could not be parsed
 | 
			
		||||
 * Error to throw when a jwt could not be parsed.
 | 
			
		||||
 */
 | 
			
		||||
export class IllegalJWTError extends UnauthorizedError {
 | 
			
		||||
	@IsString()
 | 
			
		||||
@@ -24,7 +24,7 @@ export class IllegalJWTError extends UnauthorizedError {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Error to throw when user is nonexistant or refreshtoken is invalid
 | 
			
		||||
 * Error to throw when user is nonexistant or refreshtoken is invalid.
 | 
			
		||||
 */
 | 
			
		||||
export class UserNonexistantOrRefreshtokenInvalidError extends UnauthorizedError {
 | 
			
		||||
	@IsString()
 | 
			
		||||
@@ -35,7 +35,7 @@ export class UserNonexistantOrRefreshtokenInvalidError extends UnauthorizedError
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Error to throw when provided credentials are invalid
 | 
			
		||||
 * Error to throw when provided credentials are invalid.
 | 
			
		||||
 */
 | 
			
		||||
export class InvalidCredentialsError extends UnauthorizedError {
 | 
			
		||||
	@IsString()
 | 
			
		||||
@@ -46,7 +46,7 @@ export class InvalidCredentialsError extends UnauthorizedError {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Error to throw when a jwt does not have permission for this route/ action
 | 
			
		||||
 * Error to throw when a jwt does not have permission for this route/action.
 | 
			
		||||
 */
 | 
			
		||||
export class NoPermissionError extends ForbiddenError {
 | 
			
		||||
	@IsString()
 | 
			
		||||
@@ -57,7 +57,7 @@ export class NoPermissionError extends ForbiddenError {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Error to thow when no username and no email is set
 | 
			
		||||
 * Error to throw when no username and no email is set.
 | 
			
		||||
 */
 | 
			
		||||
export class UsernameOrEmailNeededError extends NotAcceptableError {
 | 
			
		||||
	@IsString()
 | 
			
		||||
@@ -68,7 +68,7 @@ export class UsernameOrEmailNeededError extends NotAcceptableError {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Error to thow when no password is provided
 | 
			
		||||
 * Error to throw when no password is provided.
 | 
			
		||||
 */
 | 
			
		||||
export class PasswordNeededError extends NotAcceptableError {
 | 
			
		||||
	@IsString()
 | 
			
		||||
@@ -79,7 +79,7 @@ export class PasswordNeededError extends NotAcceptableError {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Error to thow when no user could be found for provided credential
 | 
			
		||||
 * Error to throw when no user could be found mating the provided credential.
 | 
			
		||||
 */
 | 
			
		||||
export class UserNotFoundError extends NotFoundError {
 | 
			
		||||
	@IsString()
 | 
			
		||||
@@ -90,7 +90,7 @@ export class UserNotFoundError extends NotFoundError {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Error to thow when no jwt token was provided
 | 
			
		||||
 * Error to throw when no jwt token was provided (but one had to be).
 | 
			
		||||
 */
 | 
			
		||||
export class JwtNotProvidedError extends NotAcceptableError {
 | 
			
		||||
	@IsString()
 | 
			
		||||
@@ -101,7 +101,7 @@ export class JwtNotProvidedError extends NotAcceptableError {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Error to thow when user was not found or refresh token count was invalid
 | 
			
		||||
 * Error to throw when user was not found or refresh token count was invalid.
 | 
			
		||||
 */
 | 
			
		||||
export class UserNotFoundOrRefreshTokenCountInvalidError extends NotAcceptableError {
 | 
			
		||||
	@IsString()
 | 
			
		||||
@@ -112,7 +112,7 @@ export class UserNotFoundOrRefreshTokenCountInvalidError extends NotAcceptableEr
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Error to thow when refresh token count was invalid
 | 
			
		||||
 * Error to throw when refresh token count was invalid
 | 
			
		||||
 */
 | 
			
		||||
export class RefreshTokenCountInvalidError extends NotAcceptableError {
 | 
			
		||||
	@IsString()
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,9 @@
 | 
			
		||||
import { IsString } from 'class-validator';
 | 
			
		||||
import { NotAcceptableError, NotFoundError } from 'routing-controllers';
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Error to throw, when a provided groupContact doesn't belong to the accepted types.
 | 
			
		||||
 */
 | 
			
		||||
export class GroupContactWrongTypeError extends NotAcceptableError {
 | 
			
		||||
	@IsString()
 | 
			
		||||
	name = "GroupContactWrongTypeError"
 | 
			
		||||
@@ -9,6 +12,9 @@ export class GroupContactWrongTypeError extends NotAcceptableError {
 | 
			
		||||
	message = "The groupContact must be an existing groupContact's id. \n You provided a object of another type."
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Error to throw, when a non-existant groupContact get's loaded.
 | 
			
		||||
 */
 | 
			
		||||
export class GroupContactNotFoundError extends NotFoundError {
 | 
			
		||||
	@IsString()
 | 
			
		||||
	name = "GroupContactNotFoundError"
 | 
			
		||||
 
 | 
			
		||||
@@ -26,27 +26,13 @@ export class RunnerIdsNotMatchingError extends NotAcceptableError {
 | 
			
		||||
	message = "The id's don't match!! \n And if you wanted to change a runner's id: This isn't allowed"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export class RunnerOnlyOneGroupAllowedError extends NotAcceptableError {
 | 
			
		||||
	@IsString()
 | 
			
		||||
	name = "RunnerOnlyOneGroupAllowedError"
 | 
			
		||||
 | 
			
		||||
	@IsString()
 | 
			
		||||
	message = "Runner's can only be part of one group (team or organisiation)! \n You provided an id for both."
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Error to throw when a runner is missing his group association.
 | 
			
		||||
 */
 | 
			
		||||
export class RunnerGroupNeededError extends NotAcceptableError {
 | 
			
		||||
	@IsString()
 | 
			
		||||
	name = "RunnerGroupNeededError"
 | 
			
		||||
 | 
			
		||||
	@IsString()
 | 
			
		||||
	message = "Runner's need to be part of one group (team or organisiation)! \n You provided neither."
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
export class RunnerGroupNotFoundError extends NotFoundError {
 | 
			
		||||
	@IsString()
 | 
			
		||||
	name = "RunnerGroupNotFoundError"
 | 
			
		||||
 | 
			
		||||
	@IsString()
 | 
			
		||||
	message = "The group you provided couldn't be located in the system. \n Please check your request."
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										14
									
								
								src/errors/RunnerGroupErrors.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								src/errors/RunnerGroupErrors.ts
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,14 @@
 | 
			
		||||
import { IsString } from 'class-validator';
 | 
			
		||||
import { NotFoundError } from 'routing-controllers';
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Error to throw when a runner group couldn't be found.
 | 
			
		||||
 * Implemented this ways to work with the json-schema conversion for openapi.
 | 
			
		||||
 */
 | 
			
		||||
export class RunnerGroupNotFoundError extends NotFoundError {
 | 
			
		||||
	@IsString()
 | 
			
		||||
	name = "RunnerGroupNotFoundError"
 | 
			
		||||
 | 
			
		||||
	@IsString()
 | 
			
		||||
	message = "RunnerGroup not found!"
 | 
			
		||||
}
 | 
			
		||||
@@ -50,6 +50,9 @@ export class RunnerOrganisationHasTeamsError extends NotAcceptableError {
 | 
			
		||||
	message = "This organisation still has teams associated with it. \n If you want to delete this organisation with all it's runners and teams ass `?force` to your query."
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Error to throw, when a provided runnerOrganisation doesn't belong to the accepted types.
 | 
			
		||||
 */
 | 
			
		||||
export class RunnerOrganisationWrongTypeError extends NotAcceptableError {
 | 
			
		||||
	@IsString()
 | 
			
		||||
	name = "RunnerOrganisationWrongTypeError"
 | 
			
		||||
 
 | 
			
		||||
@@ -1,16 +1,6 @@
 | 
			
		||||
import { IsString } from 'class-validator';
 | 
			
		||||
import { NotAcceptableError, NotFoundError } from 'routing-controllers';
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Error to throw when a usergroup couldn't be found.
 | 
			
		||||
 */
 | 
			
		||||
export class UserGroupNotFoundError extends NotFoundError {
 | 
			
		||||
	@IsString()
 | 
			
		||||
	name = "UserGroupNotFoundError"
 | 
			
		||||
 | 
			
		||||
	@IsString()
 | 
			
		||||
	message = "User Group not found!"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Error to throw when no username or email is set
 | 
			
		||||
 
 | 
			
		||||
@@ -1,5 +1,8 @@
 | 
			
		||||
import { createConnection } from "typeorm";
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Loader for the database that creates the database connection and initializes the database tabels.
 | 
			
		||||
 */
 | 
			
		||||
export default async () => {
 | 
			
		||||
    const connection = await createConnection();
 | 
			
		||||
    connection.synchronize();
 | 
			
		||||
 
 | 
			
		||||
@@ -1,7 +1,9 @@
 | 
			
		||||
import { Application } from "express";
 | 
			
		||||
import bodyParser from 'body-parser';
 | 
			
		||||
import cors from 'cors';
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Loader for express related configurations.
 | 
			
		||||
 * Currently only enables the proxy trust.
 | 
			
		||||
 */
 | 
			
		||||
export default async (app: Application) => {
 | 
			
		||||
	app.enable('trust proxy');
 | 
			
		||||
	return app;
 | 
			
		||||
 
 | 
			
		||||
@@ -1,8 +1,11 @@
 | 
			
		||||
import { Application } from "express";
 | 
			
		||||
import databaseLoader from "./database";
 | 
			
		||||
import expressLoader from "./express";
 | 
			
		||||
import openapiLoader from "./openapi";
 | 
			
		||||
import databaseLoader from "./database";
 | 
			
		||||
import { Application } from "express";
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Index Loader that executes the other loaders in the right order.
 | 
			
		||||
 */
 | 
			
		||||
export default async (app: Application) => {
 | 
			
		||||
    await databaseLoader();
 | 
			
		||||
    await openapiLoader(app);
 | 
			
		||||
 
 | 
			
		||||
@@ -4,11 +4,16 @@ import { getMetadataArgsStorage } from "routing-controllers";
 | 
			
		||||
import { routingControllersToSpec } from "routing-controllers-openapi";
 | 
			
		||||
import * as swaggerUiExpress from "swagger-ui-express";
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Loader for everything openapi related - from creating the schema to serving it via a static route.
 | 
			
		||||
 */
 | 
			
		||||
export default async (app: Application) => {
 | 
			
		||||
  const storage = getMetadataArgsStorage();
 | 
			
		||||
  const schemas = validationMetadatasToSchemas({
 | 
			
		||||
    refPointerPrefix: "#/components/schemas/",
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
  //Spec creation based on the previously created schemas
 | 
			
		||||
  const spec = routingControllersToSpec(
 | 
			
		||||
    storage,
 | 
			
		||||
    {
 | 
			
		||||
@@ -32,6 +37,8 @@ export default async (app: Application) => {
 | 
			
		||||
      },
 | 
			
		||||
    }
 | 
			
		||||
  );
 | 
			
		||||
 | 
			
		||||
  //Options for swaggerUiExpress
 | 
			
		||||
  const options = {
 | 
			
		||||
    explorer: true,
 | 
			
		||||
  };
 | 
			
		||||
 
 | 
			
		||||
@@ -1,20 +1,14 @@
 | 
			
		||||
import {
 | 
			
		||||
    Middleware,
 | 
			
		||||
    ExpressErrorMiddlewareInterface
 | 
			
		||||
} from "routing-controllers";
 | 
			
		||||
import { ExpressErrorMiddlewareInterface, Middleware } from "routing-controllers";
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Our Error handling middlware that returns our custom httperrors to the user
 | 
			
		||||
 */
 | 
			
		||||
@Middleware({ type: "after" })
 | 
			
		||||
export class ErrorHandler implements ExpressErrorMiddlewareInterface {
 | 
			
		||||
    public error(
 | 
			
		||||
        error: any,
 | 
			
		||||
        request: any,
 | 
			
		||||
        response: any,
 | 
			
		||||
        next: (err: any) => any
 | 
			
		||||
    ) {
 | 
			
		||||
    public error(error: any, request: any, response: any, next: (err: any) => any) {
 | 
			
		||||
        if (response.headersSent) {
 | 
			
		||||
            return;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        response.json(error);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -5,7 +5,7 @@ import { getConnectionManager } from 'typeorm';
 | 
			
		||||
import { InvalidCredentialsError, PasswordNeededError, UserNotFoundError } from '../../errors/AuthError';
 | 
			
		||||
import { UsernameOrEmailNeededError } from '../../errors/UserErrors';
 | 
			
		||||
import { User } from '../entities/User';
 | 
			
		||||
import { Auth } from '../responses/Auth';
 | 
			
		||||
import { Auth } from '../responses/ResponseAuth';
 | 
			
		||||
 | 
			
		||||
export class CreateAuth {
 | 
			
		||||
    @IsOptional()
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
import { IsInt } from 'class-validator';
 | 
			
		||||
import { getConnectionManager } from 'typeorm';
 | 
			
		||||
import { RunnerGroupNotFoundError } from '../../errors/RunnerErrors';
 | 
			
		||||
import { RunnerGroupNotFoundError } from '../../errors/RunnerGroupErrors';
 | 
			
		||||
import { RunnerOrganisationWrongTypeError } from '../../errors/RunnerOrganisationErrors';
 | 
			
		||||
import { RunnerTeamNeedsParentError } from '../../errors/RunnerTeamErrors';
 | 
			
		||||
import { Runner } from '../entities/Runner';
 | 
			
		||||
@@ -2,7 +2,8 @@ import * as argon2 from "argon2";
 | 
			
		||||
import { IsEmail, IsOptional, IsPhoneNumber, IsString } from 'class-validator';
 | 
			
		||||
import { getConnectionManager } from 'typeorm';
 | 
			
		||||
import * as uuid from 'uuid';
 | 
			
		||||
import { UserGroupNotFoundError, UsernameOrEmailNeededError } from '../../errors/UserErrors';
 | 
			
		||||
import { UsernameOrEmailNeededError } from '../../errors/UserErrors';
 | 
			
		||||
import { UserGroupNotFoundError } from '../../errors/UserGroupErrors';
 | 
			
		||||
import { User } from '../entities/User';
 | 
			
		||||
import { UserGroup } from '../entities/UserGroup';
 | 
			
		||||
 | 
			
		||||
@@ -3,7 +3,7 @@ import * as jsonwebtoken from 'jsonwebtoken';
 | 
			
		||||
import { getConnectionManager } from 'typeorm';
 | 
			
		||||
import { IllegalJWTError, JwtNotProvidedError, RefreshTokenCountInvalidError, UserNotFoundError } from '../../errors/AuthError';
 | 
			
		||||
import { User } from '../entities/User';
 | 
			
		||||
import { Logout } from '../responses/Logout';
 | 
			
		||||
import { Logout } from '../responses/ResponseLogout';
 | 
			
		||||
 | 
			
		||||
export class HandleLogout {
 | 
			
		||||
    @IsString()
 | 
			
		||||
@@ -3,7 +3,7 @@ import * as jsonwebtoken from 'jsonwebtoken';
 | 
			
		||||
import { getConnectionManager } from 'typeorm';
 | 
			
		||||
import { IllegalJWTError, JwtNotProvidedError, RefreshTokenCountInvalidError, UserNotFoundError } from '../../errors/AuthError';
 | 
			
		||||
import { User } from '../entities/User';
 | 
			
		||||
import { Auth } from '../responses/Auth';
 | 
			
		||||
import { Auth } from '../responses/ResponseAuth';
 | 
			
		||||
 | 
			
		||||
export class RefreshAuth {
 | 
			
		||||
    @IsString()
 | 
			
		||||
		Reference in New Issue
	
	Block a user