From 0af8cacd4d513e75fa0c58890f7d5014cf204c08 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=98=99=E2=97=A6=20The=20Tablet=20=E2=9D=80=20GamerGirla?= =?UTF-8?q?ndCo=20=E2=97=A6=E2=9D=A7?= Date: Wed, 6 May 2026 21:11:01 -0400 Subject: [PATCH] refactor: add `permission denied` error type to group model package --- models/group/errors.go | 18 ++++++++++++++++++ services/group/group.go | 5 ++++- 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/models/group/errors.go b/models/group/errors.go index 812fc6ddc9..52aafbf655 100644 --- a/models/group/errors.go +++ b/models/group/errors.go @@ -42,3 +42,21 @@ func IsErrGroupTooDeep(err error) bool { func (err ErrGroupTooDeep) Error() string { return fmt.Sprintf("group has reached or exceeded the subgroup nesting limit [id: %d]", err.ID) } + +type ErrUserDoesNotHaveAccessToGroup struct { + UserID, GroupID int64 +} + +func (e ErrUserDoesNotHaveAccessToGroup) Error() string { + return fmt.Sprintf("user %d does not have access to group %d", e.UserID, e.GroupID) +} + +func (e ErrUserDoesNotHaveAccessToGroup) Unwrap() error { + return util.ErrPermissionDenied +} + +func IsErrUserDoesNotHaveAccessToGroup(err error) bool { + var eNoAccess ErrUserDoesNotHaveAccessToGroup + ok := errors.As(err, &eNoAccess) + return ok +} diff --git a/services/group/group.go b/services/group/group.go index d09077cbbf..ad48baaeb7 100644 --- a/services/group/group.go +++ b/services/group/group.go @@ -98,7 +98,10 @@ func MoveGroupItem(ctx context.Context, opts MoveGroupOptions, doer *user_model. return err } if !canAccessNewParent { - return errors.New("cannot access new parent group") + return group_model.ErrUserDoesNotHaveAccessToGroup{ + GroupID: opts.NewParent, + UserID: doer.ID, + } } err = parentGroup.LoadSubgroups(ctx, false)