后台权限组详情/授权菜单接口等等
This commit is contained in:
parent
ca1c10382a
commit
1a9d4eca2e
|
@ -1,24 +0,0 @@
|
||||||
package gmodel
|
|
||||||
|
|
||||||
import (
|
|
||||||
"gorm.io/gorm"
|
|
||||||
)
|
|
||||||
|
|
||||||
// ldap_casbin_rule 权限表
|
|
||||||
type LdapCasbinRule struct {
|
|
||||||
Id int64 `gorm:"primary_key;default:0;auto_increment;" json:"id"` //
|
|
||||||
V0 *string `gorm:"default:'';" json:"v0"` //
|
|
||||||
V1 *string `gorm:"default:'';" json:"v1"` //
|
|
||||||
V2 *string `gorm:"default:'';" json:"v2"` //
|
|
||||||
V3 *string `gorm:"default:'';" json:"v3"` //
|
|
||||||
V4 *string `gorm:"default:'';" json:"v4"` //
|
|
||||||
V5 *string `gorm:"default:'';" json:"v5"` //
|
|
||||||
}
|
|
||||||
type LdapCasbinRuleModel struct {
|
|
||||||
db *gorm.DB
|
|
||||||
name string
|
|
||||||
}
|
|
||||||
|
|
||||||
func NewLdapCasbinRuleModel(db *gorm.DB) *LdapCasbinRuleModel {
|
|
||||||
return &LdapCasbinRuleModel{db: db, name: "ldap_casbin_rule"}
|
|
||||||
}
|
|
|
@ -1,2 +0,0 @@
|
||||||
package gmodel
|
|
||||||
// TODO: 使用model的属性做你想做的
|
|
|
@ -7,14 +7,15 @@ import (
|
||||||
|
|
||||||
// ldap_group 权限组表
|
// ldap_group 权限组表
|
||||||
type LdapGroup struct {
|
type LdapGroup struct {
|
||||||
Id int64 `gorm:"primary_key;default:0;auto_increment;" json:"id"` //
|
Id int64 `gorm:"primary_key;default:0;auto_increment;" json:"id"` //
|
||||||
Name *string `gorm:"default:'';" json:"name"` //
|
Name *string `gorm:"default:'';" json:"name"` //
|
||||||
Keyword *string `gorm:"default:'';" json:"keyword"` //
|
Keyword *string `gorm:"default:'';" json:"keyword"` //
|
||||||
Remark *string `gorm:"default:'';" json:"remark"` //
|
Remark *string `gorm:"default:'';" json:"remark"` //
|
||||||
Status *int64 `gorm:"default:1;" json:"status"` // 1正常, 2禁用
|
Status *int64 `gorm:"default:1;" json:"status"` // 1正常, 2禁用
|
||||||
Sort *int64 `gorm:"default:999;" json:"sort"` // 分组排序(排序越大权限越低, 不能查看比自己序号小的角色, 不能编辑同序号用户权限, 排序为1表示超级管理员)
|
Sort *int64 `gorm:"default:999;" json:"sort"` // 分组排序(排序越大权限越低, 不能查看比自己序号小的角色, 不能编辑同序号用户权限, 排序为1表示超级管理员)
|
||||||
Ctime *time.Time `gorm:"default:'0000-00-00 00:00:00';" json:"ctime"` //
|
Metadata *[]byte `gorm:"default:'';" json:"metadata"` //
|
||||||
Utime *time.Time `gorm:"default:'0000-00-00 00:00:00';" json:"utime"` //
|
Ctime *time.Time `gorm:"default:'0000-00-00 00:00:00';" json:"ctime"` //
|
||||||
|
Utime *time.Time `gorm:"default:'0000-00-00 00:00:00';" json:"utime"` //
|
||||||
}
|
}
|
||||||
type LdapGroupModel struct {
|
type LdapGroupModel struct {
|
||||||
db *gorm.DB
|
db *gorm.DB
|
||||||
|
|
|
@ -1,19 +0,0 @@
|
||||||
package gmodel
|
|
||||||
|
|
||||||
import (
|
|
||||||
"gorm.io/gorm"
|
|
||||||
)
|
|
||||||
|
|
||||||
// ldap_group_menus 权限分组菜单表
|
|
||||||
type LdapGroupMenus struct {
|
|
||||||
MenuId *int64 `gorm:"default:0;" json:"menu_id"` //
|
|
||||||
GroupId *int64 `gorm:"default:0;" json:"group_id"` //
|
|
||||||
}
|
|
||||||
type LdapGroupMenusModel struct {
|
|
||||||
db *gorm.DB
|
|
||||||
name string
|
|
||||||
}
|
|
||||||
|
|
||||||
func NewLdapGroupMenusModel(db *gorm.DB) *LdapGroupMenusModel {
|
|
||||||
return &LdapGroupMenusModel{db: db, name: "ldap_group_menus"}
|
|
||||||
}
|
|
|
@ -1,23 +0,0 @@
|
||||||
package gmodel
|
|
||||||
|
|
||||||
import "context"
|
|
||||||
|
|
||||||
func (gm *LdapGroupMenusModel) FindOne(ctx context.Context, menuId, groupId int64) (resp *LdapGroupMenus, err error) {
|
|
||||||
err = gm.db.WithContext(ctx).Model(&LdapGroupMenus{}).Where("menu_id = ? and group_id = ?", menuId, groupId).Take(&resp).Error
|
|
||||||
return resp, err
|
|
||||||
}
|
|
||||||
|
|
||||||
func (gm *LdapGroupMenusModel) Create(ctx context.Context, data *LdapGroupMenus) error {
|
|
||||||
return gm.db.WithContext(ctx).Model(&LdapGroupMenus{}).Create(&data).Error
|
|
||||||
}
|
|
||||||
|
|
||||||
func (gm *LdapGroupMenusModel) Delete(ctx context.Context, menuId, groupId int64) error {
|
|
||||||
return gm.db.WithContext(ctx).Model(&LdapGroupMenus{}).Where("menu_id = ? and group_id", menuId, groupId).Delete(&LdapGroupMenus{}).Error
|
|
||||||
}
|
|
||||||
|
|
||||||
func (gm *LdapGroupMenusModel) DeleteByMenuId(ctx context.Context, menuId int64) error {
|
|
||||||
return gm.db.WithContext(ctx).Model(&LdapGroupMenus{}).Where("menu_id = ?", menuId).Delete(&LdapGroupMenus{}).Error
|
|
||||||
}
|
|
||||||
func (gm *LdapGroupMenusModel) DeleteByGroupId(ctx context.Context, groupId int64) error {
|
|
||||||
return gm.db.WithContext(ctx).Model(&LdapGroupMenus{}).Where("group_id = ?", groupId).Delete(&LdapGroupMenus{}).Error
|
|
||||||
}
|
|
|
@ -2,11 +2,15 @@ package gmodel
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"gorm.io/gorm"
|
"gorm.io/gorm"
|
||||||
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
// ldap_user ldap_用户id递增表
|
// ldap_user ldap_用户id递增表
|
||||||
type LdapUser struct {
|
type LdapUser struct {
|
||||||
Id int64 `gorm:"primary_key;default:0;auto_increment;" json:"id"` //
|
Id int64 `gorm:"primary_key;default:0;auto_increment;" json:"id"` //
|
||||||
|
UserDn *string `gorm:"index;default:'';" json:"user_dn"` //
|
||||||
|
Ctime *time.Time `gorm:"default:'0000-00-00 00:00:00';" json:"ctime"` //
|
||||||
|
Utime *time.Time `gorm:"default:'0000-00-00 00:00:00';" json:"utime"` //
|
||||||
}
|
}
|
||||||
type LdapUserModel struct {
|
type LdapUserModel struct {
|
||||||
db *gorm.DB
|
db *gorm.DB
|
||||||
|
|
|
@ -110,9 +110,7 @@ type AllModelsGen struct {
|
||||||
FsWebSet *FsWebSetModel // fs_web_set 网站配置表
|
FsWebSet *FsWebSetModel // fs_web_set 网站配置表
|
||||||
FsZipCode *FsZipCodeModel // fs_zip_code 邮编表
|
FsZipCode *FsZipCodeModel // fs_zip_code 邮编表
|
||||||
LdapApis *LdapApisModel // ldap_apis api表
|
LdapApis *LdapApisModel // ldap_apis api表
|
||||||
LdapCasbinRule *LdapCasbinRuleModel // ldap_casbin_rule 权限表
|
|
||||||
LdapGroup *LdapGroupModel // ldap_group 权限组表
|
LdapGroup *LdapGroupModel // ldap_group 权限组表
|
||||||
LdapGroupMenus *LdapGroupMenusModel // ldap_group_menus 权限分组菜单表
|
|
||||||
LdapMenus *LdapMenusModel // ldap_menus 菜单表
|
LdapMenus *LdapMenusModel // ldap_menus 菜单表
|
||||||
LdapUser *LdapUserModel // ldap_user ldap_用户id递增表
|
LdapUser *LdapUserModel // ldap_user ldap_用户id递增表
|
||||||
LdapUserGroup *LdapUserGroupModel // ldap_user_group 用户权限分组表
|
LdapUserGroup *LdapUserGroupModel // ldap_user_group 用户权限分组表
|
||||||
|
@ -227,9 +225,7 @@ func NewAllModels(gdb *gorm.DB) *AllModelsGen {
|
||||||
FsWebSet: NewFsWebSetModel(gdb),
|
FsWebSet: NewFsWebSetModel(gdb),
|
||||||
FsZipCode: NewFsZipCodeModel(gdb),
|
FsZipCode: NewFsZipCodeModel(gdb),
|
||||||
LdapApis: NewLdapApisModel(gdb),
|
LdapApis: NewLdapApisModel(gdb),
|
||||||
LdapCasbinRule: NewLdapCasbinRuleModel(gdb),
|
|
||||||
LdapGroup: NewLdapGroupModel(gdb),
|
LdapGroup: NewLdapGroupModel(gdb),
|
||||||
LdapGroupMenus: NewLdapGroupMenusModel(gdb),
|
|
||||||
LdapMenus: NewLdapMenusModel(gdb),
|
LdapMenus: NewLdapMenusModel(gdb),
|
||||||
LdapUser: NewLdapUserModel(gdb),
|
LdapUser: NewLdapUserModel(gdb),
|
||||||
LdapUserGroup: NewLdapUserGroupModel(gdb),
|
LdapUserGroup: NewLdapUserGroupModel(gdb),
|
||||||
|
|
|
@ -11,22 +11,22 @@ import (
|
||||||
"fusenapi/server/ldap-admin/internal/types"
|
"fusenapi/server/ldap-admin/internal/types"
|
||||||
)
|
)
|
||||||
|
|
||||||
func SetLdapGroupMenusHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
|
func GetLdapGroupDetailHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
|
||||||
return func(w http.ResponseWriter, r *http.Request) {
|
return func(w http.ResponseWriter, r *http.Request) {
|
||||||
|
|
||||||
var req types.SetLdapGroupMenusReq
|
var req types.GetLdapGroupDetailReq
|
||||||
userinfo, err := basic.RequestParse(w, r, svcCtx, &req)
|
userinfo, err := basic.RequestParse(w, r, svcCtx, &req)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
// 创建一个业务逻辑层实例
|
// 创建一个业务逻辑层实例
|
||||||
l := logic.NewSetLdapGroupMenusLogic(r.Context(), svcCtx)
|
l := logic.NewGetLdapGroupDetailLogic(r.Context(), svcCtx)
|
||||||
|
|
||||||
rl := reflect.ValueOf(l)
|
rl := reflect.ValueOf(l)
|
||||||
basic.BeforeLogic(w, r, rl)
|
basic.BeforeLogic(w, r, rl)
|
||||||
|
|
||||||
resp := l.SetLdapGroupMenus(&req, userinfo)
|
resp := l.GetLdapGroupDetail(&req, userinfo)
|
||||||
|
|
||||||
if !basic.AfterLogic(w, r, rl, resp) {
|
if !basic.AfterLogic(w, r, rl, resp) {
|
||||||
basic.NormalAfterLogic(w, r, resp)
|
basic.NormalAfterLogic(w, r, resp)
|
|
@ -17,6 +17,11 @@ func RegisterHandlers(server *rest.Server, serverCtx *svc.ServiceContext) {
|
||||||
Path: "/api/ldap-admin/get_ldap_group",
|
Path: "/api/ldap-admin/get_ldap_group",
|
||||||
Handler: GetLdapGroupsHandler(serverCtx),
|
Handler: GetLdapGroupsHandler(serverCtx),
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
Method: http.MethodGet,
|
||||||
|
Path: "/api/ldap-admin/get_ldap_group_detail",
|
||||||
|
Handler: GetLdapGroupDetailHandler(serverCtx),
|
||||||
|
},
|
||||||
{
|
{
|
||||||
Method: http.MethodPost,
|
Method: http.MethodPost,
|
||||||
Path: "/api/ldap-admin/save_ldap_group",
|
Path: "/api/ldap-admin/save_ldap_group",
|
||||||
|
@ -29,13 +34,8 @@ func RegisterHandlers(server *rest.Server, serverCtx *svc.ServiceContext) {
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Method: http.MethodPost,
|
Method: http.MethodPost,
|
||||||
Path: "/api/ldap-admin/set_ldap_group_menus",
|
Path: "/api/ldap-admin/set_ldap_group_auth",
|
||||||
Handler: SetLdapGroupMenusHandler(serverCtx),
|
Handler: SetLdapGroupAuthHandler(serverCtx),
|
||||||
},
|
|
||||||
{
|
|
||||||
Method: http.MethodPost,
|
|
||||||
Path: "/api/ldap-admin/set_ldap_casbin_rule",
|
|
||||||
Handler: SetLdapCasbinRuleHandler(serverCtx),
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Method: http.MethodPost,
|
Method: http.MethodPost,
|
||||||
|
|
|
@ -11,22 +11,22 @@ import (
|
||||||
"fusenapi/server/ldap-admin/internal/types"
|
"fusenapi/server/ldap-admin/internal/types"
|
||||||
)
|
)
|
||||||
|
|
||||||
func SetLdapCasbinRuleHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
|
func SetLdapGroupAuthHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
|
||||||
return func(w http.ResponseWriter, r *http.Request) {
|
return func(w http.ResponseWriter, r *http.Request) {
|
||||||
|
|
||||||
var req types.SetLdapCasbinRuleReq
|
var req types.SetLdapGroupAuthReq
|
||||||
userinfo, err := basic.RequestParse(w, r, svcCtx, &req)
|
userinfo, err := basic.RequestParse(w, r, svcCtx, &req)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
// 创建一个业务逻辑层实例
|
// 创建一个业务逻辑层实例
|
||||||
l := logic.NewSetLdapCasbinRuleLogic(r.Context(), svcCtx)
|
l := logic.NewSetLdapGroupAuthLogic(r.Context(), svcCtx)
|
||||||
|
|
||||||
rl := reflect.ValueOf(l)
|
rl := reflect.ValueOf(l)
|
||||||
basic.BeforeLogic(w, r, rl)
|
basic.BeforeLogic(w, r, rl)
|
||||||
|
|
||||||
resp := l.SetLdapCasbinRule(&req, userinfo)
|
resp := l.SetLdapGroupAuth(&req, userinfo)
|
||||||
|
|
||||||
if !basic.AfterLogic(w, r, rl, resp) {
|
if !basic.AfterLogic(w, r, rl, resp) {
|
||||||
basic.NormalAfterLogic(w, r, resp)
|
basic.NormalAfterLogic(w, r, resp)
|
|
@ -50,10 +50,6 @@ func (l *DeleteApiLogic) DeleteApi(req *types.DeleteApiReq, userinfo *auth.UserI
|
||||||
if resLdapApiDel.Error != nil {
|
if resLdapApiDel.Error != nil {
|
||||||
return resLdapApiDel.Error
|
return resLdapApiDel.Error
|
||||||
}
|
}
|
||||||
resLdapCasbinRulesDel := tx.Where("v3 IN ?", req.Ids).Delete(&gmodel.LdapCasbinRule{})
|
|
||||||
if resLdapCasbinRulesDel.Error != nil {
|
|
||||||
return resLdapCasbinRulesDel.Error
|
|
||||||
}
|
|
||||||
return nil
|
return nil
|
||||||
})
|
})
|
||||||
if txErr != nil {
|
if txErr != nil {
|
||||||
|
|
|
@ -55,14 +55,6 @@ func (l *DeleteLdapGroupLogic) DeleteLdapGroup(req *types.DeleteLdapGroupReq, us
|
||||||
if resLdapUserGroupDel.Error != nil {
|
if resLdapUserGroupDel.Error != nil {
|
||||||
return resLdapUserGroupDel.Error
|
return resLdapUserGroupDel.Error
|
||||||
}
|
}
|
||||||
resLdapGroupMenusDel := tx.Where("group_id IN ?", req.Ids).Delete(&gmodel.LdapGroupMenus{})
|
|
||||||
if resLdapGroupMenusDel.Error != nil {
|
|
||||||
return resLdapGroupMenusDel.Error
|
|
||||||
}
|
|
||||||
resLdapCasbinRulesDel := tx.Where("v0 IN ?", req.Ids).Delete(&gmodel.LdapCasbinRule{})
|
|
||||||
if resLdapCasbinRulesDel.Error != nil {
|
|
||||||
return resLdapCasbinRulesDel.Error
|
|
||||||
}
|
|
||||||
return nil
|
return nil
|
||||||
})
|
})
|
||||||
if txErr != nil {
|
if txErr != nil {
|
||||||
|
|
|
@ -4,9 +4,10 @@ import (
|
||||||
"fusenapi/model/gmodel"
|
"fusenapi/model/gmodel"
|
||||||
"fusenapi/utils/auth"
|
"fusenapi/utils/auth"
|
||||||
"fusenapi/utils/basic"
|
"fusenapi/utils/basic"
|
||||||
"gorm.io/gorm"
|
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
"gorm.io/gorm"
|
||||||
|
|
||||||
"context"
|
"context"
|
||||||
|
|
||||||
"fusenapi/server/ldap-admin/internal/svc"
|
"fusenapi/server/ldap-admin/internal/svc"
|
||||||
|
@ -48,9 +49,7 @@ func (l *DeleteMenuLogic) DeleteMenu(req *types.DeleteMenuReq, userinfo *auth.Us
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
//删除分组绑定的菜单
|
return nil
|
||||||
groupMenusModel := gmodel.NewLdapGroupMenusModel(tx)
|
|
||||||
return groupMenusModel.DeleteByMenuId(l.ctx, req.Id)
|
|
||||||
})
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logx.Error(err)
|
logx.Error(err)
|
||||||
|
|
77
server/ldap-admin/internal/logic/getldapgroupdetaillogic.go
Normal file
77
server/ldap-admin/internal/logic/getldapgroupdetaillogic.go
Normal file
|
@ -0,0 +1,77 @@
|
||||||
|
package logic
|
||||||
|
|
||||||
|
import (
|
||||||
|
"encoding/json"
|
||||||
|
"errors"
|
||||||
|
"fusenapi/utils/auth"
|
||||||
|
"fusenapi/utils/basic"
|
||||||
|
|
||||||
|
"context"
|
||||||
|
|
||||||
|
"fusenapi/server/ldap-admin/internal/svc"
|
||||||
|
"fusenapi/server/ldap-admin/internal/types"
|
||||||
|
|
||||||
|
"github.com/zeromicro/go-zero/core/logx"
|
||||||
|
"gorm.io/gorm"
|
||||||
|
)
|
||||||
|
|
||||||
|
type GetLdapGroupDetailLogic struct {
|
||||||
|
logx.Logger
|
||||||
|
ctx context.Context
|
||||||
|
svcCtx *svc.ServiceContext
|
||||||
|
}
|
||||||
|
|
||||||
|
func NewGetLdapGroupDetailLogic(ctx context.Context, svcCtx *svc.ServiceContext) *GetLdapGroupDetailLogic {
|
||||||
|
return &GetLdapGroupDetailLogic{
|
||||||
|
Logger: logx.WithContext(ctx),
|
||||||
|
ctx: ctx,
|
||||||
|
svcCtx: svcCtx,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 处理进入前逻辑w,r
|
||||||
|
// func (l *GetLdapGroupDetailLogic) BeforeLogic(w http.ResponseWriter, r *http.Request) {
|
||||||
|
// }
|
||||||
|
|
||||||
|
func (l *GetLdapGroupDetailLogic) GetLdapGroupDetail(req *types.GetLdapGroupDetailReq, userinfo *auth.UserInfo) (resp *basic.Response) {
|
||||||
|
// 返回值必须调用Set重新返回, resp可以空指针调用 resp.SetStatus(basic.CodeOK, data)
|
||||||
|
// userinfo 传入值时, 一定不为null
|
||||||
|
resOne, err := l.svcCtx.AllModels.LdapGroup.FindOneById(l.ctx, req.Id)
|
||||||
|
if err != nil {
|
||||||
|
if errors.Is(err, gorm.ErrRecordNotFound) {
|
||||||
|
basic.CodeServiceErr.Message = "记录不存在"
|
||||||
|
} else {
|
||||||
|
basic.CodeServiceErr.Message = "系统出错"
|
||||||
|
}
|
||||||
|
return resp.SetStatus(basic.CodeServiceErr)
|
||||||
|
}
|
||||||
|
var metadata []GroupAuth
|
||||||
|
if resOne.Metadata != nil {
|
||||||
|
err := json.Unmarshal(*resOne.Metadata, &metadata)
|
||||||
|
if err != nil {
|
||||||
|
basic.CodeServiceErr.Message = "系统出错"
|
||||||
|
return resp.SetStatus(basic.CodeServiceErr)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return resp.SetStatus(basic.CodeOK, map[string]interface{}{
|
||||||
|
"id": resOne.Id,
|
||||||
|
"name": resOne.Name,
|
||||||
|
"keyword": resOne.Keyword,
|
||||||
|
"remark": resOne.Remark,
|
||||||
|
"status": resOne.Status,
|
||||||
|
"sort": resOne.Sort,
|
||||||
|
"metadata": metadata,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
type GroupAuth struct {
|
||||||
|
Id int64 `json:"id"`
|
||||||
|
Name string `json:"name"`
|
||||||
|
Type string `json:"type"`
|
||||||
|
Metadata *GroupAuth `json:"metadata"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// 处理逻辑后 w,r 如:重定向, resp 必须重新处理
|
||||||
|
// func (l *GetLdapGroupDetailLogic) AfterLogic(w http.ResponseWriter, r *http.Request, resp *basic.Response) {
|
||||||
|
// // httpx.OkJsonCtx(r.Context(), w, resp)
|
||||||
|
// }
|
|
@ -37,8 +37,9 @@ func (l *GetLdapGroupsLogic) GetLdapGroups(req *types.GetLdapGroupsReq, userinfo
|
||||||
// userinfo 传入值时, 一定不为null
|
// userinfo 传入值时, 一定不为null
|
||||||
|
|
||||||
resList, resCount, err := l.svcCtx.AllModels.LdapGroup.FindPage(l.ctx, gmodel.FindPageReq{
|
resList, resCount, err := l.svcCtx.AllModels.LdapGroup.FindPage(l.ctx, gmodel.FindPageReq{
|
||||||
Page: req.CurrentPage,
|
Page: req.CurrentPage,
|
||||||
Limit: req.PerPage,
|
Limit: req.PerPage,
|
||||||
|
Fields: "id,name,keyword,remark,status,sort",
|
||||||
})
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return resp.SetStatus(basic.CodeServiceErr)
|
return resp.SetStatus(basic.CodeServiceErr)
|
||||||
|
|
|
@ -1,78 +0,0 @@
|
||||||
package logic
|
|
||||||
|
|
||||||
import (
|
|
||||||
"errors"
|
|
||||||
"fusenapi/model/gmodel"
|
|
||||||
"fusenapi/utils/auth"
|
|
||||||
"fusenapi/utils/basic"
|
|
||||||
"strconv"
|
|
||||||
|
|
||||||
"context"
|
|
||||||
|
|
||||||
"fusenapi/server/ldap-admin/internal/svc"
|
|
||||||
"fusenapi/server/ldap-admin/internal/types"
|
|
||||||
|
|
||||||
"github.com/zeromicro/go-zero/core/logx"
|
|
||||||
"gorm.io/gorm"
|
|
||||||
)
|
|
||||||
|
|
||||||
type SetLdapCasbinRuleLogic struct {
|
|
||||||
logx.Logger
|
|
||||||
ctx context.Context
|
|
||||||
svcCtx *svc.ServiceContext
|
|
||||||
}
|
|
||||||
|
|
||||||
func NewSetLdapCasbinRuleLogic(ctx context.Context, svcCtx *svc.ServiceContext) *SetLdapCasbinRuleLogic {
|
|
||||||
return &SetLdapCasbinRuleLogic{
|
|
||||||
Logger: logx.WithContext(ctx),
|
|
||||||
ctx: ctx,
|
|
||||||
svcCtx: svcCtx,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// 处理进入前逻辑w,r
|
|
||||||
// func (l *SetLdapCasbinRuleLogic) BeforeLogic(w http.ResponseWriter, r *http.Request) {
|
|
||||||
// }
|
|
||||||
|
|
||||||
func (l *SetLdapCasbinRuleLogic) SetLdapCasbinRule(req *types.SetLdapCasbinRuleReq, userinfo *auth.UserInfo) (resp *basic.Response) {
|
|
||||||
// 返回值必须调用Set重新返回, resp可以空指针调用 resp.SetStatus(basic.CodeOK, data)
|
|
||||||
// userinfo 传入值时, 一定不为null
|
|
||||||
resLdapGroupInfo, err := l.svcCtx.AllModels.LdapGroup.FindOneById(l.ctx, req.GroupId)
|
|
||||||
if err != nil {
|
|
||||||
if errors.Is(err, gorm.ErrRecordNotFound) {
|
|
||||||
basic.CodeServiceErr.Message = "权限组记录不存在"
|
|
||||||
} else {
|
|
||||||
basic.CodeServiceErr.Message = "系统出错"
|
|
||||||
}
|
|
||||||
return resp.SetStatus(basic.CodeServiceErr)
|
|
||||||
}
|
|
||||||
resLdapApiList, err := l.svcCtx.AllModels.LdapApis.FindAll(l.ctx, l.svcCtx.MysqlConn.Where("id IN ?", req.ApIds))
|
|
||||||
if err != nil {
|
|
||||||
return resp.SetStatus(basic.CodeServiceErr)
|
|
||||||
}
|
|
||||||
if len(resLdapApiList) > 0 {
|
|
||||||
var groupIdStr = strconv.Itoa(int(resLdapGroupInfo.Id))
|
|
||||||
var ldapCasbinRules []gmodel.LdapCasbinRule
|
|
||||||
for _, ldapApi := range resLdapApiList {
|
|
||||||
var apiIdStr = strconv.Itoa(int(ldapApi.Id))
|
|
||||||
ldapCasbinRules = append(ldapCasbinRules, gmodel.LdapCasbinRule{
|
|
||||||
V0: &groupIdStr,
|
|
||||||
V1: ldapApi.Path,
|
|
||||||
V2: ldapApi.Method,
|
|
||||||
V3: &apiIdStr,
|
|
||||||
})
|
|
||||||
}
|
|
||||||
resCreateInBatches := l.svcCtx.MysqlConn.WithContext(l.ctx).CreateInBatches(ldapCasbinRules, 100)
|
|
||||||
if resCreateInBatches.Error != nil {
|
|
||||||
basic.CodeServiceErr.Message = "系统出错"
|
|
||||||
return resp.SetStatus(basic.CodeServiceErr)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return resp.SetStatus(basic.CodeOK)
|
|
||||||
}
|
|
||||||
|
|
||||||
// 处理逻辑后 w,r 如:重定向, resp 必须重新处理
|
|
||||||
// func (l *SetLdapCasbinRuleLogic) AfterLogic(w http.ResponseWriter, r *http.Request, resp *basic.Response) {
|
|
||||||
// // httpx.OkJsonCtx(r.Context(), w, resp)
|
|
||||||
// }
|
|
43
server/ldap-admin/internal/logic/setldapgroupauthlogic.go
Normal file
43
server/ldap-admin/internal/logic/setldapgroupauthlogic.go
Normal file
|
@ -0,0 +1,43 @@
|
||||||
|
package logic
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fusenapi/utils/auth"
|
||||||
|
"fusenapi/utils/basic"
|
||||||
|
|
||||||
|
"context"
|
||||||
|
|
||||||
|
"fusenapi/server/ldap-admin/internal/svc"
|
||||||
|
"fusenapi/server/ldap-admin/internal/types"
|
||||||
|
|
||||||
|
"github.com/zeromicro/go-zero/core/logx"
|
||||||
|
)
|
||||||
|
|
||||||
|
type SetLdapGroupAuthLogic struct {
|
||||||
|
logx.Logger
|
||||||
|
ctx context.Context
|
||||||
|
svcCtx *svc.ServiceContext
|
||||||
|
}
|
||||||
|
|
||||||
|
func NewSetLdapGroupAuthLogic(ctx context.Context, svcCtx *svc.ServiceContext) *SetLdapGroupAuthLogic {
|
||||||
|
return &SetLdapGroupAuthLogic{
|
||||||
|
Logger: logx.WithContext(ctx),
|
||||||
|
ctx: ctx,
|
||||||
|
svcCtx: svcCtx,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 处理进入前逻辑w,r
|
||||||
|
// func (l *SetLdapGroupAuthLogic) BeforeLogic(w http.ResponseWriter, r *http.Request) {
|
||||||
|
// }
|
||||||
|
|
||||||
|
func (l *SetLdapGroupAuthLogic) SetLdapGroupAuth(req *types.SetLdapGroupAuthReq, userinfo *auth.UserInfo) (resp *basic.Response) {
|
||||||
|
// 返回值必须调用Set重新返回, resp可以空指针调用 resp.SetStatus(basic.CodeOK, data)
|
||||||
|
// userinfo 传入值时, 一定不为null
|
||||||
|
|
||||||
|
return resp.SetStatus(basic.CodeOK)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 处理逻辑后 w,r 如:重定向, resp 必须重新处理
|
||||||
|
// func (l *SetLdapGroupAuthLogic) AfterLogic(w http.ResponseWriter, r *http.Request, resp *basic.Response) {
|
||||||
|
// // httpx.OkJsonCtx(r.Context(), w, resp)
|
||||||
|
// }
|
|
@ -1,66 +0,0 @@
|
||||||
package logic
|
|
||||||
|
|
||||||
import (
|
|
||||||
"errors"
|
|
||||||
"fusenapi/model/gmodel"
|
|
||||||
"fusenapi/utils/auth"
|
|
||||||
"fusenapi/utils/basic"
|
|
||||||
|
|
||||||
"context"
|
|
||||||
|
|
||||||
"fusenapi/server/ldap-admin/internal/svc"
|
|
||||||
"fusenapi/server/ldap-admin/internal/types"
|
|
||||||
|
|
||||||
"github.com/zeromicro/go-zero/core/logx"
|
|
||||||
"gorm.io/gorm"
|
|
||||||
)
|
|
||||||
|
|
||||||
type SetLdapGroupMenusLogic struct {
|
|
||||||
logx.Logger
|
|
||||||
ctx context.Context
|
|
||||||
svcCtx *svc.ServiceContext
|
|
||||||
}
|
|
||||||
|
|
||||||
func NewSetLdapGroupMenusLogic(ctx context.Context, svcCtx *svc.ServiceContext) *SetLdapGroupMenusLogic {
|
|
||||||
return &SetLdapGroupMenusLogic{
|
|
||||||
Logger: logx.WithContext(ctx),
|
|
||||||
ctx: ctx,
|
|
||||||
svcCtx: svcCtx,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// 处理进入前逻辑w,r
|
|
||||||
// func (l *SetLdapGroupMenusLogic) BeforeLogic(w http.ResponseWriter, r *http.Request) {
|
|
||||||
// }
|
|
||||||
|
|
||||||
func (l *SetLdapGroupMenusLogic) SetLdapGroupMenus(req *types.SetLdapGroupMenusReq, userinfo *auth.UserInfo) (resp *basic.Response) {
|
|
||||||
// 返回值必须调用Set重新返回, resp可以空指针调用 resp.SetStatus(basic.CodeOK, data)
|
|
||||||
// userinfo 传入值时, 一定不为null
|
|
||||||
resLdapGroupInfo, err := l.svcCtx.AllModels.LdapGroup.FindOneById(l.ctx, req.GroupId)
|
|
||||||
if err != nil {
|
|
||||||
if errors.Is(err, gorm.ErrRecordNotFound) {
|
|
||||||
basic.CodeServiceErr.Message = "权限组记录不存在"
|
|
||||||
} else {
|
|
||||||
basic.CodeServiceErr.Message = "系统出错"
|
|
||||||
}
|
|
||||||
return resp.SetStatus(basic.CodeServiceErr)
|
|
||||||
}
|
|
||||||
var groupMenus []gmodel.LdapGroupMenus
|
|
||||||
for _, menuId := range req.MenuIds {
|
|
||||||
groupMenus = append(groupMenus, gmodel.LdapGroupMenus{
|
|
||||||
GroupId: &resLdapGroupInfo.Id,
|
|
||||||
MenuId: &menuId,
|
|
||||||
})
|
|
||||||
}
|
|
||||||
resCreateInBatches := l.svcCtx.MysqlConn.WithContext(l.ctx).CreateInBatches(groupMenus, 100)
|
|
||||||
if resCreateInBatches.Error != nil {
|
|
||||||
basic.CodeServiceErr.Message = "系统出错"
|
|
||||||
return resp.SetStatus(basic.CodeServiceErr)
|
|
||||||
}
|
|
||||||
return resp.SetStatus(basic.CodeOK)
|
|
||||||
}
|
|
||||||
|
|
||||||
// 处理逻辑后 w,r 如:重定向, resp 必须重新处理
|
|
||||||
// func (l *SetLdapGroupMenusLogic) AfterLogic(w http.ResponseWriter, r *http.Request, resp *basic.Response) {
|
|
||||||
// // httpx.OkJsonCtx(r.Context(), w, resp)
|
|
||||||
// }
|
|
|
@ -5,6 +5,22 @@ import (
|
||||||
"fusenapi/utils/basic"
|
"fusenapi/utils/basic"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
type GetLdapGroupDetailReq struct {
|
||||||
|
Id int64 `json:"id"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type SetLdapGroupAuthReq struct {
|
||||||
|
GroupId int64 `json:"group_id"`
|
||||||
|
GroupAuth GroupAuth `json:"group_auth"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type GroupAuth struct {
|
||||||
|
Id int64 `json:"id"`
|
||||||
|
Name string `json:"name"`
|
||||||
|
Type string `json:"type"`
|
||||||
|
Metadata string `json:"metadata,optional"`
|
||||||
|
}
|
||||||
|
|
||||||
type GetLdapGroupsReq struct {
|
type GetLdapGroupsReq struct {
|
||||||
Id int64 `form:"id,optional"` //id
|
Id int64 `form:"id,optional"` //id
|
||||||
Name string `form:"name,optional"` //名称
|
Name string `form:"name,optional"` //名称
|
||||||
|
|
|
@ -13,18 +13,20 @@ service ldap-admin {
|
||||||
//获取权限组列表
|
//获取权限组列表
|
||||||
@handler GetLdapGroupsHandler
|
@handler GetLdapGroupsHandler
|
||||||
get /api/ldap-admin/get_ldap_group(GetLdapGroupsReq) returns (response);
|
get /api/ldap-admin/get_ldap_group(GetLdapGroupsReq) returns (response);
|
||||||
|
//获取权限组详情
|
||||||
|
@handler GetLdapGroupDetailHandler
|
||||||
|
get /api/ldap-admin/get_ldap_group_detail(GetLdapGroupDetailReq) returns (response);
|
||||||
//保存权限组
|
//保存权限组
|
||||||
@handler SaveLdapGroupHandler
|
@handler SaveLdapGroupHandler
|
||||||
post /api/ldap-admin/save_ldap_group(SaveLdapGroupReq) returns (response);
|
post /api/ldap-admin/save_ldap_group(SaveLdapGroupReq) returns (response);
|
||||||
//删除权限组
|
//删除权限组
|
||||||
@handler DeleteLdapGroupHandler
|
@handler DeleteLdapGroupHandler
|
||||||
post /api/ldap-admin/delete_ldap_group(DeleteLdapGroupReq) returns (response);
|
post /api/ldap-admin/delete_ldap_group(DeleteLdapGroupReq) returns (response);
|
||||||
//权限组授权菜单
|
|
||||||
@handler SetLdapGroupMenusHandler
|
//权限组授权
|
||||||
post /api/ldap-admin/set_ldap_group_menus(SetLdapGroupMenusReq) returns (response);
|
@handler SetLdapGroupAuthHandler
|
||||||
//权限组授权接口
|
post /api/ldap-admin/set_ldap_group_auth(SetLdapGroupAuthReq) returns (response);
|
||||||
@handler SetLdapCasbinRuleHandler
|
|
||||||
post /api/ldap-admin/set_ldap_casbin_rule(SetLdapCasbinRuleReq) returns (response);
|
|
||||||
//权限组授权用户
|
//权限组授权用户
|
||||||
@handler SetLdapGroupUserHandler
|
@handler SetLdapGroupUserHandler
|
||||||
post /api/ldap-admin/set_ldap_group_user(SetLdapGroupUserReq) returns (response);
|
post /api/ldap-admin/set_ldap_group_user(SetLdapGroupUserReq) returns (response);
|
||||||
|
@ -95,6 +97,21 @@ service ldap-admin {
|
||||||
}
|
}
|
||||||
|
|
||||||
type (
|
type (
|
||||||
|
GetLdapGroupDetailReq {
|
||||||
|
Id int64 `json:"id"`
|
||||||
|
}
|
||||||
|
|
||||||
|
SetLdapGroupAuthReq {
|
||||||
|
GroupId int64 `json:"group_id"`
|
||||||
|
GroupAuth GroupAuth `json:"group_auth"`
|
||||||
|
}
|
||||||
|
GroupAuth {
|
||||||
|
Id int64 `json:"id"`
|
||||||
|
Name string `json:"name"`
|
||||||
|
Type string `json:"type"`
|
||||||
|
Metadata string `json:"metadata,optional"`
|
||||||
|
}
|
||||||
|
|
||||||
GetLdapGroupsReq {
|
GetLdapGroupsReq {
|
||||||
Id int64 `form:"id,optional"` //id
|
Id int64 `form:"id,optional"` //id
|
||||||
Name string `form:"name,optional"` //名称
|
Name string `form:"name,optional"` //名称
|
||||||
|
|
Loading…
Reference in New Issue
Block a user