Advertisement
Guest User

controllers/UsersController.js

a guest
Mar 16th, 2017
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.35 KB | None | 0 0
  1. "use strict";
  2. var UsersController = function(app){
  3.  
  4. let StoreRequest=require('../requests/StoreUsers');
  5. let UpdateRequest=require('../requests/UpdateUserRequest');
  6. let models = require('../models');
  7. let async = require('async');
  8. let bcrypt = require('bcryptjs');
  9. let salt = bcrypt.genSaltSync(10);
  10. let hash = bcrypt.hashSync("password", salt);
  11. const fs = require('fs');
  12.  
  13. let get= function(req,res){
  14. models.User.findAll({attributes: {
  15. exclude: ['password']
  16. }}).then(function(data) {
  17. res.json({
  18. data_baru: data
  19. });
  20. });
  21. };
  22.  
  23.  
  24. let insert = function(req, res){
  25. req.checkBody(StoreRequest);
  26. let errors = req.validationErrors();
  27. if (errors){
  28.  
  29. res.status(422).json({
  30. msg_errors: errors
  31. });
  32.  
  33. }else{
  34.  
  35.  
  36. req.body.password=bcrypt.hashSync(req.body.password, salt);
  37.  
  38.  
  39. if (req.file) {
  40. req.body.avatar = req.file.filename;
  41. }else{
  42. req.body.avatar = "eror";
  43. }
  44. let arr = {
  45. fullname: req.body.fullname,
  46. email: req.body.email,
  47. password: req.body.password,
  48. avatar: req.body.avatar,
  49. phone: req.body.phone,
  50. address_id: req.body.address_id,
  51. is_buyer: req.body.is_buyer,
  52. is_seller: req.body.is_seller,
  53. is_affiliate: req.body.is_affiliate,
  54. is_active: req.body.is_active,
  55. last_login: req.body.last_login
  56.  
  57. }
  58.  
  59. models.User.find({
  60. where: {
  61. email: req.body.email
  62. }
  63. }).then(function(User){
  64. if (User){
  65. res.status(422).json({
  66. errors: [
  67. {
  68. param: "email",
  69. msg: "email already exist"
  70. }
  71. ]
  72. });
  73. }else{
  74. var pass=req.body.password;
  75. models.User.create(arr).then(function(data){
  76. res.status(201).json({
  77. message: "success",
  78. new_data: data
  79. });
  80. });
  81. }
  82. })
  83. }
  84. };
  85.  
  86. // models.Topup.sum('nominal',{
  87. // where:{
  88. // user_id: req.params.user_id
  89. // }
  90. // }).then(function(sum) {
  91.  
  92. // res.status(201).json({
  93. // nominal: sum
  94. // });
  95.  
  96. // })
  97.  
  98. let sortData = function(req, res){
  99. models.User.findAll({
  100. order: [
  101. ['id', 'ASC']
  102. ],
  103. }).then(function(data){
  104. res.status(201).json({
  105. data_user: data
  106. });
  107. });
  108. };
  109.  
  110. let getId = function(req, res){
  111. models.User.findOne({
  112. where: {
  113. id: req.params.id,
  114. },
  115. }).then(function(data){
  116. if(data){
  117. res.status(201).json({
  118. data_user: data
  119. });
  120. }else{
  121. res.status(422).json({
  122. message: "error"
  123. });
  124. }
  125. });
  126. };
  127.  
  128. let put = function(req, res){
  129.  
  130. models.User.findOne({
  131. where: {
  132. id: req.params.id
  133. }
  134. }).then(function(User){
  135.  
  136. if (User) {
  137.  
  138.  
  139. let data = {
  140. fullname: req.body.fullname,
  141. email: req.body.email,
  142. // password: req.body.password,
  143. phone: req.body.phone,
  144. // address_id: req.body.address_id,
  145. // is_buyer: req.body.is_buyer,
  146. // is_seller: req.body.is_seller,
  147. // is_affiliate: req.body.is_affiliate,
  148. // is_active: req.body.is_active
  149. };
  150.  
  151.  
  152. if (req.file) {
  153. data.avatar = req.file.filename;
  154.  
  155. if (User.avatar != "") {
  156. let image = 'uploads/users/'+User.avatar;
  157.  
  158. fs.stat(image, function(err,stat){
  159. if (err == null) {
  160. fs.unlink(image);
  161. }
  162. })
  163. }
  164. }
  165.  
  166.  
  167. User.update(data).then(function(){
  168. res.status(201).json({
  169. message: "success",
  170. data_baru: data
  171. })
  172. });
  173.  
  174. }else{
  175.  
  176. res.status(401).json({
  177. message:"errors"
  178. });
  179.  
  180. }
  181.  
  182. });
  183.  
  184. };
  185.  
  186.  
  187.  
  188. let remove = function(req, res){
  189. models.User.findOne({
  190. where:{
  191. id: req.params.id
  192. }
  193. }).then(function(kaude){
  194. if (kaude){
  195. kaude.destroy(req.body).then(function(){
  196. res.status(201).json({
  197. message: "Data kaude with id "+ req.params.id +" successfully removed",
  198. // data_remove: req.body
  199. })
  200. })
  201. let image = 'uploads/users/'+kaude.avatar;
  202.  
  203. fs.stat(image, function(err,stat){
  204. if (err == null) {
  205. fs.unlink(image);
  206. }
  207. })
  208. }else{
  209. res.status(422).json({
  210. message: "errors"
  211. });
  212. }
  213. });
  214. }
  215.  
  216. let updatePassword=function(req,res){
  217. req.checkBody(UpdateRequest);
  218. let errors=req.validationErrors();
  219. if(errors){
  220. res.status(422).json({
  221. errors:errors
  222. });
  223. }
  224. else{
  225. req.body.password=bcrypt.hashSync(req.body.password, salt);
  226. models.User.findOne({
  227. where:{
  228. id :req.body.id
  229. }}).then(function(User){
  230. if(User){
  231. if (req.body.password == User.password){
  232. if (req.body.new_password == req.body.confirm_password) {
  233. let data = {
  234. password: bcrypt.hashSync(req.body.confirm_password, salt)
  235. };
  236. User.update(data).then(function(User) {
  237. res.json({
  238. msg:"Password has been updated"
  239. });
  240. });
  241. }else{
  242. res.status(442).json({
  243. message: "your password is doesn't match"
  244. });
  245. }
  246. }else{
  247. res.status(402).json({
  248. msg_errors:"Wrong Password"
  249. });
  250. }
  251. }else{
  252. res.status(422).json({
  253. msg_errors:"Error"
  254. });
  255. }
  256.  
  257. })
  258. }
  259. };
  260.  
  261. let coba=function(req, res){
  262. res.send(bcrypt.hashSync(req.body.password, salt))
  263. // let passwordToSave = bcrypt.hashSync(req.body.password, salt)
  264. };
  265.  
  266. return{
  267. add: insert,
  268. getAll: sortData,
  269. getById: getId,
  270. update: put,
  271. delete: remove,
  272. newPassword: updatePassword,
  273. coba: coba
  274.  
  275.  
  276.  
  277. };
  278. }
  279.  
  280.  
  281. module.exports = UsersController;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement