From e67ec01f2b91912498ea3aa2e63f8620c2bdbbdd Mon Sep 17 00:00:00 2001 From: piupuer Date: Tue, 15 Oct 2024 17:15:29 +0800 Subject: [PATCH] [fix]bug --- internal/biz/action.go | 4 ++-- internal/biz/permission.go | 4 ++-- internal/biz/user.go | 4 ++-- internal/biz/whitelist.go | 5 ++--- internal/data/action.go | 6 +++--- internal/data/permission.go | 2 +- internal/data/user.go | 2 +- internal/pkg/task/task.go | 2 +- internal/server/middleware/permission.go | 6 +++--- internal/service/auth.go | 2 +- 10 files changed, 18 insertions(+), 19 deletions(-) diff --git a/internal/biz/action.go b/internal/biz/action.go index 7dd8eab..220ddbe 100644 --- a/internal/biz/action.go +++ b/internal/biz/action.go @@ -49,8 +49,8 @@ type ActionRepo interface { Update(ctx context.Context, item *UpdateAction) error Delete(ctx context.Context, ids ...uint64) error CodeExists(ctx context.Context, code string) error - Permission(ctx context.Context, code string, req CheckPermission) bool - MatchResource(ctx context.Context, resource string, req CheckPermission) bool + Permission(ctx context.Context, code string, req *CheckPermission) bool + MatchResource(ctx context.Context, resource string, req *CheckPermission) bool } type ActionUseCase struct { diff --git a/internal/biz/permission.go b/internal/biz/permission.go index f37c606..0f4c42d 100644 --- a/internal/biz/permission.go +++ b/internal/biz/permission.go @@ -20,7 +20,7 @@ type CheckPermission struct { } type PermissionRepo interface { - Check(ctx context.Context, item CheckPermission) bool + Check(ctx context.Context, item *CheckPermission) bool GetByUserCode(ctx context.Context, code string) *Permission } @@ -36,7 +36,7 @@ func NewPermissionUseCase(c *conf.Bootstrap, repo PermissionRepo) *PermissionUse } } -func (uc *PermissionUseCase) Check(ctx context.Context, item CheckPermission) (rp bool) { +func (uc *PermissionUseCase) Check(ctx context.Context, item *CheckPermission) (rp bool) { rp = uc.repo.Check(ctx, item) return } diff --git a/internal/biz/user.go b/internal/biz/user.go index e4ba7ca..3efeaf8 100644 --- a/internal/biz/user.go +++ b/internal/biz/user.go @@ -124,7 +124,7 @@ type UserRepo interface { Update(ctx context.Context, item *UpdateUser) error Delete(ctx context.Context, ids ...uint64) error LastLogin(ctx context.Context, username string) error - WrongPwd(ctx context.Context, req LoginTime) error + WrongPwd(ctx context.Context, req *LoginTime) error UpdatePassword(ctx context.Context, item *User) error IdExists(ctx context.Context, id uint64) error } @@ -281,7 +281,7 @@ func (uc *UserUseCase) LastLogin(ctx context.Context, username string) error { }) } -func (uc *UserUseCase) WrongPwd(ctx context.Context, req LoginTime) error { +func (uc *UserUseCase) WrongPwd(ctx context.Context, req *LoginTime) error { return uc.tx.Tx(ctx, func(ctx context.Context) (err error) { err = uc.repo.WrongPwd(ctx, req) if err != nil { diff --git a/internal/biz/whitelist.go b/internal/biz/whitelist.go index 2d3afe1..ba48894 100644 --- a/internal/biz/whitelist.go +++ b/internal/biz/whitelist.go @@ -12,7 +12,6 @@ import ( const ( WhitelistPermissionCategory uint32 = iota WhitelistJwtCategory - WhitelistIdempotentCategory ) type Whitelist struct { @@ -28,8 +27,8 @@ type FindWhitelist struct { } type HasWhitelist struct { - Category uint32 `json:"category"` - Permission CheckPermission `json:"permission"` + Category uint32 `json:"category"` + Permission *CheckPermission `json:"permission"` } type FindWhitelistCache struct { diff --git a/internal/data/action.go b/internal/data/action.go index e983603..be120ce 100644 --- a/internal/data/action.go +++ b/internal/data/action.go @@ -184,7 +184,7 @@ func (ro actionRepo) WordExists(ctx context.Context, word string) (ok bool) { return } -func (ro actionRepo) Permission(ctx context.Context, code string, req biz.CheckPermission) (pass bool) { +func (ro actionRepo) Permission(ctx context.Context, code string, req *biz.CheckPermission) (pass bool) { arr := strings.Split(code, ",") for _, item := range arr { pass = ro.permission(ctx, item, req) @@ -195,7 +195,7 @@ func (ro actionRepo) Permission(ctx context.Context, code string, req biz.CheckP return } -func (ro actionRepo) permission(ctx context.Context, code string, req biz.CheckPermission) (pass bool) { +func (ro actionRepo) permission(ctx context.Context, code string, req *biz.CheckPermission) (pass bool) { if code == "" { return } @@ -203,7 +203,7 @@ func (ro actionRepo) permission(ctx context.Context, code string, req biz.CheckP return ro.MatchResource(ctx, action.Resource, req) } -func (actionRepo) MatchResource(_ context.Context, resource string, req biz.CheckPermission) (pass bool) { +func (actionRepo) MatchResource(_ context.Context, resource string, req *biz.CheckPermission) (pass bool) { if resource == "" { // empty resource no need match return diff --git a/internal/data/permission.go b/internal/data/permission.go index 43e662a..acaf6dc 100644 --- a/internal/data/permission.go +++ b/internal/data/permission.go @@ -23,7 +23,7 @@ func NewPermissionRepo(data *Data, action biz.ActionRepo, hotspot biz.HotspotRep } } -func (ro permissionRepo) Check(ctx context.Context, item biz.CheckPermission) (pass bool) { +func (ro permissionRepo) Check(ctx context.Context, item *biz.CheckPermission) (pass bool) { user := ro.hotspot.GetUserByCode(ctx, item.UserCode) // 1. check default permission defaultAction := ro.hotspot.GetActionByWord(ctx, "default") diff --git a/internal/data/user.go b/internal/data/user.go index 05c82c4..3e7b798 100644 --- a/internal/data/user.go +++ b/internal/data/user.go @@ -234,7 +234,7 @@ func (ro userRepo) LastLogin(ctx context.Context, username string) (err error) { return } -func (ro userRepo) WrongPwd(ctx context.Context, req biz.LoginTime) (err error) { +func (ro userRepo) WrongPwd(ctx context.Context, req *biz.LoginTime) (err error) { oldItem, err := ro.GetByUsername(ctx, req.Username) if err != nil { return diff --git a/internal/pkg/task/task.go b/internal/pkg/task/task.go index f138ecf..fc7824b 100644 --- a/internal/pkg/task/task.go +++ b/internal/pkg/task/task.go @@ -83,7 +83,7 @@ func process(t task) (err error) { case t.c.Task.Group.LoginFailed: var req biz.LoginTime utils.Json2Struct(&req, t.payload.Payload) - err = t.user.WrongPwd(ctx, req) + err = t.user.WrongPwd(ctx, &req) case t.c.Task.Group.LoginLast: var req biz.LoginTime utils.Json2Struct(&req, t.payload.Payload) diff --git a/internal/server/middleware/permission.go b/internal/server/middleware/permission.go index 41ea3bb..dca31ad 100644 --- a/internal/server/middleware/permission.go +++ b/internal/server/middleware/permission.go @@ -24,7 +24,7 @@ import ( const ( pubURIPrefix = "/pub/" - jwtTokenCachePrefix = "jwt.token." + jwtTokenCachePrefix = "jwt.token" jwtTokenCacheExpire = 10 * time.Minute permissionHeaderMethod = "x-original-method" permissionHeaderURI = "x-permission-uri" @@ -96,7 +96,7 @@ func permissionWhitelist(ctx context.Context, whitelist *biz.WhitelistUseCase, r // check if it is on the whitelist ok = whitelist.Has(ctx, &biz.HasWhitelist{ Category: biz.WhitelistPermissionCategory, - Permission: r, + Permission: &r, }) // override params v, ok2 := req.(*auth.PermissionRequest) @@ -113,7 +113,7 @@ func jwtWhitelist(ctx context.Context, whitelist *biz.WhitelistUseCase) bool { tr, _ := transport.FromServerContext(ctx) return whitelist.Has(ctx, &biz.HasWhitelist{ Category: biz.WhitelistJwtCategory, - Permission: biz.CheckPermission{ + Permission: &biz.CheckPermission{ Resource: tr.Operation(), }, }) diff --git a/internal/service/auth.go b/internal/service/auth.go index c4d60ae..6b2a872 100644 --- a/internal/service/auth.go +++ b/internal/service/auth.go @@ -139,7 +139,7 @@ func (s *AuthService) Permission(ctx context.Context, req *auth.PermissionReques defer span.End() rp = &emptypb.Empty{} user := jwt.FromServerContext(ctx) - r := biz.CheckPermission{ + r := &biz.CheckPermission{ UserCode: user.Attrs["code"], } if req.Resource != nil {