Advertisement
Guest User

Untitled

a guest
Feb 27th, 2018
114
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.24 KB | None | 0 0
  1. package apiProject;
  2.  
  3. import javax.ws.rs.Path;
  4.  
  5. import javax.ws.rs.Path;
  6. import java.sql.*;
  7. import java.text.SimpleDateFormat;
  8. import java.time.LocalDate;
  9.  
  10. import javax.ws.rs.*;
  11. import javax.ws.rs.core.MediaType;
  12. import javax.ws.rs.core.Response;
  13.  
  14. import org.hibernate.Session;
  15.  
  16. import java.util.Date;
  17.  
  18. import com.auth0.jwt.JWT;
  19. import com.auth0.jwt.algorithms.Algorithm;
  20. import com.google.gson.Gson;
  21.  
  22. import domain.Alumno;
  23. import domain.Usuario;
  24. import util.Constants;
  25. import util.HibernateUtil;
  26.  
  27. @Path("/users")
  28. public class LoginRest {
  29.  
  30.     @POST
  31.     @Path("/login")
  32.     @Consumes(MediaType.APPLICATION_JSON)
  33.     @Produces(MediaType.APPLICATION_JSON)
  34.     public Response login(String json) {
  35.  
  36.         Gson gson = new Gson();
  37.         Usuario user = gson.fromJson(json, Usuario.class);
  38.         boolean userValidated = false;
  39.         Usuario userFound;
  40.  
  41.         try {
  42.             Session session = HibernateUtil.getSessionFactory().getCurrentSession();
  43.             session.beginTransaction();
  44.  
  45.             String sql = "from Usuario WHERE username = :entryUser and password = :entryPw";
  46.  
  47.             userFound = (Usuario) session.createQuery(sql).setParameter("entryUser", user.getUsername()).setParameter("entryPw", user.getPassword()).getSingleResult();
  48.  
  49.             session.getTransaction().commit();
  50.  
  51.             session.close();
  52.  
  53.             if(userFound != null) {
  54.                 user.setToken(generateToken(userFound.getIdUsuario()));
  55.                 userValidated = true;
  56.             }
  57.            
  58.  
  59.         } catch (javax.persistence.NoResultException noResultException) {
  60.             userFound = null;
  61.            
  62.         } catch (Exception e) {
  63.             System.out.println(e);
  64.             return Response.status(500).build();
  65.         }
  66.  
  67.         user.setPassword("");
  68.         if (userValidated) {
  69.             return Response.status(200).entity(gson.toJson(user)).build();
  70.         } else {
  71.             return Response.status(401).build();
  72.         }
  73.     }
  74.  
  75.     private String generateToken(int id) throws Exception {
  76.         SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
  77.         Date issuedDate = format.parse(LocalDate.now().toString());
  78.         Date expirationDate = format.parse(LocalDate.now().plusMonths(1).toString());
  79.  
  80.         Algorithm algorithm = Algorithm.HMAC256(Constants.TOKEN_KEY);
  81.  
  82.         String token = JWT.create().withSubject(String.valueOf(id)).withIssuedAt(issuedDate)
  83.                 .withExpiresAt(expirationDate).sign(algorithm);
  84.  
  85.         return token;
  86.     }
  87. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement