user.go 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. package user_service
  2. import (
  3. "fmt"
  4. "gfast/app/model/role"
  5. "gfast/app/model/user"
  6. "gfast/app/service/casbin_adapter_service"
  7. "gfast/boot"
  8. "github.com/gogf/gf/frame/g"
  9. "github.com/gogf/gf/net/ghttp"
  10. "github.com/gogf/gf/text/gstr"
  11. "github.com/gogf/gf/util/gconv"
  12. )
  13. //获取登陆用户ID
  14. func GetLoginID(r *ghttp.Request) int64 {
  15. resp := boot.AdminGfToken.GetTokenData(r)
  16. userId := resp.GetInt("data")
  17. return gconv.Int64(userId)
  18. }
  19. //获取管理员的角色信息
  20. func GetAdminRole(userId int64) (roles []*role.Entity, err error) {
  21. enforcer, e := casbin_adapter_service.GetEnforcer()
  22. if e != nil {
  23. err = e
  24. return
  25. }
  26. //查询关联角色规则
  27. groupPolicy := enforcer.GetFilteredGroupingPolicy(0, fmt.Sprintf("u_%d", userId))
  28. if len(groupPolicy) > 0 {
  29. roleIds := make([]int64, len(groupPolicy))
  30. //得到角色id的切片
  31. for k, v := range groupPolicy {
  32. roleIds[k] = gconv.Int64(gstr.SubStr(v[1], 2))
  33. }
  34. //获取角色信息
  35. roles, err = role.Model.Where("id in(?)", roleIds).All()
  36. }
  37. return
  38. }
  39. //根据用户id获取用户信息
  40. func GetAdminInfoById(id int64) (userMap g.Map) {
  41. //获取用户角色信息
  42. if id != 0 {
  43. userInfo, err := user.Model.Where("id=?", id).One()
  44. if err != nil {
  45. g.Log().Error(err)
  46. return
  47. }
  48. userMap = gconv.Map(userInfo)
  49. }
  50. return
  51. }
  52. //获取管理员所属角色菜单
  53. func GetAdminMenusByRoleIds(roleIds []int) (menus g.Map, err error) {
  54. //获取角色对应的菜单id
  55. enforcer, e := casbin_adapter_service.GetEnforcer()
  56. if e != nil {
  57. err = e
  58. return
  59. }
  60. for _, roleId := range roleIds {
  61. //查询当前权限
  62. gp := enforcer.GetFilteredPolicy(0, fmt.Sprintf("g_%d", roleId))
  63. g.Log().Debug(gp)
  64. }
  65. return
  66. }