はじめに
コード
- POSTされたデータをもとにアクセストークンを作成する。有効時間は1時間
- トークン作成後、ユーザー情報をDBに登録する
- 既に登録済みメールアドレスとDB登録時のエラーが発生したらエラーメッセージ返すようにする
const express = require('express')
const router = express.Router()
const db = require('../models/index')
const logger = require('../lib/logger')
const jwt = require('jsonwebtoken')
const config = require('config')
router.post('/', async (req, res, next) => {
let error_msg = []
// POSTされたデータをもとにアクセストークンを作成する。有効時間は1時間
const token =
jwt.sign(
{user_name: req.body.userName,
password: req.body.password,
birth_day: req.body.birthDay,
sex: req.body.sex,
password: req.body.password}
, 'hogehogehogehoge', { expiresIn: '1h' });
try {
const token = jwt.verify(token, config.secret_key);
} catch(err) {
logger.app.debug(err)
}
if (token) {
db.user.findOrCreate(
{where: {mail_address: req.body.mailAddress},
defaults: {user_name: req.body.userName,
password: req.body.password,
birth_day: req.body.birthDay,
sex: req.body.sex,
token: token,
password: req.body.password,
login_failure_count: 0}}).spread(function(user, created) {
logger.app.debug(created)
if (created) {
user.save();
res.json({success: "登録が完了しました!",error: '',user});
}else{
res.json({success: "",error: "このメールアドレスは既に登録済みです",user: {}});
}
}).catch((error)=>{
error.errors.forEach(e => {
logger.app.debug(e)
error_msg.push(`{${e.path}: ${e.message}}`)
});
res.json({success: '',error: JSON.stringify(error_msg),user: {}});
})
}
});
module.exports = router;
db登録確認