package controllers;
import static play.data.Form.form;
import com.feth.play.module.pa.PlayAuthenticate;
import play.Logger;
import play.Play;
import play.data.Form;
import play.mvc.Controller;
import play.mvc.Result;
import providers.TestUsernamePasswordAuthProvider;
import providers.TestUsernamePasswordAuthProvider.Login;
import providers.TestUsernamePasswordAuthProvider.Signup;
import javax.inject.Inject;
import javax.inject.Singleton;
@Singleton
public class ApplicationController extends Controller {
public final String FLASH_ERROR_KEY = "error";
private TestUsernamePasswordAuthProvider testProvider;
@Inject
public ApplicationController(TestUsernamePasswordAuthProvider testProvider) {
this.testProvider = testProvider;
}
public Result index() {
return ok(views.html.index.render(testProvider.getAuth()));
}
public Result login() {
return ok(views.html.login.render(form(Login.class).bindFromRequest()));
}
public Result doLogin() {
com.feth.play.module.pa.controllers.Authenticate.noCache(response());
final Form<Login> filledForm = form(Login.class).bindFromRequest();
if (filledForm.hasErrors()) {
// User did not fill everything properly
return badRequest(views.html.login.render(filledForm));
} else {
// Everything was filled
return testProvider.handleLogin(ctx());
}
}
public Result signup() {
return ok(views.html.signup
.render(form(Signup.class).bindFromRequest()));
}
public Result doSignup() {
com.feth.play.module.pa.controllers.Authenticate.noCache(response());
final Form<Signup> filledForm = form(Signup.class).bindFromRequest();
if (filledForm.hasErrors()) {
// User did not fill everything properly
return badRequest(views.html.signup.render(filledForm));
} else {
// Everything was filled
return testProvider.handleSignup(ctx());
}
}
public Result userExists() {
return badRequest("User exists.");
}
public Result userUnverified() {
return badRequest("User not yet verified.");
}
public Result verify(String token) {
TestUsernamePasswordAuthProvider.LoginUser loginUser = this.testProvider
.verifyWithToken(token);
if (loginUser == null) {
return notFound();
}
return testProvider.getAuth().loginAndRedirect(ctx(), loginUser);
}
public Result oAuthDenied(String providerKey) {
flash(FLASH_ERROR_KEY, "You need to accept the OAuth connection"
+ " in order to use this website!");
return redirect(routes.ApplicationController.index());
}
}