From d7099717c2eee8aaf1b580345717cc5acc06dbd2 Mon Sep 17 00:00:00 2001 From: Nicolai Ort Date: Sat, 6 Mar 2021 13:23:01 +0100 Subject: [PATCH] Created basic endpoint for user forgotten mails ref #154 --- .../RunnerSelfServiceController.ts | 20 ++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/src/controllers/RunnerSelfServiceController.ts b/src/controllers/RunnerSelfServiceController.ts index 8b1f30c..9264555 100644 --- a/src/controllers/RunnerSelfServiceController.ts +++ b/src/controllers/RunnerSelfServiceController.ts @@ -1,5 +1,5 @@ import * as jwt from "jsonwebtoken"; -import { Body, Get, JsonController, OnUndefined, Param, Post } from 'routing-controllers'; +import { Body, Get, JsonController, OnUndefined, Param, Post, QueryParam } from 'routing-controllers'; import { OpenAPI, ResponseSchema } from 'routing-controllers-openapi'; import { getConnectionManager, Repository } from 'typeorm'; import { config } from '../config'; @@ -12,6 +12,7 @@ import { CreateSelfServiceRunner } from '../models/actions/create/CreateSelfServ import { Runner } from '../models/entities/Runner'; import { RunnerGroup } from '../models/entities/RunnerGroup'; import { RunnerOrganization } from '../models/entities/RunnerOrganization'; +import { ResponseEmpty } from '../models/responses/ResponseEmpty'; import { ResponseSelfServiceOrganisation } from '../models/responses/ResponseSelfServiceOrganisation'; import { ResponseSelfServiceRunner } from '../models/responses/ResponseSelfServiceRunner'; import { ResponseSelfServiceScan } from '../models/responses/ResponseSelfServiceScan'; @@ -53,6 +54,23 @@ export class RunnerSelfServiceController { return responseScans; } + @Post('/runners/me/forgot') + @ResponseSchema(ResponseSelfServiceRunner, { isArray: true }) + @ResponseSchema(RunnerNotFoundError, { statusCode: 404 }) + @OnUndefined(ResponseEmpty) + @OpenAPI({ description: 'TODO' }) + async requestNewToken(@QueryParam('mail') mail: string) { + const runner = await this.runnerRepository.findOne({ email: mail }); + if (runner.resetRequestedTimestamp > (Math.floor(Date.now() / 1000) - 15 * 60)) { throw new Error("timeout!") } + const token = JwtCreator.createSelfService(runner); + try { + //await Mailer.sendForgottenMail(); + } catch (error) { + throw new Error("Mail fucked up"); + } + return { token }; + } + @Post('/runners/register') @ResponseSchema(ResponseSelfServiceRunner) @ResponseSchema(RunnerEmailNeededError, { statusCode: 406 })