2017-03-22 6 views
0

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> 
    } 
} 

Antwort

0

Eine einfache Technik-Nachrichten an Ihre Antwort Objekt würde das Hinzufügen und die Ansicht als „Home/login“ auf Loginfehler zuweisen. Das Hinzufügen dieser Nachrichten sollte der Einstellung von Daten in Ihrer Antwort sehr ähnlich sein. Auf dem UI-Bildschirm haben Sie ein dynamisches div über dem Benutzernamen, Passwort-Abschnitt, der die Antwortnachrichten, wenn vorhanden, abrufen kann.

Verwandte Themen