package com.tap5.hotelbooking.services;
import org.apache.tapestry5.ioc.annotations.Inject;
import org.apache.tapestry5.services.Request;
import org.apache.tapestry5.services.Session;
import com.tap5.hotelbooking.dal.CrudServiceDAO;
import com.tap5.hotelbooking.dal.QueryParameters;
import com.tap5.hotelbooking.entities.User;
import com.tap5.hotelbooking.security.AuthenticationException;
/**
* Basic Security Realm implementation
*
* @author karesti
* @version 1.0
*/
public class BasicAuthenticator implements Authenticator
{
public static final String AUTH_TOKEN = "authToken";
@Inject
private CrudServiceDAO crudService;
@Inject
private Request request;
public void login(String username, String password) throws AuthenticationException
{
User user = crudService.findUniqueWithNamedQuery(User.BY_CREDENTIALS, QueryParameters.with(
"username",
username).and("password", password).parameters());
if (user == null) { throw new AuthenticationException("The user doesn't exist"); }
request.getSession(true).setAttribute(AUTH_TOKEN, user);
}
public boolean isLoggedIn()
{
Session session = request.getSession(false);
if (session != null) { return session.getAttribute(AUTH_TOKEN) != null; }
return false;
}
public void logout()
{
Session session = request.getSession(false);
if (session != null)
{
session.setAttribute(AUTH_TOKEN, null);
session.invalidate();
}
}
public User getLoggedUser()
{
User user = null;
if (isLoggedIn())
{
user = (User) request.getSession(true).getAttribute(AUTH_TOKEN);
}
else
{
throw new IllegalStateException("The user is not logged ! ");
}
return user;
}
}