Big refactoring #77
@@ -6,6 +6,8 @@ import com.sendgrid.helpers.mail.objects.Email
|
|||||||
import fr.dcproject.JwtConfig
|
import fr.dcproject.JwtConfig
|
||||||
import fr.dcproject.component.citizen.CitizenBasicI
|
import fr.dcproject.component.citizen.CitizenBasicI
|
||||||
import fr.dcproject.component.citizen.CitizenRepository
|
import fr.dcproject.component.citizen.CitizenRepository
|
||||||
|
import fr.dcproject.component.citizen.CitizenWithEmail
|
||||||
|
import fr.dcproject.component.citizen.CitizenWithUserI
|
||||||
import fr.dcproject.messages.Mailer
|
import fr.dcproject.messages.Mailer
|
||||||
import io.ktor.http.*
|
import io.ktor.http.*
|
||||||
|
|
||||||
@@ -22,34 +24,29 @@ class SsoManager(
|
|||||||
sendEmail(citizen, url)
|
sendEmail(citizen, url)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun sendEmail(citizen: CitizenBasicI, url: String) {
|
fun <C> sendEmail(citizen: C, url: String) where C : CitizenWithEmail, C : CitizenWithUserI {
|
||||||
mailer.sendEmail {
|
mailer.sendEmail {
|
||||||
|
val token = JwtConfig.makeToken(citizen.user)
|
||||||
Mail(
|
Mail(
|
||||||
Email("sso@$domain"),
|
Email("sso@$domain"),
|
||||||
"Connection",
|
"Connection",
|
||||||
Email(citizen.email),
|
Email(citizen.email),
|
||||||
Content("text/plain", generateContent(citizen, url))
|
Content("text/plain", generateContent(token, url))
|
||||||
).apply {
|
).apply {
|
||||||
addContent(Content("text/html", generateHtmlContent(citizen, url)))
|
addContent(Content("text/html", generateHtmlContent(token, url)))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
private fun generateHtmlContent(token: String, url: String): String? {
|
||||||
* TODO pass token to the function to avoid double generations
|
|
||||||
*/
|
|
||||||
private fun generateHtmlContent(citizen: CitizenBasicI, url: String): String? {
|
|
||||||
val urlObject = URLBuilder(url)
|
val urlObject = URLBuilder(url)
|
||||||
urlObject.parameters.append("token", JwtConfig.makeToken(citizen.user))
|
urlObject.parameters.append("token", token)
|
||||||
return "Click <a href=\"${urlObject.buildString()}\">here</a> for connect to $domain"
|
return "Click <a href=\"${urlObject.buildString()}\">here</a> for connect to $domain"
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
private fun generateContent(token: String, url: String): String {
|
||||||
* TODO pass token to the function to avoid double generations
|
|
||||||
*/
|
|
||||||
private fun generateContent(citizen: CitizenBasicI, url: String): String {
|
|
||||||
val urlObject = URLBuilder(url)
|
val urlObject = URLBuilder(url)
|
||||||
urlObject.parameters.append("token", JwtConfig.makeToken(citizen.user))
|
urlObject.parameters.append("token", token)
|
||||||
return "Copy this link into your browser for connect to $domain: \n${urlObject.buildString()}"
|
return "Copy this link into your browser for connect to $domain: \n${urlObject.buildString()}"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -91,9 +91,8 @@ interface CitizenI : UuidEntityI {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Deprecated("")
|
@Deprecated("")
|
||||||
interface CitizenBasicI : CitizenWithUserI, EntityDeletedAt {
|
interface CitizenBasicI : CitizenWithUserI, CitizenWithEmail, EntityDeletedAt {
|
||||||
val name: Name
|
val name: Name
|
||||||
val email: String
|
|
||||||
val birthday: DateTime
|
val birthday: DateTime
|
||||||
val voteAnonymous: Boolean
|
val voteAnonymous: Boolean
|
||||||
val followAnonymous: Boolean
|
val followAnonymous: Boolean
|
||||||
@@ -107,3 +106,7 @@ interface CitizenFull : CitizenBasicI {
|
|||||||
interface CitizenWithUserI : CitizenI {
|
interface CitizenWithUserI : CitizenI {
|
||||||
val user: UserI
|
val user: UserI
|
||||||
}
|
}
|
||||||
|
|
||||||
|
interface CitizenWithEmail : CitizenI {
|
||||||
|
val email: String
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user