From db744e5f317f2f234ba693696d474ce2869bd40c Mon Sep 17 00:00:00 2001 From: Fabrice Lecomte Date: Wed, 22 Jan 2020 00:08:17 +0100 Subject: [PATCH] respond 404 on email not found on sso connect --- src/main/kotlin/fr/dcproject/messages/SsoManager.kt | 7 ++++++- src/main/kotlin/fr/dcproject/routes/Auth.kt | 6 +++++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/src/main/kotlin/fr/dcproject/messages/SsoManager.kt b/src/main/kotlin/fr/dcproject/messages/SsoManager.kt index fc4a53e..a02c959 100644 --- a/src/main/kotlin/fr/dcproject/messages/SsoManager.kt +++ b/src/main/kotlin/fr/dcproject/messages/SsoManager.kt @@ -14,7 +14,7 @@ class SsoManager( private val citizenRepo: CitizenRepository ) { fun sendMail(email: String, url: String) { - val citizen = citizenRepo.findByEmail(email) ?: error("No Citizen with this email") + val citizen = citizenRepo.findByEmail(email) ?: noEmail(email) mailer.sendEmail { Mail( Email("sso@$domain"), @@ -38,4 +38,9 @@ class SsoManager( urlObject.parameters.append("token", JwtConfig.makeToken(citizen.user ?: error("Citizen must have User"))) return "Copy this link into your browser for connect to $domain: \n${urlObject.buildString()}" } + + class EmailNotFound(val email: String) : Exception() { + override val message: String = "No Citizen with this email : $email" + } + private fun noEmail(email: String): Nothing = throw EmailNotFound(email) } \ No newline at end of file diff --git a/src/main/kotlin/fr/dcproject/routes/Auth.kt b/src/main/kotlin/fr/dcproject/routes/Auth.kt index 3536fd1..0b55932 100644 --- a/src/main/kotlin/fr/dcproject/routes/Auth.kt +++ b/src/main/kotlin/fr/dcproject/routes/Auth.kt @@ -59,7 +59,11 @@ fun Route.auth( post { val content = call.receive() - ssoManager.sendMail(content.email, content.url) + try { + ssoManager.sendMail(content.email, content.url) + } catch (e: SsoManager.EmailNotFound) { + call.respond(HttpStatusCode.NotFound) + } call.respond(HttpStatusCode.NoContent) }