diff --git a/src/controllers/RunnerSelfServiceController.ts b/src/controllers/RunnerSelfServiceController.ts index bd1556e..e3d6868 100644 --- a/src/controllers/RunnerSelfServiceController.ts +++ b/src/controllers/RunnerSelfServiceController.ts @@ -34,6 +34,21 @@ export class RunnerSelfServiceController { return (new ResponseSelfServiceRunner(await this.getRunner(token))); } + @Post('/register') + @ResponseSchema(ResponseSelfServiceRunner) + @ResponseSchema(RunnerGroupNotFoundError, { statusCode: 404 }) + @OpenAPI({ description: 'Create a new selfservice runner in the citizen org.
This endpoint shoud be used to allow "everyday citizen" to register themselves.
In the future we\'ll implement email verification.' }) + async registerRunner(@Body({ validate: true }) createRunner: CreateSelfServiceRunner) { + const org = await this.groupRepository.findOne({ id: 1 }); + if (!org) { throw new RunnerGroupNotFoundError(); } + + let runner = await createRunner.toEntity(org); + runner.group = org; + + runner = await this.runnerRepository.save(runner); + return new ResponseSelfServiceRunner(await this.runnerRepository.findOne(runner, { relations: ['scans', 'group', 'scans.track', 'cards', 'distanceDonations', 'distanceDonations.donor', 'distanceDonations.runner', 'distanceDonations.runner.scans', 'distanceDonations.runner.scans.track'] })); + } + @Post('/register/:token') @ResponseSchema(ResponseSelfServiceRunner) @ResponseSchema(RunnerGroupNotFoundError, { statusCode: 404 })