don't require email for signup on dev environment

pull/1320/head
Thibault Duplessis 2015-12-14 13:46:28 +07:00
parent b1818ec31a
commit fc4131d0d0
4 changed files with 39 additions and 10 deletions

View File

@ -118,8 +118,13 @@ object Auth extends LilaController {
UserRepo.create(data.username, data.password, email.some, ctx.blindMode, none)
.flatten(s"No user could be created for ${data.username}")
.map(_ -> email).flatMap {
case (user, email) => env.emailConfirm.send(user, email) inject
Redirect(routes.Auth.checkYourEmail(user.username))
case (user, email) => env.emailConfirm.send(user, email) >> {
if (env.emailConfirm.effective)
Redirect(routes.Auth.checkYourEmail(user.username)).fuccess
else api.saveAuthentication(user.id, ctx.mobileApiVersion) map { sessionId =>
Redirect(routes.User.show(user.username)) withCookies LilaCookie.session("sessionId", sessionId)
}
}
}
}),
api = apiVersion => forms.signup.mobile.bindFromRequest.fold(

View File

@ -237,6 +237,7 @@ security {
secret = "???"
}
email_confirm {
enabled = false
mailgun = ${mailgun}
secret = "???"
}

View File

@ -6,12 +6,32 @@ import com.roundeights.hasher.{ Hasher, Algo }
import play.api.libs.ws.{ WS, WSAuthScheme }
import play.api.Play.current
final class EmailConfirm(
trait EmailConfirm {
def effective: Boolean
def send(user: User, email: String): Funit
def confirm(token: String): Fu[Option[User]]
}
object EmailConfirmSkip extends EmailConfirm {
def effective = false
def send(user: User, email: String) = UserRepo setEmailConfirmed user.id
def confirm(token: String): Fu[Option[User]] = fuccess(none)
}
final class EmailConfirmMailGun(
apiUrl: String,
apiKey: String,
sender: String,
baseUrl: String,
secret: String) {
secret: String) extends EmailConfirm {
def effective = true
def send(user: User, email: String): Funit = tokener make user flatMap { token =>
val url = s"$baseUrl/signup/confirm/$token"

View File

@ -33,6 +33,7 @@ final class Env(
val EmailConfirmMailgunSender = config getString "email_confirm.mailgun.sender"
val EmailConfirmMailgunBaseUrl = config getString "email_confirm.mailgun.base_url"
val EmailConfirmSecret = config getString "email_confirm.secret"
val EmailConfirmEnabled = config getBoolean "email_confirm.enabled"
val PasswordResetMailgunApiUrl = config getString "password_reset.mailgun.api.url"
val PasswordResetMailgunApiKey = config getString "password_reset.mailgun.api.key"
val PasswordResetMailgunSender = config getString "password_reset.mailgun.sender"
@ -74,12 +75,14 @@ final class Env(
lazy val disconnect = store disconnect _
lazy val emailConfirm = new EmailConfirm(
apiUrl = EmailConfirmMailgunApiUrl,
apiKey = EmailConfirmMailgunApiKey,
sender = EmailConfirmMailgunSender,
baseUrl = EmailConfirmMailgunBaseUrl,
secret = EmailConfirmSecret)
lazy val emailConfirm: EmailConfirm =
if (EmailConfirmEnabled) new EmailConfirmMailGun(
apiUrl = EmailConfirmMailgunApiUrl,
apiKey = EmailConfirmMailgunApiKey,
sender = EmailConfirmMailgunSender,
baseUrl = EmailConfirmMailgunBaseUrl,
secret = EmailConfirmSecret)
else EmailConfirmSkip
lazy val passwordReset = new PasswordReset(
apiUrl = PasswordResetMailgunApiUrl,