Ich versuche dies zu implementieren und brauche Hilfe. Nach einem fehlgeschlagenen Anmeldeversuch möchte ich dem Benutzer Feedback geben. Wenn der Anmeldeversuch serverseitig fehlschlägt, werden auf der Seite nach der fehlgeschlagenen Anfrage Fehlermeldungen angezeigt.So zeigen Sie Fehler auf der Anmeldeseite an
// This is the Session Controller in UI
public class SessionsController extends Controller {
private final FormFactory formFactory;
private final ISessionService sessionsService;
private final IUserService userService;
@Inject
public SessionsController(FormFactory formFactory, ISessionService sessionsService, IUserService userService) {
this.formFactory = formFactory;
this.sessionsService = sessionsService;
this.userService = userService;
}
public Result createGet() {
CurrentUser currentUser = sessionsService.retrieveCurrentUserSession();
final Form<CreateViewModel> createViewModelForm = formFactory.form(CreateViewModel.class);
if (currentUser != null) {
return redirect(routes.HomeController.index());
}
return ok(create.render(createViewModelForm));
}
public Result createPost() {
final Form<CreateViewModel> createViewModelForm = formFactory.form(CreateViewModel.class);
CreateViewModel viewModel = createViewModelForm.bindFromRequest().get();
ServiceResponse<CurrentUser> response = sessionsService.createSession(viewModel.getEmail(), viewModel.getPassword(), request().remoteAddress());
if (response.hasErrors()) {
return ok(create.render(createViewModelForm));
}else{
IUser user = userService.retrieveById(response.getResponseObject().getId());
user.setLastLogin(dateUtils.getCurrentDateTime());
ServiceResponse<IUser> userResponse = userService.update(user, false);
if (userResponse.hasErrors()){
throw new RuntimeException();
}
DateTime start = new DateTime(user.getPasswordCreatedDate());
DateTime stop = new DateTime(DateTime.now());
int daysBetween = Days.daysBetween(start, stop).getDays();
if(daysBetween > 60){
user.setPasswordReset(true);
}
if (user.getPasswordReset() == true){
return editPasswordGet(user);
}
}
return redirect(routes.HomeController.index());
}
// Dies ist die UI-Ansicht Sitzung
@(createForm: Form[femr.ui.models.sessions.CreateViewModel])
@import femr.ui.views.html.layouts.main
@import femr.ui.controllers.routes.SessionsController
@styles = {
<link rel="stylesheet" href="@routes.Assets.versioned("css/login.css")">
}
@main("Login", styles = styles) {
@helper.form(action = SessionsController.createPost(), 'class -> "form-signin") {
<div id="login">
<h1>Please sign in</h1>
<input type="text" name="email" placeholder="Email" />
<input type="password" name="password" placeholder="Password" />
<input type="submit" value="Log in" />
<img src="@routes.Assets.versioned("img/logo_color_sm.png")" />
</div>
}
}
@(createForm: Form[femr.ui.models.sessions.CreateViewModel])
@import femr.ui.views.html.layouts.main
@import femr.ui.controllers.routes.SessionsController
@styles = {
<link rel="stylesheet" href="@routes.Assets.versioned("css/login.css")">
}
@main("Login", styles = styles) {
@helper.form(action = SessionsController.createPost(), 'class -> "form-signin") {
<div id="login">
<h1>Please sign in</h1>
<input type="text" name="email" placeholder="Email" />
<input type="password" name="password" placeholder="Password" />
<input type="submit" value="Log in" />
<img src="@routes.Assets.versioned("img/logo_color_sm.png")" />
</div>
}
}