user.go 1.6KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. package user
  2. import (
  3. "net/http"
  4. "strings"
  5. "wechat-conf/models/model"
  6. "wechat-conf/models/user"
  7. "wechat-conf/utils"
  8. "github.com/yl10/kit/encrypt"
  9. )
  10. // UserServ 用户
  11. type UserServ struct {
  12. ctx *utils.Context
  13. dao *user.UserDAO
  14. }
  15. // NewUserServ 初始化
  16. func NewUserServ(ctx *utils.Context) *UserServ {
  17. return &UserServ{
  18. ctx: ctx,
  19. dao: user.NewUserDAO(ctx),
  20. }
  21. }
  22. // CheckUserRoute 判断用户理由
  23. func (s *UserServ) CheckUserRoute(userId, route, method string) (int, error) {
  24. if strings.Index(route, "admin") < 0 {
  25. return http.StatusOK, nil
  26. }
  27. // 如果没有登录
  28. if userId == "" {
  29. return http.StatusUnauthorized, utils.LogError("请先登录系统")
  30. }
  31. return http.StatusOK, nil
  32. }
  33. // ValidUserNameLogin 验证登陆
  34. func (s *UserServ) ValidUserNameLogin(userName, pass string) (*model.SysUser, error) {
  35. user, err := s.dao.GetUserByUserName(userName)
  36. if err != nil {
  37. return nil, err
  38. }
  39. if !s.ValidatePassword(&user, pass) {
  40. return nil, utils.LogError("用户密码不正确")
  41. }
  42. return &user, nil
  43. }
  44. // UpdatePassword 更新用户密码
  45. func (s *UserServ) UpdatePassword(userID, newPass string) error {
  46. return s.dao.UpdatePassword(userID, newPass)
  47. }
  48. // ValidatePassword 验证密码是否正确
  49. func (s *UserServ) ValidatePassword(user *model.SysUser, password string) bool {
  50. return user.Pwd == encrypt.Md5(password, user.UserId)
  51. }
  52. // GetUserByID 根据ID获取用户信息
  53. func (s *UserServ) GetUserByID(userid string) (*model.SysUser, error) {
  54. user, err := s.dao.GetUserByID(userid)
  55. if err != nil {
  56. return nil, err
  57. }
  58. return user, nil
  59. }