Advertisement
Guest User

Untitled

a guest
Mar 22nd, 2019
134
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 18.67 KB | None | 0 0
  1. package views;
  2.  
  3.  
  4. import java.io.File;
  5.  
  6. import org.h2.mvstore.MVMap;
  7. import java.io.*;
  8. import java.util.*;
  9. import model.Profile;
  10. import model.Report;
  11. import storage.DatabaseInterface;
  12. import storage.FileStoreInterface;
  13. import web.WebRequest;
  14. import web.WebResponse;
  15.  
  16. public class AccountView extends DynamicWebPage{
  17.  
  18. public AccountView(DatabaseInterface db, FileStoreInterface fs) {
  19. super(db, fs);
  20. }
  21.  
  22. public boolean process(WebRequest toProcess) {
  23. try {
  24. // Get email of user currently logged in
  25. String email = toProcess.cookies.get("email");
  26.  
  27. // Use email as unique identifier (key) to get user profile object
  28. MVMap<String, Profile> profiles = db.s.openMap("Profiles");
  29. Profile currentUser = profiles.get(email);
  30.  
  31. // User Details
  32. String name = currentUser.name;
  33. String password = currentUser.password;
  34. String address = currentUser.address;
  35. String filepath = currentUser.filePathToProfilePicture;
  36.  
  37.  
  38. // D- Use these attributes ( /\ )to auto fill entries upon loading page
  39.  
  40. if(toProcess.path.equalsIgnoreCase("accountview") || toProcess.path.equalsIgnoreCase("account.html")) {
  41.  
  42. System.out.println("\n\nRequest for Web Page: " + toProcess.path);
  43.  
  44. String stringToSendToBrowser = "";
  45. stringToSendToBrowser += "<!DOCTYPE html>\r\n";
  46. stringToSendToBrowser += "<html>\r\n";
  47. stringToSendToBrowser += " <head>\r\n";
  48. stringToSendToBrowser += " <link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css\" type=\"text/css\">\r\n";
  49. stringToSendToBrowser += " <link rel=\"stylesheet\" href=\"now-ui-kit.css\" type=\"text/css\">\r\n";
  50. stringToSendToBrowser += " <!--[if lt IE 9]>\" +\r\n";
  51. stringToSendToBrowser += " <script src=\"/js/html5shiv.js\"></script>\" +\r\n" ;
  52. stringToSendToBrowser += " <script src=\"/js/respond.min.js\"></script>\" +\r\n";
  53. stringToSendToBrowser += " <![endif]-->\" +\r\n";
  54. stringToSendToBrowser += " <script type=\"text/javascript\" src=\"/js/jquery-1.11.1.min.js\"></script>\" +\r\n";
  55. stringToSendToBrowser += " <script type=\"text/javascript\" src=\"/js/bootstrap.min.js\"></script>\" +\r\n";
  56. stringToSendToBrowser += " </head>\r\n";
  57. stringToSendToBrowser += "\r\n";
  58. stringToSendToBrowser += " <body onload=\"ProfileLoadFunction('" + name + "', '" + password + "', '" + address + "')\" class=\"text-left\">\r\n";
  59. stringToSendToBrowser += " <nav class=\"navbar navbar-expand-md navbar-dark bg-dark\">\r\n";
  60. stringToSendToBrowser += " <div class=\"container\"> <button class=\"navbar-toggler navbar-toggler-right border-0\" type=\"button\" data-toggle=\"collapse\" data-target=\"#navbar12\" style=\"\">\r\n";
  61. stringToSendToBrowser += " <span class=\"navbar-toggler-icon\"></span>\r\n";
  62. stringToSendToBrowser += " </button>\r\n";
  63. stringToSendToBrowser += " <div class=\"collapse navbar-collapse\" id=\"navbar12\"> <a class=\"navbar-brand d-none d-md-block\" href=\"index.html\">\n";
  64. stringToSendToBrowser += " <i class=\"fa d-inline fa-lg fa-wrench\"></i>\n";
  65. stringToSendToBrowser += " <b>&nbsp;FILL MY HOLE</b>\n";
  66. stringToSendToBrowser += " </a>\n";
  67. stringToSendToBrowser += " <ul class=\"navbar-nav mx-auto\">\r\n";
  68. stringToSendToBrowser += " <li class=\"nav-item\"> <a class=\"nav-link\" href=\"#reportForm\">Report a Problem</a> </li>\r\n";
  69. stringToSendToBrowser += " <li class=\"nav-item\"> <a class=\"nav-link\" href=\"#\">Your Area</a> </li>\r\n";
  70. stringToSendToBrowser += " <li class=\"nav-item\"> <a class=\"nav-link\" href=\"HelpView\">FAQ</a> </li>\r\n";
  71. stringToSendToBrowser += " <li class=\"nav-item\"> <a class=\"nav-link\" href=\"AboutUsView\">About Us</a> </li>\r\n";
  72. stringToSendToBrowser += " </ul>\r\n";
  73. stringToSendToBrowser += " <ul class=\"navbar-nav\">\r\n";
  74. stringToSendToBrowser += " <li class=\"nav-item\"> <a class=\"nav-link disabled\" href=\"#\">Welcome " + email + "</a> </li>\r\n";
  75. stringToSendToBrowser += " <li class=\"nav-item\"> <a class=\"nav-link\" href=\"#\">|</a> </li>\n";
  76. stringToSendToBrowser += " <li class=\"nav-item\"> <a class=\"nav-link btn-primary text-light\" href=\"accountview\">Account</a> </li>\n";
  77. stringToSendToBrowser += " </ul>\r\n";
  78. stringToSendToBrowser += " </div>\r\n";
  79. stringToSendToBrowser += " </div>\r\n";
  80. stringToSendToBrowser += " </nav>\r\n";
  81. stringToSendToBrowser += " <div class=\"d-flex h-100 w-100 pt-3 pb-5 mt-0 mb-5 text-center flex-column align-items-stretch\" style=\"background-image: linear-gradient(to bottom, rgba(0, 0, 0, .75), rgba(0, 0, 0, .75)), url(https://static.pingendo.com/cover-bubble-dark.svg); background-position: center center, center center; background-size: auto, auto; background-repeat: repeat, repeat;\" >\n";
  82. stringToSendToBrowser += " <div class=\"py-0 px-5 container rounded w-100\">\n";
  83. stringToSendToBrowser += " <div class=\"card bg-dark\">\n";
  84. stringToSendToBrowser += " <div class=\"card-body w-100 px-0 text-center\">\n";
  85. stringToSendToBrowser += " <h5 class=\"mb-0 display-1 text-left pl-5\">Your Account</h5>\n";
  86. stringToSendToBrowser += " <div class=\"card-body text-center\">\n";
  87. stringToSendToBrowser += " <div class=\"row mt-1\">\n";
  88. stringToSendToBrowser += " <div class=\"col-md-12\">\n";
  89. stringToSendToBrowser += " <h5 class=\"mb-2 text-left\"><b class=\"pl-4\">&nbsp;Your Info</b></h5>\n";
  90. stringToSendToBrowser += " </div>\n";
  91. stringToSendToBrowser += " </div>\n";
  92. stringToSendToBrowser += " <div class=\"row\">\n";
  93. stringToSendToBrowser += " <div class=\"col-md-6\">\n";
  94. stringToSendToBrowser += " <div class=\"row mt-3 pl-5 pt-1\">\n";
  95. stringToSendToBrowser += " <form class=\"text-left\" action=\"/SubmitNewDetails\" method=\"POST\" enctype=\"multipart/form-data\">\n";
  96. stringToSendToBrowser += " <div class=\"form-group\">\r\n";
  97. stringToSendToBrowser += " <label for=\"newName\">Your Name</label>\r\n";
  98. stringToSendToBrowser += " <input type=\"text\" class=\"form-control\" name=\"newName\" id=\"newName\" placeholder=\"Name...\">\r\n";
  99. stringToSendToBrowser += " </div>\r\n";
  100. stringToSendToBrowser += " <div class=\"form-group\">\r\n";
  101. stringToSendToBrowser += " <label for=\"newAddress\" class=\"w-100 text-left pt-2\"><b>Address</b></label>\r\n";
  102. stringToSendToBrowser += " <textarea rows=\"5\" cols=\"30\" class=\"form-control text-left w-70 text-white\" maxlength=\"255\" name=\"newAddress\" id=\"newAddress\" placeholder=\"Address...\"> </textarea>\r\n";
  103. stringToSendToBrowser += " </div>\r\n";
  104. stringToSendToBrowser += " <br><p>You must confirm your password to us before changing details</p><br>\r\n";
  105. stringToSendToBrowser += " <div class=\"form-row\">\n";
  106. stringToSendToBrowser += " <div class=\"form-group col-md-6\"> <label for=\"newPassword\">Password</label> <input type=\"password\" class=\"form-control\" name=\"newPassword\" id=\"newPassword\" placeholder=\"Password\"> </div>\n";
  107. stringToSendToBrowser += " <div class=\"form-group col-md-6\"> <label for=\"newPasswordConfirm\">Confirm Password</label> <input type=\"password\" class=\"form-control\" name=\"newPasswordConfirm\" id=\"newPasswordConfirm\" placeholder=\"Password\"> </div>\n";
  108. stringToSendToBrowser += " </div>";
  109. stringToSendToBrowser += " <input value=\"Save Changes\" type=\"submit\" onclick=\"return confirmDetailsChange();\" class=\"mt-4\">\r\n";
  110. stringToSendToBrowser += " <script>\r\n";
  111. stringToSendToBrowser += " function confirmDetailsChange(){\r\n";
  112. stringToSendToBrowser += " return confirm('Are you sure you want to change these details?');\r\n";
  113. stringToSendToBrowser += " }\r\n";
  114. stringToSendToBrowser += " </script>\r\n";
  115. stringToSendToBrowser += " </form>\n";
  116. stringToSendToBrowser += " </div>\n";
  117. stringToSendToBrowser += " </div>\n";
  118. stringToSendToBrowser += " <form class=\"col-md-6 text-left\" action=\"/SubmitNewProfilePicture\" method=\"POST\" enctype=\"multipart/form-data\">\r\n";
  119. stringToSendToBrowser += " <img class=\"d-block rounded-circle img-fluid w-75 mx-auto\" src=\"" + filepath + "\">\n";
  120. stringToSendToBrowser += " <label for=\"pictures\">Profile Picture</label>\r\n";
  121. stringToSendToBrowser += " <input type=\"file\" id=\"fileupload\" name=\"fileupload\" value=\"fileupload\" class=\"text-left form-control-file\">\r\n";
  122. stringToSendToBrowser += " <input value=\"Apply new Profile Picture\" type=\"submit\" onclick=\"return confirmPictureChange();\" class=\"mt-4\">\r\n";
  123. stringToSendToBrowser += " <script>\r\n";
  124. stringToSendToBrowser += " function confirmPictureChange(){\r\n";
  125. stringToSendToBrowser += " return confirm('Are you sure you want to change your profile picture?')";
  126. stringToSendToBrowser += " }\r\n";
  127. stringToSendToBrowser += " </script>\r\n";
  128. stringToSendToBrowser += " </form>\n";
  129. stringToSendToBrowser += " </div>\n";
  130. stringToSendToBrowser += " </div>\n";
  131. stringToSendToBrowser += " </div>\n";
  132. stringToSendToBrowser += " </div>\n";
  133. stringToSendToBrowser += " </div>\n";
  134. stringToSendToBrowser += " </div>\n";
  135. stringToSendToBrowser += " <script src=\"https://code.jquery.com/jquery-3.3.1.slim.min.js\" integrity=\"sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo\" crossorigin=\"anonymous\"></script>\n";
  136. stringToSendToBrowser += " <script src=\"https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.6/umd/popper.min.js\" integrity=\"sha384-wHAiFfRlMFy6i5SRaxvfOCifBUQy1xHdJ/yoi7FRNXMRBu5WHdZYu1hA6ZOblgut\" crossorigin=\"anonymous\" style=\"\"></script>\n";
  137. stringToSendToBrowser += " <script src=\"https://stackpath.bootstrapcdn.com/bootstrap/4.2.1/js/bootstrap.min.js\" integrity=\"sha384-B0UglyR+jN6CkvvICOB2joaf5I4l3gm9GU6Hc1og6Ls7i6U/mkkaduKaBhlAXv9k\" crossorigin=\"anonymous\"></script>\n";
  138. stringToSendToBrowser += " <script src=\"/js/ProfileLoadFunction.js\"></script>";
  139. stringToSendToBrowser += " <script src=\"/js/reload.js\"></script>";
  140. stringToSendToBrowser += " </body>\n";
  141. stringToSendToBrowser += "</html>";
  142. toProcess.r = new WebResponse( WebResponse.HTTP_OK, WebResponse.MIME_HTML, stringToSendToBrowser);
  143. return true;
  144.  
  145. }else if(toProcess.path.equalsIgnoreCase("SubmitNewDetails")) {
  146. System.out.println("Changing Details");
  147. System.out.println(toProcess.params.get("newName"));
  148. System.out.println(toProcess.params.get("newAddress"));
  149. System.out.println(toProcess.params.get("newPassword"));
  150. System.out.println(toProcess.params.get("newPasswordConfirm"));
  151.  
  152. if(toProcess.params.get("newPassword").equals(toProcess.params.get("newPasswordConfirm")) && toProcess.params.get("newPasswordConfirm")!=null) {
  153. currentUser.name = toProcess.params.get("newName");
  154. currentUser.address = toProcess.params.get("newAddress");
  155. currentUser.password = toProcess.params.get("newPassword");
  156. db.commit();
  157.  
  158. toProcess.r = new WebResponse(WebResponse.HTTP_OK, WebResponse.MIME_HTML, "<html><body><script>window.location.href = \"/ChangeDetailsSuccessful.html\"</script></body></html>");
  159.  
  160. }else {
  161. toProcess.r = new WebResponse(WebResponse.HTTP_OK, WebResponse.MIME_HTML, "<html><body><script>window.location.href = \"/ChangeDetailsFailed.html\"</script></body></html>");
  162. }
  163.  
  164. return true;
  165.  
  166.  
  167. }else if(toProcess.path.equalsIgnoreCase("SubmitNewProfilePicture")) {
  168. System.out.println("Changing Profile Picture");
  169. System.out.println(toProcess.params.get("fileupload"));
  170.  
  171. if(toProcess.params.get("fileupload") !=null) {
  172. try {
  173. String newfilepath = toProcess.params.get("fileupload");
  174. File uploaded = new File(newfilepath);
  175. int ind = newfilepath.lastIndexOf('.');
  176. String extension = newfilepath.substring(ind);
  177. uploaded.renameTo(new File("httpdocs/"+"profile_pic_" + System.currentTimeMillis() +extension));
  178. newfilepath = "profile_pic_" + System.currentTimeMillis() + extension;
  179. toProcess.r = new WebResponse(WebResponse.HTTP_OK, WebResponse.MIME_HTML, "<html><body><script>window.location.href = \"/ChangePictureSuccess.html\"</script></body></html>");
  180. }catch( StringIndexOutOfBoundsException e ) {
  181. toProcess.r = new WebResponse(WebResponse.HTTP_OK, WebResponse.MIME_HTML, "<html><body><script>window.location.href = \"/ChangePictureFailed.html\"</script></body></html>");
  182. }
  183. }else {
  184. toProcess.r = new WebResponse(WebResponse.HTTP_OK, WebResponse.MIME_HTML, "<html><body><script>window.location.href = \"/ChangePictureFailedNoPicture.html\"</script></body></html>");
  185. }
  186.  
  187. return true;
  188. }else {
  189. return false;
  190. }
  191.  
  192. }catch(NullPointerException npe) {
  193.  
  194. if(toProcess.path.equalsIgnoreCase("accountview") || toProcess.path.equalsIgnoreCase("account.html"))
  195. {
  196.  
  197. System.out.println("\n\nRequest for Web Page: " + toProcess.path);
  198. String username = toProcess.cookies.get("username");
  199.  
  200. String stringToSendToBrowser = "";
  201. stringToSendToBrowser += "<!DOCTYPE html>\r\n";
  202. stringToSendToBrowser += "<html>\r\n";
  203. stringToSendToBrowser += "\r\n";
  204. stringToSendToBrowser += "<head>\r\n";
  205. stringToSendToBrowser += " <link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css\" type=\"text/css\">\r\n";
  206. stringToSendToBrowser += " <link rel=\"stylesheet\" href=\"now-ui-kit.css\" type=\"text/css\">\r\n";
  207. stringToSendToBrowser += " <link rel=\"stylesheet\" href=\"https://unpkg.com/leaflet@1.4.0/dist/leaflet.css\" />\r\n";
  208. stringToSendToBrowser += "</head>\r\n";
  209. stringToSendToBrowser += "\r\n";
  210. stringToSendToBrowser += "<body class=\"text-left\">\r\n";
  211. stringToSendToBrowser += " <nav class=\"navbar navbar-expand-md navbar-dark bg-dark\">\r\n";
  212. stringToSendToBrowser += " <div class=\"container\"> <button class=\"navbar-toggler navbar-toggler-right border-0\" type=\"button\" data-toggle=\"collapse\" data-target=\"#navbar12\" style=\"\">\r\n";
  213. stringToSendToBrowser += " <span class=\"navbar-toggler-icon\"></span>\r\n";
  214. stringToSendToBrowser += " </button>\r\n";
  215. stringToSendToBrowser += " <div class=\"collapse navbar-collapse\" id=\"navbar12\"> <a class=\"navbar-brand d-none d-md-block\" href=\"index.html\">\n";
  216. stringToSendToBrowser += " <i class=\"fa d-inline fa-lg fa-wrench\"></i>\n";
  217. stringToSendToBrowser += " <b>&nbsp;FILL MY HOLE</b>\n";
  218. stringToSendToBrowser += " </a>\n";
  219. stringToSendToBrowser += " <ul class=\"navbar-nav mx-auto\">\r\n";
  220. stringToSendToBrowser += " <li class=\"nav-item\"> <a class=\"nav-link\" href=\"#reportForm\">Report a Problem</a> </li>\r\n";
  221. stringToSendToBrowser += " <li class=\"nav-item\"> <a class=\"nav-link\" href=\"#\">Your Area</a> </li>\r\n";
  222. stringToSendToBrowser += " <li class=\"nav-item\"> <a class=\"nav-link\" href=\"HelpView\">FAQ</a> </li>\r\n";
  223. stringToSendToBrowser += " <li class=\"nav-item\"> <a class=\"nav-link\" href=\"AboutUsView\">About Us</a> </li>\r\n";
  224. stringToSendToBrowser += " </ul>\r\n";
  225. stringToSendToBrowser += " <ul class=\"navbar-nav\">\r\n";
  226.  
  227. // Account actions alter depending if user is signed in
  228. if(username!=null)
  229. {
  230. stringToSendToBrowser += " <li class=\"nav-item\"> <a class=\"nav-link\" href=\"#\">Welcome "+ username +"</a> </li>\n";
  231. }
  232. else
  233. {
  234. stringToSendToBrowser += " <li class=\"nav-item\"> <a class=\"nav-link\" href=\"login.html\">Login</a> </li>\n";
  235. stringToSendToBrowser += " <li class=\"nav-item\"> <a class=\"nav-link\" href=\"#\">|</a> </li>\n";
  236. stringToSendToBrowser += " <li class=\"nav-item\"> <a class=\"nav-link text-primary\" href=\"signup.html\">Register</a> </li>\n";
  237. }
  238.  
  239. stringToSendToBrowser += " </ul>\r\n";
  240. stringToSendToBrowser += " </div>\r\n";
  241. stringToSendToBrowser += " </div>\r\n";
  242. stringToSendToBrowser += " </nav>\r\n";
  243. stringToSendToBrowser += " <div class=\"text-center text-white\" style=\"background-image: linear-gradient(rgba(0, 0, 0, 0.75), rgba(0, 0, 0, 0.75)), url(&quot;https://static.pingendo.com/cover-bubble-dark.svg&quot;); background-position: center center, center center; background-size: cover, cover; background-repeat: repeat, repeat;\" >\r\n";
  244. stringToSendToBrowser += " <div class=\"container py-4\" style=\"width: 1200px; height: 700px;>\r\n";
  245. stringToSendToBrowser += " <div class=\"row\">\r\n";
  246. stringToSendToBrowser += " <div class=\"card text-white bg-dark my-3 align-center\">\r\n";
  247. stringToSendToBrowser += " <div class=\"card-header text-center\"><b class=\"w-100 h-100\">You cannot access Account Page without signing in!</b></div>\r\n";
  248. stringToSendToBrowser += " <div class=\"card-body\">\r\n";
  249. stringToSendToBrowser += " <p>Sign in to view you account details or create a profile!</p><br>";
  250. stringToSendToBrowser += " <a class=\"btn btn-primary my-3\" href=\"login.html\"><b class=\"text-center\">Sign in</b></a>\r\n";
  251. stringToSendToBrowser += " </div>\r\n";
  252. stringToSendToBrowser += " </div>\r\n";
  253. stringToSendToBrowser += " </div>\r\n";
  254. stringToSendToBrowser += " </div>\r\n";
  255. stringToSendToBrowser += " </div>\r\n";
  256. stringToSendToBrowser += " </div>\r\n";
  257. stringToSendToBrowser += "</body>\r\n";
  258. stringToSendToBrowser += "</html>\r\n";
  259.  
  260. toProcess.r = new WebResponse( WebResponse.HTTP_OK, WebResponse.MIME_HTML, stringToSendToBrowser );
  261.  
  262. return true;
  263. }
  264. return false;
  265. }
  266.  
  267. }
  268. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement