Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- var crypto = require('crypto');
- var mongoose = require('mongoose'),
- User = mongoose.model('User');
- function hashPW(pwd){
- // 비밀번호 단방향 암호화
- return crypto.createHash('sha256').update(pwd).digest('base64').toString();
- }
- /* 회원가입 */
- exports.signup = function(req, res){
- console.log(req.body);
- var newUser = new User({ email: req.body.email });
- newUser.set('username', req.body.username);
- newUser.set('password', hashPW(req.body.password));
- User.findOne({ email: req.body.email }).exec(function(err, user) {
- if(err){
- req.session.regenerate(function(){
- req.session.msg = '서버 접속에 문제가 생겼습니다.';
- res.redirect('/login');
- });
- }
- else {
- if (user) {
- req.session.regenerate(function(){
- req.session.msg = '해당 이메일과 일치하는 사용자가 존재합니다.';
- res.redirect('/signup');
- });
- }
- else {
- newUser.save(function(err) {
- if (err) {
- req.session.regenerate(function(){
- req.session.msg = '서버 접속에 문제가 생겼습니다.';
- res.redirect('/login');
- });
- }
- else {
- req.session.user = newUser.id;
- req.session.email = newUser.email;
- req.session.msg = newUser.email + ' 의 계정으로 로그인되었습니다.';
- res.redirect('/');
- }
- });
- }
- }
- });
- };
- /* 로그인 */
- exports.login = function(req, res){
- console.log(req.body);
- User.findOne({ email: req.body.email, deleted: 0 }).exec(function(err, user) {
- if(err){
- req.session.regenerate(function(){
- req.session.msg = '서버 접속에 문제가 생겼습니다.';
- res.redirect('/login');
- });
- }
- else {
- if (!user){
- req.session.regenerate(function(){
- req.session.msg = '해당 계정과 일치하는 사용자가 없습니다.';
- res.redirect('/login');
- });
- }
- else if (user.password === hashPW(req.body.password.toString())) {
- req.session.regenerate(function(){
- req.session.user = user.id;
- req.session.email = user.email;
- req.session.msg = user.email + ' 의 계정으로 로그인되었습니다.';
- res.redirect('/');
- });
- }
- else {
- req.session.regenerate(function(){
- req.session.msg = '해당 계정과 비밀번호가 일치하지 않습니다.';
- res.redirect('/login');
- });
- }
- }
- });
- };
- /* 로그아웃 */
- exports.logout = function(req, res){
- req.session.regenerate(function(){
- req.session.msg = '성공적으로 로그아웃되었습니다.';
- res.redirect('/login');
- });
- };
- /* 사용자 정보 불러오기 */
- exports.getUser = function(req, res) {
- User.findOne({ _id: req.session.user, deleted: 0 }).exec(function(err, user) {
- if (!user){
- res.json(404, {err: 'User Not Found.'});
- } else {
- res.json(user);
- }
- });
- };
- /* 사용자 정보 업데이트 */
- exports.updateUser = function(req, res){
- console.log(req.body);
- User.findOne({ _id: req.session.user, deleted: 0 }).exec(function(err, user) {
- user.set('username', req.body.username);
- user.save(function(err) {
- if (err) {
- req.session.regenerate(function(){
- req.session.msg = '서버 접속에 문제가 생겼습니다.';
- res.redirect('/login');
- });
- }
- else {
- req.session.msg = '사용자 정보가 정상적으로 업데이트되었습니다.';
- res.redirect('/users');
- }
- });
- });
- };
- exports.deleteUser = function(req, res){
- User.findOne({ _id: req.session.user, deleted: 0 }).exec(function(err, user) {
- user.set('deleted', 1);
- user.save(function(err) {
- if (err) {
- req.session.regenerate(function(){
- req.session.msg = '서버 접속에 문제가 생겼습니다.';
- res.redirect('/login');
- });
- }
- else {
- req.session.regenerate(function(){
- req.session.msg = '정상적으로 탈퇴되었습니다.';
- res.redirect('/login');
- });
- }
- });
- });
- };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement