feature/User Invitation Flow - POW 3

This commit is contained in:
Marko Milić 2021-06-17 12:01:56 +02:00
parent ed7c052ad0
commit c56d2196af
3 changed files with 43 additions and 47 deletions

View File

@ -1171,13 +1171,20 @@ def restoreSomeSessions(): Unit = {
}
override def passwordResetXhtml = {
(<form method="post" action={S.uri}>
<table><tr><td colspan="2">{if(S.queryString.isDefined) Helper.i18n("set.your.password") else S.?("reset.your.password")}</td></tr>
<tr><td>{S.?("enter.your.new.password")}</td><td><input type="password" /></td></tr>
<tr><td>{S.?("repeat.your.new.password")}</td><td><input type="password" /></td></tr>
<tr><td>&nbsp;</td><td><input type="submit" /></td></tr>
</table>
</form>)
<div id="recover-password" tabindex="-1">
<h1>{if(S.queryString.isDefined) Helper.i18n("set.your.password") else S.?("reset.your.password")}</h1>
<form action={S.uri} method="post">
<div class="form-group">
<label for="password">{S.?("enter.your.new.password")}</label> <span><input id="password" class="form-control" type="password" /></span>
</div>
<div class="form-group">
<label for="repeatpassword">{S.?("repeat.your.new.password")}</label> <span><input id="repeatpassword" class="form-control" type="password" /></span>
</div>
<div class="form-group">
<input type="submit" class="btn btn-danger" />
</div>
</form>
</div>
}
/**

View File

@ -54,43 +54,50 @@ class UserInvitation extends MdcLoggable {
val secretLink = S.param("id").getOrElse("0")
val userInvitation = UserInvitationProvider.userInvitationProvider.vend.getUserInvitationBySecretLink(secretLink.toLong)
val firstName = userInvitation.map(_.firstName).getOrElse("None")
firstNameVar.set(firstName)
val lastName = userInvitation.map(_.lastName).getOrElse("None")
lastNameVar.set(lastName)
firstNameVar.set(userInvitation.map(_.firstName).getOrElse("None"))
lastNameVar.set(userInvitation.map(_.lastName).getOrElse("None"))
val email = userInvitation.map(_.email).getOrElse("None")
devEmailVar.set(email)
companyVar.set(userInvitation.map(_.company).getOrElse("None"))
countryVar.set(userInvitation.map(_.country).getOrElse("None"))
val username = firstName.toLowerCase + "." + lastName.toLowerCase()
usernameVar.set(username)
usernameVar.set(firstNameVar.is.toLowerCase + "." + lastNameVar.is.toLowerCase())
def submitButtonDefense(): Unit = {
createResourceUser(
provider = "OBP-User-Invitation",
providerId = Some(usernameVar.is),
name = Some(firstName + " " + lastName),
email = Some(email)
).map{ u =>
createAuthUser(user = u, firstName = firstName, lastName = lastName, password = "")
val resetLink = AuthUser.passwordResetUrl(u.idGivenByProvider, u.emailAddress, u.userId) + "?action=set"
S.redirectTo(resetLink)
}
if(Users.users.vend.getUserByUserName(usernameVar.is).isDefined) showErrorsForUsername()
else if(userInvitation.map(_.status != "CREATED").getOrElse(false)) showErrorsForStatus()
else {
createResourceUser(
provider = "OBP-User-Invitation",
providerId = Some(usernameVar.is),
name = Some(firstNameVar.is + " " + lastNameVar.is),
email = Some(email)
).map{ u =>
createAuthUser(user = u, firstName = firstNameVar.is, lastName = lastNameVar.is, password = "")
val resetLink = AuthUser.passwordResetUrl(u.idGivenByProvider, u.emailAddress, u.userId) + "?action=set"
S.redirectTo(resetLink)
}
}
}
def showErrorsForUsername() = {
val usernameError = Helper.i18n("unique.username")
def showError(usernameError: String) = {
S.error("register-consumer-errors", usernameError)
register &
"#register-consumer-errors *" #> {
".error *" #>
List(usernameError).map({ e=>
List(usernameError).map({ e =>
".errorContent *" #> e
})
}
}
def showErrorsForUsername() = {
showError(Helper.i18n("unique.username"))
}
def showErrorsForStatus() = {
showError(Helper.i18n("user.invitation.is.already.finished"))
}
def register = {
"form" #> {
"#country" #> SHtml.text(countryVar.is, countryVar(_)) &
@ -103,7 +110,7 @@ class UserInvitation extends MdcLoggable {
} &
"#register-consumer-success" #> ""
}
if(Users.users.vend.getUserByUserName(username).isDefined) showErrorsForUsername() else register
register
}
private def createAuthUser(user: User, firstName: String, lastName: String, password: String): Box[AuthUser] = tryo {

View File

@ -47,44 +47,26 @@ Berlin 13359, Germany
<div class="form-group">
<label for="firstName">First name</label>
<input readonly type="text" name="first-name" id="firstName" class="form-control" aria-describedby="consumer-registration-first-name-error">
<div id = "consumer-registration-first-name-error-div" class="hide">
<span data-lift="Msg?id=consumer-registration-first-name-error"/>
</div>
</div>
<div class="form-group">
<label for="lastName">Last name</label>
<input readonly type="text" name="last-name" id="lastName" class="form-control" aria-describedby="consumer-registration-app-name-error">
<div id = "consumer-registration-last-name-error-div" class="hide">
<span data-lift="Msg?id=consumer-registration-last-name-error"/>
</div>
</div>
<div class="form-group">
<label for="devEmail">Developer email</label>
<input readonly type="text" name="app-developer" id="devEmail" class="form-control" aria-describedby="consumer-registration-app-developer-error">
<div id = "consumer-registration-app-developer-error-div" class="hide">
<span data-lift="Msg?id=consumer-registration-app-developer-error"/>
</div>
</div>
<div class="form-group">
<label for="companyName">Company</label>
<input readonly type="text" name="app-developer" id="companyName" class="form-control" aria-describedby="consumer-registration-company-error">
<div id = "consumer-registration-company-error-div" class="hide">
<span data-lift="Msg?id=consumer-registration-app-developer-error"/>
</div>
</div>
<div class="form-group">
<label for="country">Company</label>
<label for="country">Country</label>
<input readonly type="text" name="country" id="country" class="form-control" aria-describedby="consumer-registration-company-error">
<div id = "consumer-registration-country-error-div" class="hide">
<span data-lift="Msg?id=consumer-registration-country-error"/>
</div>
</div>
<div class="form-group">
<label for="username">Username</label>
<input type="text" name="username" id="username" class="form-control" aria-describedby="consumer-registration-company-error">
<div id = "consumer-registration-username-error-div" class="hide">
<span data-lift="Msg?id=consumer-registration-username-error"/>
</div>
</div>
</div>
</div>