/* * Copyright 2013 eXo Platform SAS * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.sample.booking.controllers; import juzu.Action; import juzu.Mapped; import juzu.Path; import juzu.Response; import juzu.Route; import juzu.View; import juzu.plugin.validation.ValidationError; import juzu.request.RequestContext; import juzu.request.RequestLifeCycle; import juzu.template.Template; import org.sample.booking.Flash; import org.sample.booking.models.Booking; import org.sample.booking.models.User; import org.sample.booking.models.Violation; import javax.inject.Inject; import javax.validation.ConstraintViolation; import javax.validation.Valid; import java.util.Iterator; /** @author <a href="mailto:julien.viet@exoplatform.com">Julien Viet</a> */ public class Application implements RequestLifeCycle { /* @Before static void addUser() { User user = connected(); if(user != null) { renderArgs.put("user", user); } } static User connected() { if(renderArgs.get("user") != null) { return renderArgs.get("user", User.class); } String username = session.get("user"); if(username != null) { return User.find("byUsername", username).first(); } return null; } // ~~ */ @Inject @Path("index.gtmpl") Template index; @Inject @Path("register.gtmpl") Template register; @Inject Login login; @Inject Hotels hotels; @Inject Flash flash; @Inject Violation violation; @View @Route("/") public Response.Content index() { if (login.isConnected()) { return hotels.index(); } else { return index.ok(); } } @View @Route("/register") public Response.Content register() { return register.ok(); } @Action @Route("/register") public Response saveUser(@Mapped @Valid User user, String verifyPassword) { /* validation.required(verifyPassword); validation.equals(verifyPassword, user.password).message("Your password doesn't match"); if(validation.hasErrors()) { render("@register", user, verifyPassword); } */ User.create(user); login.setUserName(user.username); flash.setSuccess("Welcome, " + user.name); return Application_.index(); } @Action @Route("/login") public Response login(@Mapped User u) { System.out.println("Want login " + u.username + " " + u.password); User user = User.find(u.username, u.password); if (user != null) { login.setUserName(user.username); flash.setSuccess("Welcome, " + user.name); return Application_.index(); } else { // Oops flash.setUsername(u.username); flash.setError("Login failed"); return null; } } @Action @Route("/logout") public Response logout() { login.setUserName(null); return Application_.index(); } @Override public void beginRequest(RequestContext context) { } @Override public void endRequest(RequestContext context) { Response response = context.getResponse(); if (response instanceof ValidationError) { ValidationError error = (ValidationError)response; violation.add(Violation.REGISTER, error.getHtmlMessage()); context.setResponse(Application_.register()); } } }