@Override
public Authentication attemptAuthentication(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException {
String requestURI = request.getRequestURI();
Authentication userAuth = null;
User user = new User();
if (requestURI.endsWith(FACEBOOK_ACTION)) {
//Facebook Connect Authentication
String fbSig = request.getParameter("fbsig");
String fbEmail = request.getParameter("fbemail");
String fbName = request.getParameter("fbname");
String fbID = verifiedFacebookID(fbSig);
if (fbID != null) {
//success!
user.setIdentifier(Config.FB_PREFIX.concat(fbID));
user = User.readUserForIdentifier(user);
if (user == null) {
//user is new
user = new User();
user.setEmail(StringUtils.isBlank(fbEmail) ? "email@domain.com" : fbEmail);
user.setName(StringUtils.isBlank(fbName) ? "No Name" : fbName);
user.setPassword(new UUID().toString());
user.setIdentifier(Config.FB_PREFIX.concat(fbID));
String id = user.create();
if (id == null) {
throw new AuthenticationServiceException("Authentication failed: cannot create new user.");
}
}
userAuth = new UserAuthentication(user);
}
}
if (userAuth == null || user == null || user.getIdentifier() == null) {
throw new BadCredentialsException("Bad credentials.");
} else if (!user.isEnabled()) {
throw new LockedException("Account is locked.");
// } else {
// SecurityUtils.setAuthCookie(user, request, response);
}
return userAuth;