Update site.go

This commit is contained in:
HHC26 2024-07-11 14:00:40 +08:00 committed by GitHub
parent 8ba99ffbab
commit a6a1c18eae
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -1,18 +1,7 @@
// Package admin
// @Link https://github.com/bufanyun/hotgo
// @Copyright Copyright (c) 2023 HotGo CLI
// @Author Ms <133814250@qq.com>
// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE
package admin package admin
import ( import (
"context" "context"
"github.com/gogf/gf/v2/crypto/gmd5"
"github.com/gogf/gf/v2/database/gdb"
"github.com/gogf/gf/v2/errors/gerror"
"github.com/gogf/gf/v2/frame/g"
"github.com/gogf/gf/v2/os/gtime"
"github.com/gogf/gf/v2/util/grand"
"hotgo/internal/consts" "hotgo/internal/consts"
"hotgo/internal/dao" "hotgo/internal/dao"
"hotgo/internal/library/contexts" "hotgo/internal/library/contexts"
@ -23,6 +12,13 @@ import (
"hotgo/internal/model/input/sysin" "hotgo/internal/model/input/sysin"
"hotgo/internal/service" "hotgo/internal/service"
"hotgo/utility/simple" "hotgo/utility/simple"
"github.com/gogf/gf/v2/crypto/gmd5"
"github.com/gogf/gf/v2/database/gdb"
"github.com/gogf/gf/v2/errors/gerror"
"github.com/gogf/gf/v2/frame/g"
"github.com/gogf/gf/v2/os/gtime"
"github.com/gogf/gf/v2/util/grand"
) )
type sAdminSite struct{} type sAdminSite struct{}
@ -105,7 +101,6 @@ func (s *sAdminSite) Register(ctx context.Context, in *adminin.RegisterInp) (err
data.MemberEditInp = &adminin.MemberEditInp{ data.MemberEditInp = &adminin.MemberEditInp{
Id: 0, Id: 0,
RoleId: config.RoleId,
PostIds: config.PostIds, PostIds: config.PostIds,
DeptId: config.DeptId, DeptId: config.DeptId,
Username: in.Username, Username: in.Username,
@ -220,18 +215,33 @@ func (s *sAdminSite) MobileLogin(ctx context.Context, in *adminin.MobileLoginInp
// handleLogin . // handleLogin .
func (s *sAdminSite) handleLogin(ctx context.Context, mb *entity.AdminMember) (res *adminin.LoginModel, err error) { func (s *sAdminSite) handleLogin(ctx context.Context, mb *entity.AdminMember) (res *adminin.LoginModel, err error) {
role, dept, err := s.getLoginRoleAndDept(ctx, mb.RoleId, mb.DeptId) roleIds, err := service.AdminMemberRole().GetRoleIds(ctx, mb.Id)
if err != nil { if err != nil {
return nil, err return nil, err
} }
roles, dept, err := s.getLoginRoleAndDept(ctx, roleIds, mb.DeptId)
if err != nil {
return nil, err
}
var (
roleIDs []int64
roleKeys []string
)
for _, role := range roles {
roleIDs = append(roleIDs, role.Id)
roleKeys = append(roleKeys, role.Key)
}
user := &model.Identity{ user := &model.Identity{
Id: mb.Id, Id: mb.Id,
Pid: mb.Pid, Pid: mb.Pid,
DeptId: dept.Id, DeptId: dept.Id,
DeptType: dept.Type, DeptType: dept.Type,
RoleId: role.Id, RoleIds: roleIDs,
RoleKey: role.Key, RoleKeys: roleKeys,
Username: mb.Username, Username: mb.Username,
RealName: mb.RealName, RealName: mb.RealName,
Avatar: mb.Avatar, Avatar: mb.Avatar,
@ -256,19 +266,19 @@ func (s *sAdminSite) handleLogin(ctx context.Context, mb *entity.AdminMember) (r
} }
// getLoginRoleAndDept 获取登录的角色和部门信息 // getLoginRoleAndDept 获取登录的角色和部门信息
func (s *sAdminSite) getLoginRoleAndDept(ctx context.Context, roleId, deptId int64) (role *entity.AdminRole, dept *entity.AdminDept, err error) { func (s *sAdminSite) getLoginRoleAndDept(ctx context.Context, roleIds []int64, deptId int64) (roles []entity.AdminRole, dept *entity.AdminDept, err error) {
if err = dao.AdminRole.Ctx(ctx).Fields("id,key,status").WherePri(roleId).Scan(&role); err != nil { err = dao.AdminRole.Ctx(ctx).Fields("id,key,status").
WhereIn(dao.AdminRole.Columns().Id, roleIds).
Where(dao.AdminRole.Columns().Status, consts.StatusEnabled).
Scan(&roles)
if err != nil {
err = gerror.Wrap(err, consts.ErrorORM) err = gerror.Wrap(err, consts.ErrorORM)
return return
} }
if role == nil { if roles == nil {
err = gerror.New("角色不存在或已被删除") err = gerror.New("角色不存在或已被删除,如有疑问请联系管理员")
return
}
if role.Status != consts.StatusEnabled {
err = gerror.New("角色已被禁用,如有疑问请联系管理员")
return return
} }
@ -311,9 +321,24 @@ func (s *sAdminSite) BindUserContext(ctx context.Context, claims *model.Identity
return return
} }
role, dept, err := s.getLoginRoleAndDept(ctx, mb.RoleId, mb.DeptId) roleIds, err := service.AdminMemberRole().GetRoleIds(ctx, mb.Id)
if err != nil { if err != nil {
return err return
}
roles, dept, err := s.getLoginRoleAndDept(ctx, roleIds, mb.DeptId)
if err != nil {
return
}
var (
roleIDs []int64
roleKeys []string
)
for _, role := range roles {
roleIDs = append(roleIDs, role.Id)
roleKeys = append(roleKeys, role.Key)
} }
user := &model.Identity{ user := &model.Identity{
@ -321,8 +346,8 @@ func (s *sAdminSite) BindUserContext(ctx context.Context, claims *model.Identity
Pid: mb.Pid, Pid: mb.Pid,
DeptId: dept.Id, DeptId: dept.Id,
DeptType: dept.Type, DeptType: dept.Type,
RoleId: mb.RoleId, RoleIds: roleIDs,
RoleKey: role.Key, RoleKeys: roleKeys,
Username: mb.Username, Username: mb.Username,
RealName: mb.RealName, RealName: mb.RealName,
Avatar: mb.Avatar, Avatar: mb.Avatar,