12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- package service
- import (
- "exam_system/dao"
- "exam_system/entity"
- "exam_system/middleware/claims"
- "exam_system/result"
- "exam_system/vo"
- "github.com/gin-gonic/gin"
- "golang.org/x/crypto/bcrypt"
- "strings"
- )
- func Login(u *vo.UserVo) *result.Result {
- // 1、查询
- res := dao.FindUserbySid(u.Sid)
- if res.Data == nil {
- return res
- }
- // 2、查询角色
- userVo := res.Data.(vo.UserVo)
- roleNames := strings.Split(*userVo.RoleName, ",")
- // 3、解密
- err := bcrypt.CompareHashAndPassword([]byte(userVo.Password), []byte(u.Password))
- if err != nil {
- return result.PASSWORD_ERROR
- }
- // 4、判断角色是否存在
- roleExist := false
- for _, roleName := range roleNames {
- if roleName == *u.RoleName {
- roleExist = true
- break
- }
- }
- if !roleExist {
- return result.USER_IS_NOT_EXISTED
- }
- if *userVo.Status != entity.NORMAL {
- return result.USER_PENDING_REVIEW
- }
- // 4、生产token
- token, err := claims.GenToken(userVo.ID, userVo.Username, userVo.Sid, roleNames)
- if err != nil {
- return result.UNKNOW_ERROR
- }
- userVo.Password = ""
- return result.SUCCESS.SetData(gin.H{
- "token": token,
- "user": userVo,
- })
- }
- // AddUser 管理员,用户公用
- func AddUser(u *entity.User, userTypes string) *result.Result {
- // 1、加密
- hash, _ := bcrypt.GenerateFromPassword([]byte(u.Password), bcrypt.DefaultCost)
- u.Password = string(hash)
- // 2、插入用户表
- res := dao.InsertUser(u, userTypes)
- if res != result.SUCCESS {
- return res
- }
- return res
- }
|