Advertisement
Guest User

Untitled

a guest
Apr 20th, 2016
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.88 KB | None | 0 0
  1.  
  2. var crypto = require('crypto');
  3. var mongoose = require('mongoose'),
  4. User = mongoose.model('User');
  5.  
  6. function hashPW(pwd){
  7. // 비밀번호 단방향 암호화
  8. return crypto.createHash('sha256').update(pwd).digest('base64').toString();
  9. }
  10.  
  11. /* 회원가입 */
  12. exports.signup = function(req, res){
  13.  
  14. console.log(req.body);
  15.  
  16. var newUser = new User({ email: req.body.email });
  17. newUser.set('username', req.body.username);
  18. newUser.set('password', hashPW(req.body.password));
  19.  
  20. User.findOne({ email: req.body.email }).exec(function(err, user) {
  21.  
  22. if(err){
  23. req.session.regenerate(function(){
  24. req.session.msg = '서버 접속에 문제가 생겼습니다.';
  25. res.redirect('/login');
  26. });
  27. }
  28. else {
  29.  
  30. if (user) {
  31. req.session.regenerate(function(){
  32. req.session.msg = '해당 이메일과 일치하는 사용자가 존재합니다.';
  33. res.redirect('/signup');
  34. });
  35. }
  36. else {
  37.  
  38. newUser.save(function(err) {
  39. if (err) {
  40. req.session.regenerate(function(){
  41. req.session.msg = '서버 접속에 문제가 생겼습니다.';
  42. res.redirect('/login');
  43. });
  44. }
  45. else {
  46. req.session.user = newUser.id;
  47. req.session.email = newUser.email;
  48. req.session.msg = newUser.email + ' 의 계정으로 로그인되었습니다.';
  49. res.redirect('/');
  50. }
  51. });
  52.  
  53. }
  54.  
  55. }
  56. });
  57. };
  58.  
  59. /* 로그인 */
  60. exports.login = function(req, res){
  61.  
  62. console.log(req.body);
  63.  
  64. User.findOne({ email: req.body.email, deleted: 0 }).exec(function(err, user) {
  65.  
  66. if(err){
  67. req.session.regenerate(function(){
  68. req.session.msg = '서버 접속에 문제가 생겼습니다.';
  69. res.redirect('/login');
  70. });
  71. }
  72. else {
  73.  
  74. if (!user){
  75. req.session.regenerate(function(){
  76. req.session.msg = '해당 계정과 일치하는 사용자가 없습니다.';
  77. res.redirect('/login');
  78. });
  79. }
  80. else if (user.password === hashPW(req.body.password.toString())) {
  81. req.session.regenerate(function(){
  82. req.session.user = user.id;
  83. req.session.email = user.email;
  84. req.session.msg = user.email + ' 의 계정으로 로그인되었습니다.';
  85. res.redirect('/');
  86. });
  87. }
  88. else {
  89. req.session.regenerate(function(){
  90. req.session.msg = '해당 계정과 비밀번호가 일치하지 않습니다.';
  91. res.redirect('/login');
  92. });
  93. }
  94.  
  95. }
  96. });
  97. };
  98.  
  99. /* 로그아웃 */
  100. exports.logout = function(req, res){
  101.  
  102. req.session.regenerate(function(){
  103. req.session.msg = '성공적으로 로그아웃되었습니다.';
  104. res.redirect('/login');
  105. });
  106. };
  107.  
  108. /* 사용자 정보 불러오기 */
  109. exports.getUser = function(req, res) {
  110. User.findOne({ _id: req.session.user, deleted: 0 }).exec(function(err, user) {
  111. if (!user){
  112. res.json(404, {err: 'User Not Found.'});
  113. } else {
  114. res.json(user);
  115. }
  116. });
  117. };
  118.  
  119. /* 사용자 정보 업데이트 */
  120. exports.updateUser = function(req, res){
  121.  
  122. console.log(req.body);
  123.  
  124. User.findOne({ _id: req.session.user, deleted: 0 }).exec(function(err, user) {
  125.  
  126. user.set('username', req.body.username);
  127.  
  128. user.save(function(err) {
  129.  
  130. if (err) {
  131. req.session.regenerate(function(){
  132. req.session.msg = '서버 접속에 문제가 생겼습니다.';
  133. res.redirect('/login');
  134. });
  135. }
  136. else {
  137. req.session.msg = '사용자 정보가 정상적으로 업데이트되었습니다.';
  138. res.redirect('/users');
  139. }
  140. });
  141. });
  142. };
  143.  
  144.  
  145. exports.deleteUser = function(req, res){
  146.  
  147. User.findOne({ _id: req.session.user, deleted: 0 }).exec(function(err, user) {
  148.  
  149. user.set('deleted', 1);
  150.  
  151. user.save(function(err) {
  152.  
  153. if (err) {
  154. req.session.regenerate(function(){
  155. req.session.msg = '서버 접속에 문제가 생겼습니다.';
  156. res.redirect('/login');
  157. });
  158. }
  159. else {
  160. req.session.regenerate(function(){
  161. req.session.msg = '정상적으로 탈퇴되었습니다.';
  162. res.redirect('/login');
  163. });
  164. }
  165. });
  166. });
  167. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement