feat(server): add project sharing access control
This commit is contained in:
@@ -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,
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user