Skip to content

Commit f345c91

Browse files
committed
회원가입 구현
1 parent a85fda3 commit f345c91

10 files changed

Lines changed: 181 additions & 0 deletions

File tree

app.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ autoIncrement.initialize(connect);
2222

2323

2424
var admin = require('./routes/admin');
25+
var accounts =require('./routes/accounts');
2526
//contacts
2627
var contacts = require('./routes/contacts');
2728

@@ -51,6 +52,7 @@ app.get('/', function (req, res) {//get방식으로 보내기
5152

5253
app.use('/admin', admin);
5354
app.use('/contacts', contacts);
55+
app.use('/accounts', accounts);
5456

5557
app.listen(port, function () { //서버에 띄어주는
5658
console.log('Express listening on port', port);

libs/passwordHash.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
var crypto = require('crypto');
2+
var mysalt = "whr";
3+
4+
module.exports = function(password){
5+
return crypto.createHash('sha512').update(password + mysalt).digest('base64');
6+
};

models/UserModel.js

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
var mongoose = require('mongoose');
2+
var Schema = mongoose.Schema;
3+
var autoIncrement = require('mongoose-auto-increment');
4+
5+
var UserSchema = new Schema({
6+
username: {
7+
type: String,
8+
required: [true, '아이디는 필수입니다.']
9+
},
10+
password: {
11+
type: String,
12+
required: [true, '패스워드는 필수입니다.']
13+
},
14+
displayname: String,
15+
created_at: {
16+
type: Date,
17+
default: Date.now()
18+
}
19+
});
20+
21+
UserSchema.plugin(autoIncrement.plugin, { model: "user", field: "id", startAt: 1 });
22+
module.exports = mongoose.model('user', UserSchema);

routes/accounts.js

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
var express = require('express');
2+
var router = express.Router();
3+
var UserModel = require('../models/UserModel');
4+
var passwordHash = require('../libs/passwordHash');
5+
6+
router.get('/',function(req,res){
7+
res.send('account app');
8+
});
9+
router.get('/join',function(req,res){
10+
res.render('accounts/join');
11+
});
12+
13+
//라우팅
14+
//POST /join
15+
router.post('/join',function(req,res){
16+
var User = new UserModel({
17+
username : req.body.username,
18+
password : passwordHash(req.body.password),
19+
displayname : req.body.displayname
20+
});
21+
User.save(function(err){
22+
res.send('<script>alert("회원가입 성공");\
23+
location.href="/accounts/login";</script>');
24+
});
25+
});
26+
27+
router.get('/login',function(req,res){
28+
res.render('accounts/login');
29+
});
30+
31+
32+
33+
module.exports =router;

uploads/products-1517231459542.png

373 KB
Loading

uploads/products-1517231555863.png

94.9 KB
Loading

uploads/products-1517231598905.png

94.9 KB
Loading

views/accounts/join.ejs

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
<% include ../header.ejs %>
2+
<div class="row">
3+
<div class="col-md-4 col-md-offset-4">
4+
<div class="login-panel panel panel-default">
5+
<div class="panel-heading">
6+
<h3 class="panel-title">회원가입</h3>
7+
</div>
8+
<div class="panel-body">
9+
<form role="form" action="" id="join_form" method="post">
10+
<fieldset>
11+
<div class="form-group">
12+
<input class="form-control" placeholder="ID" name="username" type="text" autofocus="" required="">
13+
</div>
14+
<div class="form-group">
15+
<input class="form-control" placeholder="Password" name="password" type="password" value="" required="">
16+
</div>
17+
<div class="form-group">
18+
<input class="form-control" placeholder="Password 확인" name="password2" type="password" value="" required="">
19+
</div>
20+
<div class="form-group">
21+
<input class="form-control" placeholder="이름" name="displayname" type="text" value="" required="">
22+
</div>
23+
<!-- Change this to a button or input when using this as a form -->
24+
<input type="submit" class="btn btn-lg btn-success btn-block" value="가입하기">
25+
</fieldset>
26+
</form>
27+
</div>
28+
</div>
29+
</div>
30+
</div>
31+
<!--하위버전을 위한 javascript validation-->
32+
<script type="text/javascript">
33+
(function(){
34+
$(document).ready(function() {
35+
$('#join_form').submit(function(){
36+
var $usernameInput = $('#join_form input[name=username]');
37+
var $passwordInput = $('#join_form input[name=password]');
38+
var $passwordInput2 = $('#join_form input[name=password2]');
39+
var $displayname = $('#join_form input[name=displayname]');
40+
41+
if(!$usernameInput.val()){
42+
alert("아이디를 입력해주세요.");
43+
$usernameInput.focus();
44+
return false;
45+
}
46+
if(!$passwordInput.val()){
47+
alert("패스워드를 입력해주세요.");
48+
$passwordInput.focus();
49+
return false;
50+
}
51+
if(!$passwordInput2.val()){
52+
alert("확인 패스워드를 입력해주세요.");
53+
$passwordInput2.focus();
54+
return false;
55+
}
56+
if(!$displayname.val()){
57+
alert("이름을 입력해주세요.");
58+
$displayname.focus();
59+
return false;
60+
}
61+
if($passwordInput.val() !== $passwordInput2.val()){
62+
alert("패스워드와 확인용패스워드를 똑같이 입력해주세요.");
63+
return false;
64+
}
65+
return true;
66+
});
67+
});
68+
})();
69+
</script>
70+
<% include ../footer.ejs %>

views/accounts/login.ejs

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
<% include ../header.ejs %>
2+
<div class="row">
3+
<div class="col-md-4 col-md-offset-4">
4+
<div class="login-panel panel panel-default">
5+
<div class="panel-heading">
6+
<h3 class="panel-title">로그인</h3>
7+
</div>
8+
<div class="panel-body">
9+
<form role="form" action="" id="login_form" method="post">
10+
<fieldset>
11+
<div class="form-group">
12+
<input class="form-control" placeholder="ID" name="username" type="text" autofocus="" required="">
13+
</div>
14+
<div class="form-group">
15+
<input class="form-control" placeholder="Password" name="password" type="password" value="" required="">
16+
</div>
17+
<!-- Change this to a button or input when using this as a form -->
18+
<input type="submit" class="btn btn-lg btn-success btn-block" value="로그인">
19+
</fieldset>
20+
</form>
21+
</div>
22+
</div>
23+
</div>
24+
</div>
25+
<script type="text/javascript">
26+
(function(){
27+
$(document).ready(function() {
28+
$('#login_form').submit(function(){
29+
var $usernameInput = $('#login_form input[name=username]');
30+
var $passwordInput = $('#login_form input[name=password]');
31+
32+
if(!$usernameInput.val()){
33+
alert("아이디를 입력해주세요.");
34+
$usernameInput.focus();
35+
return false;
36+
}
37+
if(!$passwordInput.val()){
38+
alert("패스워드를 입력해주세요.");
39+
$passwordInput.focus();
40+
return false;
41+
}
42+
43+
return true;
44+
});
45+
});
46+
})();
47+
</script>
48+
<% include ../footer.ejs %>

0 commit comments

Comments
 (0)