adminService.go 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. package service
  2. import (
  3. "gfast/library/response"
  4. "gfast/library/utils"
  5. "github.com/gogf/gf/crypto/gmd5"
  6. "github.com/gogf/gf/net/ghttp"
  7. "github.com/gogf/gf/util/gvalid"
  8. )
  9. var (
  10. AdminMultiLogin bool //是否允许后台管理员多端登陆
  11. AdminPageNum = 20 //后台分页长度
  12. NotCheckAuthAdminIds []int //无需验证权限的用户id
  13. )
  14. //AdminLogin 后台用户登陆验证
  15. func AdminLogin(r *ghttp.Request) (string, interface{}) {
  16. data := r.GetFormMapStrStr()
  17. rules := map[string]string{
  18. "idValueC": "required",
  19. "username": "required",
  20. "password": "required",
  21. }
  22. msgs := map[string]interface{}{
  23. "idValueC": "请输入验证码",
  24. "username": "账号不能为空",
  25. "password": "密码不能为空",
  26. }
  27. if e := gvalid.CheckMap(data, rules, msgs); e != nil {
  28. response.JsonExit(r, response.ErrorCode, e.String())
  29. }
  30. //判断验证码是否正确
  31. if !VerifyString(data["idKeyC"], data["idValueC"]) {
  32. response.JsonExit(r, response.ErrorCode, "验证码输入错误")
  33. }
  34. password := utils.EncryptCBC(data["password"], utils.AdminCbcPublicKey)
  35. var keys string
  36. if AdminMultiLogin {
  37. keys = data["username"] + password + gmd5.MustEncryptString(utils.GetClientIp(r))
  38. } else {
  39. keys = data["username"] + password
  40. }
  41. ip := utils.GetClientIp(r)
  42. userAgent := r.Header.Get("User-Agent")
  43. if err, user := signIn(data["username"], password, r); err != nil {
  44. go loginLog(0, data["username"], ip, userAgent, err.Error(), "系统后台")
  45. response.JsonExit(r, response.ErrorCode, err.Error())
  46. } else {
  47. //判断是否后台用户
  48. if user.IsAdmin != 1 {
  49. response.JsonExit(r, response.ErrorCode, "抱歉!此用户不属于后台管理员!")
  50. }
  51. r.SetParam("userInfo", user)
  52. go loginLog(1, data["username"], ip, userAgent, "登录成功", "系统后台")
  53. return keys, user
  54. }
  55. return keys, nil
  56. }