Advertisement
Guest User

Untitled

a guest
Nov 17th, 2017
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.87 KB | None | 0 0
  1. /*Use
  2. * To change this license header, choose License Headers in Project Properties.
  3. * To change this template file, choose Tools | Templates
  4. * and open the template in the editor.
  5. */
  6. package entities.service;
  7.  
  8. import entities.User;
  9. import java.awt.Event;
  10. import java.util.ArrayList;
  11. import java.util.List;
  12. import javax.ejb.Stateless;
  13. import javax.persistence.EntityManager;
  14. import javax.persistence.PersistenceContext;
  15. import javax.ws.rs.Consumes;
  16. import javax.ws.rs.DELETE;
  17. import javax.ws.rs.GET;
  18. import javax.ws.rs.HeaderParam;
  19. import javax.ws.rs.POST;
  20. import javax.ws.rs.PUT;
  21. import javax.ws.rs.Path;
  22. import javax.ws.rs.PathParam;
  23. import javax.ws.rs.Produces;
  24. import javax.ws.rs.QueryParam;
  25. import javax.ws.rs.core.GenericEntity;
  26. import javax.ws.rs.core.MediaType;
  27. import javax.ws.rs.core.Response;
  28. import org.mindrot.jbcrypt.BCrypt;
  29. import servererror.ServerError;
  30. import utilities.TokenUtil;
  31. import utilities.ErrorUtil;
  32. import utilities.JsonUtil;
  33. import utilities.TextUtil;
  34.  
  35. /**
  36. *
  37. * @author HUYTRINH
  38. */
  39. @Stateless
  40. @Path("users")
  41. public class UserFacadeREST extends AbstractFacade<User> {
  42.  
  43. @PersistenceContext(unitName = "com.thmreview_BookReview_war_1.0-SNAPSHOTPU")
  44. private EntityManager em;
  45.  
  46. public UserFacadeREST() {
  47. super(User.class);
  48. }
  49.  
  50. @POST
  51. @Override
  52. @Consumes({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
  53. public void create(User entity) {
  54. super.create(entity);
  55. }
  56.  
  57. @POST
  58. @Consumes({MediaType.APPLICATION_JSON})
  59. @Path("register")
  60. public Response register(@QueryParam("email") String email, @QueryParam("username") String userName, @QueryParam("password") String password) {
  61. System.out.println("username: " + userName);
  62. System.out.println("password: " + password);
  63. System.out.println("email: " + email);
  64.  
  65. if (TextUtil.isEmpty(userName) || TextUtil.isEmpty(password) || TextUtil.isEmpty(email)) {
  66. return Response.status(Response.Status.BAD_REQUEST)
  67. .entity(ErrorUtil.badRequest("Field should not be empty")).build();
  68. }
  69.  
  70. List<User> listUser = findAll();
  71. for(User user: listUser) {
  72. if (user.getUsername().equals(userName)) {
  73. return Response.status(Response.Status.BAD_REQUEST)
  74. .entity(ErrorUtil.badRequest("This username is already registered"))
  75. .build();
  76. }
  77. if (user.getEmail().equals(email)){
  78. return Response.status(Response.Status.BAD_REQUEST)
  79. .entity(ErrorUtil.badRequest("This email is already registered"))
  80. .build();
  81. }
  82. }
  83.  
  84. User newUser = new User();
  85. newUser.setEmail(email);
  86.  
  87. String hashedPassword = BCrypt.hashpw(password, BCrypt.gensalt(12));
  88. newUser.setPass(hashedPassword);
  89.  
  90. newUser.setUsername(userName);
  91.  
  92. super.create(newUser);
  93.  
  94. newUser = super.findNewest();
  95.  
  96. String userId = newUser.getUid() + "";
  97. String token = TokenUtil.createToken(userId);
  98. String jsonToken = JsonUtil.jsonToken(token);
  99.  
  100. return Response.status(Response.Status.CREATED).entity(jsonToken).build();
  101. }
  102.  
  103. @POST
  104. @Consumes({MediaType.APPLICATION_JSON})
  105. @Path("login")
  106. public Response logIn(@QueryParam("username") String userName, @QueryParam("password") String password) {
  107. System.out.println("username: " + userName);
  108. System.out.println("password: " + password);
  109.  
  110. if (TextUtil.isEmpty(userName) || TextUtil.isEmpty(password)) {
  111. return Response.status(Response.Status.BAD_REQUEST)
  112. .entity(ErrorUtil.badRequest("Field should not be empty")).build();
  113. }
  114.  
  115. List<User> listUser = findAll();
  116. for(User user: listUser) {
  117. if (user.getUsername().equals(userName)) {
  118. if (BCrypt.checkpw(password, user.getPass())) {
  119. String userId = user.getUid() + "";
  120. String token = TokenUtil.createToken(userId);
  121. String jsonToken = JsonUtil.jsonToken(token);
  122. System.out.println("username: " + userName);
  123. System.out.println("pass: " + password);
  124. System.out.println("jsonToken: " + jsonToken);
  125.  
  126. return Response.status(Response.Status.OK).entity(jsonToken).build();
  127. } else {
  128. return Response.status(Response.Status.UNAUTHORIZED)
  129. .entity(ErrorUtil.unAuthorized("Invalid password"))
  130. .build();
  131. }
  132. }
  133. }
  134.  
  135. return Response.status(Response.Status.UNAUTHORIZED)
  136. .entity(ErrorUtil.unAuthorized("Invalid username"))
  137. .build();
  138. }
  139.  
  140. @PUT
  141. @Path("{id}")
  142. @Consumes({MediaType.APPLICATION_JSON})
  143. public void edit(@PathParam("id") Long id, User entity) {
  144. super.edit(entity);
  145. }
  146.  
  147. @DELETE
  148. // @Path("{id}")
  149. @Consumes({MediaType.APPLICATION_JSON})
  150. @Produces({MediaType.APPLICATION_JSON})
  151. public Response remove(@HeaderParam("authorization") String token) {
  152. System.out.println("token: " + token);
  153. Long id = TokenUtil.decodeToken(token);
  154. System.out.println("id: " + id);
  155. if (id != null) {
  156. User user = super.find(id);
  157.  
  158. if (user!=null) {
  159. super.remove(user);
  160. return Response.status(Response.Status.OK)
  161. .entity(user)
  162. .build();
  163. } else {
  164. return Response.status(Response.Status.NOT_FOUND)
  165. .entity(ErrorUtil.notFound("Cannot find user with that id"))
  166. .build();
  167. }
  168. } else {
  169. return Response.status(Response.Status.UNAUTHORIZED)
  170. .entity(ErrorUtil.notFound("Invalid token"))
  171. .build();
  172. }
  173. }
  174.  
  175. @GET
  176. @Path("{id}")
  177. @Produces({MediaType.APPLICATION_JSON})
  178. public Response find(@HeaderParam("authorization") String token, @PathParam("id") Long id) {
  179. Long userId = TokenUtil.decodeToken(token);
  180. if (userId != null) {
  181. User user = super.find(id);
  182. if (user!= null) {
  183. user.setPass("");
  184. return Response.status(Response.Status.OK)
  185. .entity(user)
  186. .build();
  187. } else {
  188. return Response.status(Response.Status.UNAUTHORIZED)
  189. .entity(ErrorUtil.notFound("Cannot find user with that id"))
  190. .build();
  191. }
  192.  
  193. } else {
  194. return Response.status(Response.Status.UNAUTHORIZED)
  195. .entity(ErrorUtil.notFound("Invalid token"))
  196. .build();
  197. }
  198. }
  199.  
  200. @GET
  201. @Path("me")
  202. @Produces({MediaType.APPLICATION_JSON})
  203. public Response findMe(@HeaderParam("authorization") String token) {
  204. Long userId = TokenUtil.decodeToken(token);
  205. if (userId != null) {
  206. User user = super.find(userId);
  207. if (user!= null) {
  208. user.setPass("");
  209. return Response.status(Response.Status.OK)
  210. .entity(user)
  211. .build();
  212. } else {
  213. return Response.status(Response.Status.UNAUTHORIZED)
  214. .entity(ErrorUtil.notFound("Cannot find user with that id"))
  215. .build();
  216. }
  217.  
  218. } else {
  219. return Response.status(Response.Status.UNAUTHORIZED)
  220. .entity(ErrorUtil.notFound("Invalid token"))
  221. .build();
  222. }
  223. }
  224.  
  225.  
  226. // @GET
  227. // @Path("huy")
  228. // @Produces({MediaType.APPLICATION_JSON})
  229. // public Response findAll1(@HeaderParam("authorization") String token) {
  230. // Long userId = TokenUtil.decodeToken(token);
  231. // if (userId != null) {
  232. // List<User> listUser = super.findAll();
  233. // return Response.status(Response.Status.OK)
  234. // .(listUser)
  235. // .build();
  236. //
  237. // } else {
  238. // return Response.status(Response.Status.UNAUTHORIZED)
  239. // .entity(ErrorUtil.notFound("Invalid token"))
  240. // .build();
  241. // }
  242. // }
  243.  
  244. @GET
  245. @Produces({MediaType.APPLICATION_JSON})
  246. public Response findAll(@HeaderParam("authorization") String token) {
  247. Long userId = TokenUtil.decodeToken(token);
  248. if (userId != null) {
  249. List<User> listUser = super.findAll();
  250. for(User user: listUser) {
  251. user.setPass("");
  252. }
  253.  
  254. // GenericEntity<List<User>> entities = new GenericEntity<List<User>>(Lists.newArrayList(listUser)) {};
  255. return Response.ok(listUser).build();
  256. } else {
  257. return Response.status(Response.Status.UNAUTHORIZED)
  258. .entity(ErrorUtil.notFound("Invalid token"))
  259. .build();
  260. }
  261. }
  262.  
  263. @GET
  264. @Path("{from}/{to}")
  265. @Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
  266. public List<User> findRange(@PathParam("from") Integer from, @PathParam("to") Integer to) {
  267. return super.findRange(new int[]{from, to});
  268. }
  269.  
  270. @GET
  271. @Path("count")
  272. @Produces(MediaType.TEXT_PLAIN)
  273. public String countREST() {
  274. return String.valueOf(super.count());
  275. }
  276.  
  277. @Override
  278. protected EntityManager getEntityManager() {
  279. return em;
  280. }
  281.  
  282. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement