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 })