node+mongoDb+Vue+elementUI实现资金管理后台系统(四)---增加身份字段和配置用户信息接口

  1. 增加注册身份字段
    前台注册的时候,是需要我们选择 不同的身份,然后对后台进行不同的操作,这也是一种权限的处理。
    node+mongoDb+Vue+elementUI实现资金管理后台系统(四)---增加身份字段和配置用户信息接口_第1张图片
    在models/User.js下增加identity字段
    node+mongoDb+Vue+elementUI实现资金管理后台系统(四)---增加身份字段和配置用户信息接口_第2张图片
    在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,用来配置用户信息的字段
node+mongoDb+Vue+elementUI实现资金管理后台系统(四)---增加身份字段和配置用户信息接口_第3张图片
在routes文件夹下创建profiles.js和引入Profile模型
node+mongoDb+Vue+elementUI实现资金管理后台系统(四)---增加身份字段和配置用户信息接口_第4张图片
在server.js中设置profiles的路径
node+mongoDb+Vue+elementUI实现资金管理后台系统(四)---增加身份字段和配置用户信息接口_第5张图片
node+mongoDb+Vue+elementUI实现资金管理后台系统(四)---增加身份字段和配置用户信息接口_第6张图片

你可能感兴趣的:(前端框架,vue,nodejs)