node+mongoDb+Vue+elementUI实现资金管理后台系统(四)---增加身份字段和配置用户信息接口
-
增加注册身份字段
前台注册的时候,是需要我们选择 不同的身份,然后对后台进行不同的操作,这也是一种权限的处理。
在models/User.js下增加identity字段
在routes/api/user.js下
//@login & register
const express = require("express");
const router = express.Router();
const gravatar = require("gravatar");
const jwt = require("jsonwebtoken");
const keys = require("../../config/keys");
const passport = require("passport");
//引入user.js
const User = require("../../models/User");
router.get("/test",(req,res)=>{
res.json(
{msg:"test works"}
)
})
//POST api/users/register
router.post("/register",(req,res)=>{
//查询数据是否拥有邮箱
// console.log(req.body)
User.findOne({email:req.body.email})
.then((user)=>{
if(user){
return res.status(400).json("邮箱已经注册了")
}else {
const avatar = gravatar.url(req.body.email, {s: '200', r: 'pg', d: 'mm'});
const newUser = new User({
name:req.body.name,
email:req.body.email,
avatar,
password:req.body.password,
identity:req.body.identity
})
newUser.save()
.then((user)=>{
res.json(user)
})
.catch((err)=>{
})
}
})
})
//POST api/users/login
//返回token 引入jwt模块
router.post("/login",(req,res)=>{
const email = req.body.email;
const password = req.body.password;
//查询数据库
User.findOne({email})
.then(user=>{
//用户不存在
if(!user){
return res.status(404).json("用户不存在");
}
//密码匹配
if(password == user.password){
// res.json("success");
const rule = {
id:user.id,
name:user.name,
avatar:user.avatar,
identity:user.identity //新增身份字段
}
jwt.sign(rule,keys.secretOrKey,{expiresIn:3600},(err,token)=>{
if(err) throw err;
res.json({
success:true,
token:"Bearer "+token
})
})
}else {
return res.status(400).json("密码错误了");
}
})
})
//get api/users/current 获取用户信息接口
// return curren user
router.get("/current",passport.authenticate("jwt",{session:false}),(req,res)=>{
// res.json({msg:"success"});
// res.json(req.user);
res.json({
id:req.user.id,
name:req.user.name,
email:req.user.email,
identity:req.user.identity//新增身份字段
})
})
module.exports = router;
配置用户信息接口
在models文件夹下,创建Profile.js,用来配置用户信息的字段
在routes文件夹下创建profiles.js和引入Profile模型
在server.js中设置profiles的路径