From 3900dffdbe543f8d3adb0a2c55b939935db0a234 Mon Sep 17 00:00:00 2001 From: momo <1012651275@qq.com> Date: Fri, 17 Nov 2023 15:21:45 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E:=E6=9D=83=E9=99=90=E5=88=86?= =?UTF-8?q?=E7=BB=84=E6=A8=A1=E5=9D=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/ldap-admin/internal/handler/routes.go | 5 ++ .../handler/setldapgroupuserhandler.go | 35 +++++++++++ .../internal/logic/setldapgroupuserlogic.go | 62 +++++++++++++++++++ server/ldap-admin/internal/types/types.go | 5 ++ server_api/ldap-admin.api | 9 +++ 5 files changed, 116 insertions(+) create mode 100644 server/ldap-admin/internal/handler/setldapgroupuserhandler.go create mode 100644 server/ldap-admin/internal/logic/setldapgroupuserlogic.go diff --git a/server/ldap-admin/internal/handler/routes.go b/server/ldap-admin/internal/handler/routes.go index 8a4a59bb..3e124f42 100644 --- a/server/ldap-admin/internal/handler/routes.go +++ b/server/ldap-admin/internal/handler/routes.go @@ -37,6 +37,11 @@ func RegisterHandlers(server *rest.Server, serverCtx *svc.ServiceContext) { Path: "/api/ldap-admin/set_ldap_casbin_rule", Handler: SetLdapCasbinRuleHandler(serverCtx), }, + { + Method: http.MethodPost, + Path: "/api/ldap-admin/set_ldap_group_user", + Handler: SetLdapGroupUserHandler(serverCtx), + }, { Method: http.MethodGet, Path: "/api/ldap-admin/get_apis", diff --git a/server/ldap-admin/internal/handler/setldapgroupuserhandler.go b/server/ldap-admin/internal/handler/setldapgroupuserhandler.go new file mode 100644 index 00000000..0f70e5a3 --- /dev/null +++ b/server/ldap-admin/internal/handler/setldapgroupuserhandler.go @@ -0,0 +1,35 @@ +package handler + +import ( + "net/http" + "reflect" + + "fusenapi/utils/basic" + + "fusenapi/server/ldap-admin/internal/logic" + "fusenapi/server/ldap-admin/internal/svc" + "fusenapi/server/ldap-admin/internal/types" +) + +func SetLdapGroupUserHandler(svcCtx *svc.ServiceContext) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + + var req types.SetLdapGroupUserReq + userinfo, err := basic.RequestParse(w, r, svcCtx, &req) + if err != nil { + return + } + + // 创建一个业务逻辑层实例 + l := logic.NewSetLdapGroupUserLogic(r.Context(), svcCtx) + + rl := reflect.ValueOf(l) + basic.BeforeLogic(w, r, rl) + + resp := l.SetLdapGroupUser(&req, userinfo) + + if !basic.AfterLogic(w, r, rl, resp) { + basic.NormalAfterLogic(w, r, resp) + } + } +} diff --git a/server/ldap-admin/internal/logic/setldapgroupuserlogic.go b/server/ldap-admin/internal/logic/setldapgroupuserlogic.go new file mode 100644 index 00000000..9fd53de1 --- /dev/null +++ b/server/ldap-admin/internal/logic/setldapgroupuserlogic.go @@ -0,0 +1,62 @@ +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 SetLdapGroupUserLogic struct { + logx.Logger + ctx context.Context + svcCtx *svc.ServiceContext +} + +func NewSetLdapGroupUserLogic(ctx context.Context, svcCtx *svc.ServiceContext) *SetLdapGroupUserLogic { + return &SetLdapGroupUserLogic{ + Logger: logx.WithContext(ctx), + ctx: ctx, + svcCtx: svcCtx, + } +} + +// 处理进入前逻辑w,r +// func (l *SetLdapGroupUserLogic) BeforeLogic(w http.ResponseWriter, r *http.Request) { +// } + +func (l *SetLdapGroupUserLogic) SetLdapGroupUser(req *types.SetLdapGroupUserReq, 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) + } + resCreateInBatches := l.svcCtx.MysqlConn.WithContext(l.ctx).Create(gmodel.LdapUserGroup{ + GroupId: &resLdapGroupInfo.Id, + UserId: &req.UserId, + }) + if resCreateInBatches.Error != nil { + basic.CodeServiceErr.Message = "系统出错" + return resp.SetStatus(basic.CodeServiceErr) + } + return resp.SetStatus(basic.CodeOK) +} + +// 处理逻辑后 w,r 如:重定向, resp 必须重新处理 +// func (l *SetLdapGroupUserLogic) AfterLogic(w http.ResponseWriter, r *http.Request, resp *basic.Response) { +// // httpx.OkJsonCtx(r.Context(), w, resp) +// } diff --git a/server/ldap-admin/internal/types/types.go b/server/ldap-admin/internal/types/types.go index 0425fa44..97b79b16 100644 --- a/server/ldap-admin/internal/types/types.go +++ b/server/ldap-admin/internal/types/types.go @@ -38,6 +38,11 @@ type SetLdapCasbinRuleReq struct { ApIds []int64 `json:"api_ids"` } +type SetLdapGroupUserReq struct { + GroupId int64 `json:"group_id"` + UserId int64 `json:"user_id"` +} + type GetApisReq struct { Sort string `form:"sort,optional"` CurrentPage int `form:"current_page,optional,default=1"` diff --git a/server_api/ldap-admin.api b/server_api/ldap-admin.api index 08a100cf..e74ece65 100644 --- a/server_api/ldap-admin.api +++ b/server_api/ldap-admin.api @@ -28,6 +28,10 @@ service ldap-admin { @handler SetLdapCasbinRuleHandler post /api/ldap-admin/set_ldap_casbin_rule(SetLdapCasbinRuleReq) returns (response); + //权限组授权用户 + @handler SetLdapGroupUserHandler + post /api/ldap-admin/set_ldap_group_user(SetLdapGroupUserReq) returns (response); + //获取API列表 @handler GetApisHandler get /api/ldap-admin/get_apis(GetApisReq) returns (response); @@ -111,6 +115,11 @@ type ( GroupId int64 `json:"group_id"` ApIds []int64 `json:"api_ids"` } + + SetLdapGroupUserReq { + GroupId int64 `json:"group_id"` + UserId int64 `json:"user_id"` + } ) type GetApisReq {