feat(server): add project sharing access control

This commit is contained in:
2026-07-10 14:46:18 +08:00
parent 60130b3d9b
commit 9d47cb9bbd
41 changed files with 3069 additions and 17 deletions
+13 -5
View File
@@ -9,6 +9,7 @@ import (
"time"
"img_infinite_canvas/internal/domain/design"
sharingmodule "img_infinite_canvas/internal/modules/sharing"
"img_infinite_canvas/internal/svc"
"img_infinite_canvas/internal/types"
@@ -37,10 +38,17 @@ func (l *QueryProjectLogic) QueryProject(req *types.QueryProjectRequest) (resp *
return nil, err
}
return toQueryProjectResponse(project), nil
permission := "OWNER"
visibility := "PRIVATE"
if access, ok := sharingmodule.AccessFromContext(l.ctx); ok {
permission = strings.ToUpper(string(access.Permission))
visibility = "SHARED"
project = filterSharedProject(project, access)
}
return toQueryProjectResponse(project, permission, visibility), nil
}
func toQueryProjectResponse(project design.Project) *types.QueryProjectResponse {
func toQueryProjectResponse(project design.Project, permission string, visibility string) *types.QueryProjectResponse {
covers := queryProjectCoverList(project)
updatedAt := formatLovartTime(project.UpdatedAt)
return &types.QueryProjectResponse{
@@ -63,9 +71,9 @@ func toQueryProjectResponse(project design.Project) *types.QueryProjectResponse
UniqId: project.SnapshotID,
ParentUniqId: "",
},
EffectivePermission: "OWNER",
EffectivePermission: permission,
CopyTaskStatus: nil,
Visibility: "PRIVATE",
Visibility: visibility,
CreateTime: updatedAt,
UpdateTime: updatedAt,
},
@@ -78,7 +86,7 @@ func toQueryProjectResponse(project design.Project) *types.QueryProjectResponse
Version: project.Version,
SnapshotId: nil,
ItemId: nil,
Permission: "OWNER",
Permission: permission,
},
}
}