Implemented registration key generation

ref #112
This commit is contained in:
Nicolai Ort 2021-01-21 17:48:13 +01:00
parent d490247d1e
commit ad446500f9
3 changed files with 54 additions and 3 deletions

View File

@ -1,8 +1,10 @@
import { IsObject, IsOptional } from 'class-validator';
import { IsBoolean, IsObject, IsOptional } from 'class-validator';
import * as uuid from 'uuid';
import { Address } from '../../entities/Address';
import { RunnerOrganisation } from '../../entities/RunnerOrganisation';
import { CreateRunnerGroup } from './CreateRunnerGroup';
/**
* This classed is used to create a new RunnerOrganisation entity from a json body (post request).
*/
@ -14,6 +16,13 @@ export class CreateRunnerOrganisation extends CreateRunnerGroup {
@IsObject()
address?: Address;
/**
* Is registration enabled for the new organisation?
*/
@IsOptional()
@IsBoolean()
registrtionEnabled?: boolean = false;
/**
* Creates a new RunnerOrganisation entity from this.
*/
@ -25,6 +34,10 @@ export class CreateRunnerOrganisation extends CreateRunnerGroup {
newRunnerOrganisation.address = this.address;
Address.validate(newRunnerOrganisation.address);
if (this.registrtionEnabled) {
newRunnerOrganisation.key = uuid.v4().toUpperCase();
}
return newRunnerOrganisation;
}
}

View File

@ -1,4 +1,5 @@
import { IsInt, IsObject, IsOptional } from 'class-validator';
import { IsBoolean, IsInt, IsNotEmpty, IsObject, IsOptional } from 'class-validator';
import * as uuid from 'uuid';
import { Address } from '../../entities/Address';
import { RunnerOrganisation } from '../../entities/RunnerOrganisation';
import { CreateRunnerGroup } from '../create/CreateRunnerGroup';
@ -22,6 +23,13 @@ export class UpdateRunnerOrganisation extends CreateRunnerGroup {
@IsObject()
address?: Address;
/**
* Is registration enabled for the updated organisation?
*/
@IsNotEmpty()
@IsBoolean()
registrtionEnabled: boolean;
/**
* Updates a provided RunnerOrganisation entity based on this.
*/
@ -33,6 +41,13 @@ export class UpdateRunnerOrganisation extends CreateRunnerGroup {
else { organisation.address = this.address; }
Address.validate(organisation.address);
if (this.registrtionEnabled) {
organisation.key = uuid.v4().toUpperCase();
}
else {
organisation.key = null;
}
return organisation;
}
}

View File

@ -1,8 +1,13 @@
import {
IsArray,
IsBase64,
IsBoolean,
IsObject,
IsOptional
IsOptional,
IsString
} from "class-validator";
import { Address } from '../entities/Address';
import { RunnerOrganisation } from '../entities/RunnerOrganisation';
@ -27,6 +32,22 @@ export class ResponseRunnerOrganisation extends ResponseRunnerGroup {
@IsArray()
teams: RunnerTeam[];
/**
* The organisation's registration key.
* If registration is disabled this is null.
*/
@IsString()
@IsOptional()
@IsBase64()
registrationKey?: string;
/**
* Is registration enabled for the organisation?
*/
@IsOptional()
@IsBoolean()
registrtionEnabled?: boolean = true;
/**
* Creates a ResponseRunnerOrganisation object from a runnerOrganisation.
* @param org The runnerOrganisation the response shall be build for.
@ -35,5 +56,7 @@ export class ResponseRunnerOrganisation extends ResponseRunnerGroup {
super(org);
this.address = org.address;
this.teams = org.teams;
if (!org.key) { this.registrtionEnabled = false; }
else { this.registrationKey = Buffer.from(org.key).toString('base64'); }
}
}