Browse Source

signup api

허용운 5 years ago
parent
commit
f6b94022c4
3 changed files with 60 additions and 2 deletions
  1. 25 0
      server/models/user.js
  2. 32 0
      server/routes/auth.js
  3. 3 2
      server/server.js

+ 25 - 0
server/models/user.js

@@ -1,5 +1,6 @@
 const mongoose = require('mongoose')
 const Schema = mongoose.Schema
+const bcrypt = require('bcrypt-nodejs')
 
 const UserSchema = new Schema({
   name: String,
@@ -8,4 +9,28 @@ const UserSchema = new Schema({
   address: { type:Schema.Types.ObjectId, ref: 'Address' }
 })
 
+UserSchema.pre('save', function(next) {
+  let user = this
+  if (this.isModified('password') || this.isNew) {
+    // bcrypt.hash
+    bcrypt.genSalt(10, function(err, salt) {
+      if (err) {
+        return next(err)
+      }
+
+      bcrypt.hash(user.password, salt, null, function (err, hash) {
+        if (err) {
+          return next (err)
+        }
+        
+        user.password = hash
+        next()
+      })
+
+    })
+  } else {
+    return next()
+  }
+})
+
 module.exports = mongoose.model('User', UserSchema)

+ 32 - 0
server/routes/auth.js

@@ -0,0 +1,32 @@
+const router = require('express').Router()
+const User = require('../models/user')
+
+const jwt = require('jsonwebtoken')
+
+router.post('/auth/signup', async (req, res) => {
+  if (!req.body.email || !req.body.password) {
+    res.json({ success: false, message: 'please enter email or password' })
+  } else {
+    try {
+      let newUser = new User()
+      newUser.name = req.body.name
+      newUser.email = req.body.email
+      newUser.password =  req.body.password
+      await newUser.save()
+
+      let token =  jwt.sign(newUser.toJSON(), process.env.SECRET, {
+        expiresIn: 604800
+      })
+
+      res.json({
+        success: true,
+        token,
+        message: 'Succes created a new User'
+      })
+    } catch (err) {
+
+    }
+  }
+})
+
+module.exports = router

+ 3 - 2
server/server.js

@@ -5,8 +5,6 @@ const mongoose = require('mongoose')
 const dotenv = require('dotenv')
 const cors = require('cors')
 
-const User = require('./models/user')
-
 dotenv.config()
 
 const app = express()
@@ -30,10 +28,13 @@ app.use(bodyParser.urlencoded({ extended: false }))
 const productRouters = require('./routes/products')
 const categoryRouters = require('./routes/category')
 const ownerRouters = require('./routes/owner')
+const userRouters = require('./routes/auth')
+
 
 app.use('/api', productRouters)
 app.use('/api', categoryRouters)
 app.use('/api', ownerRouters)
+app.use('/api', userRouters)
 
 app.listen(3000, (err) => {
   if (err) {