@GET @Path("token") @Produces("application/json") public Response checkToken(String content, @QueryParam("token") String token) { SessionNode session = Sessions.getInstance().find(token); if (session == null) { // La sesion no existe return Response.status(204).build(); } else { // El token si existe return Response.status(200).build(); } }
/** * Authenticates an existing user. * * @param content * @return JSON Object with API Key. * @throws ParseException * @throws SQLException * @throws ClassNotFoundException */ @POST @Produces("application/json") @Consumes("application/json") public Response loggingInUsers(String response) throws ParseException, SQLException, ClassNotFoundException { Object obj = JSONValue.parse(response); JSONObject json = (JSONObject) obj; // User String username = (String) json.get("username"); String password = (String) json.get("password"); // Comunication instance comunication com = new comunication(); com.open(); boolean isAdmin = com.valiadmin(username); com.close(); if (isAdmin) { // Debe devolver false si existe el usuario com.open(); boolean exists_user = com.validate_user_nick(username); com.close(); // Debe devolver true si las credenciales son correctas com.open(); boolean password_correct = com.compare_pass(username, password); com.close(); if (!exists_user && password_correct) { // Usuario autenticado, reviso que no haya una sesion activa // para ese usuario SessionNode session = Sessions.getInstance().findByUsername(username); if (session == null) { // Sesion para ese usuario no existe System.out.println("SERVER ADMIN: " + username + " connecting!"); String time = new Timestamp(System.currentTimeMillis()).toString(); String toHash = password + time; String hashed = BCrypt.hashpw(toHash, BCrypt.gensalt()); Sessions.getInstance().createSession(username, hashed, time, ""); JSONObject jsontoken = new JSONObject(); jsontoken.put("token", hashed); jsontoken.put("admin", true); return Response.status(200).entity(jsontoken.toJSONString()).build(); } else { return Response.status(403).build(); } } else { return Response.status(401).build(); } } else { // Debe devolver false si existe el usuario com.open(); boolean exists_user = com.validate_user_nick(username); com.close(); // Debe devolver true si las credenciales son correctas com.open(); boolean password_correct = com.compare_pass(username, password); com.close(); if (!exists_user && password_correct) { // Usuario autenticado, reviso que no haya una sesion activa // para ese usuario SessionNode session = Sessions.getInstance().findByUsername(username); if (session == null) { // Sesion para ese usuario no existe System.out.println("SERVER: User, " + username + " connecting!"); String time = new Timestamp(System.currentTimeMillis()).toString(); String toHash = password + time; String hashed = BCrypt.hashpw(toHash, BCrypt.gensalt()); Sessions.getInstance().createSession(username, hashed, time, ""); JSONObject jsontoken = new JSONObject(); jsontoken.put("token", hashed); return Response.status(200).entity(jsontoken.toJSONString()).build(); } else { return Response.status(403).build(); } } else { return Response.status(401).build(); } } }