package at.intelligentminds.service;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;
import javax.ws.rs.FormParam;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import org.hibernate.Transaction;
import at.intelligentminds.service.model.HibernateSupport;
import at.intelligentminds.service.model.User;
@Path("/userservice")
public class LoginService {
private static Map<String, User> userTokens = new HashMap<String, User>();
@Path("/login")
@POST
@Produces(MediaType.TEXT_PLAIN)
public String login(@FormParam("email") String email, @FormParam("password") String password) {
try {
Transaction tx = HibernateSupport.getSession().beginTransaction();
User user = (User) HibernateSupport.getSession().get(User.class, email);
tx.commit();
if (user != null) {
try {
if (PasswordHash.validatePassword(password.toCharArray(), user.getPwHash())) {
String random_uuid = UUID.randomUUID().toString().toUpperCase() + '|' + email;
userTokens.put(random_uuid, user);
return random_uuid;
}
}
catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
return "";
}
}
}
catch (Exception e) {
e.printStackTrace();
}
return "";
}
@Path("/validate")
@POST
@Produces(MediaType.TEXT_PLAIN)
public Boolean validate(@FormParam("token") String token) {
if (userTokens.containsKey(token)) {
return true;
}
return false;
}
@GET
@Produces(MediaType.TEXT_HTML)
public String get() {
return "These are not the droids you are looking for!";
}
public static User getUserByToken(String token) {
return userTokens.get(token);
}
public static void removeUserByToken(String token) {
if(userTokens.containsKey(token)) {
userTokens.remove(token);
}
}
}