change function headers & calls

Signed-off-by: Christian Richter <c.richter@opencloud.eu>
This commit is contained in:
Christian Richter
2025-11-06 18:01:58 +01:00
parent 96042752bb
commit 1404c69597
4 changed files with 14 additions and 10 deletions
+4 -3
View File
@@ -85,15 +85,16 @@ func NewIdentityCache(opts ...IdentityCacheOption) IdentityCache {
}
// GetUser looks up a user by id, if the user is not cached, yet it will do a lookup via the CS3 API
func (cache IdentityCache) GetUser(ctx context.Context, userid string) (libregraph.User, error) {
u, err := cache.GetCS3User(ctx, userid)
func (cache IdentityCache) GetUser(ctx context.Context, tennantId, userid string) (libregraph.User, error) {
// can we get the tenant from the context or do we have to pass it?
u, err := cache.GetCS3User(ctx, tennantId, userid)
if err != nil {
return libregraph.User{}, err
}
return *CreateUserModelFromCS3(u), nil
}
func (cache IdentityCache) GetCS3User(ctx context.Context, userid string) (*cs3User.User, error) {
func (cache IdentityCache) GetCS3User(ctx context.Context, tennantId, userid string) (*cs3User.User, error) {
var user *cs3User.User
if item := cache.users.Get(userid); item == nil {
gatewayClient, err := cache.gatewaySelector.Next()
@@ -184,7 +184,8 @@ func (s DriveItemPermissionsService) Invite(ctx context.Context, resourceId *sto
cTime = createShareResponse.GetShare().GetCtime()
expiration = createShareResponse.GetShare().GetExpiration()
default:
user, err := s.identityCache.GetCS3User(ctx, objectID)
// TODO: get tenantId from revactx.ContextGetUser(ctx), maybe we need to extent the user struct
user, err := s.identityCache.GetCS3User(ctx, "", objectID)
if errors.Is(err, identity.ErrNotFound) && s.config.IncludeOCMSharees {
user, err = s.identityCache.GetAcceptedCS3User(ctx, objectID)
if err == nil && IsSpaceRoot(statResponse.GetInfo().GetId()) {
@@ -259,14 +260,15 @@ func (s DriveItemPermissionsService) Invite(ctx context.Context, resourceId *sto
}
if user, ok := revactx.ContextGetUser(ctx); ok {
identity, err := userIdToIdentity(ctx, s.identityCache, user.GetId().GetOpaqueId())
// TODO: get tenantId from revactx.ContextGetUser(ctx), maybe we need to extent the user struct
userIdentity, err := userIdToIdentity(ctx, s.identityCache, "", user.GetId().GetOpaqueId())
if err != nil {
s.logger.Error().Err(err).Msg("identity lookup failed")
return libregraph.Permission{}, errorcode.New(errorcode.InvalidRequest, err.Error())
}
permission.SetInvitation(libregraph.SharingInvitation{
InvitedBy: &libregraph.IdentitySet{
User: &identity,
User: &userIdentity,
},
})
}
+2 -1
View File
@@ -170,7 +170,8 @@ func (g BaseGraphService) cs3SpacePermissionsToLibreGraph(ctx context.Context, s
}
isGroup = true
} else {
cs3Identity, err = userIdToIdentity(ctx, g.identityCache, tmp)
// TODO: get tenantId from revactx.ContextGetUser(ctx), maybe we need to extent the user struct
cs3Identity, err = userIdToIdentity(ctx, g.identityCache, "", tmp)
if err != nil {
g.logger.Warn().Str("userid", tmp).Msg("User not found by id")
}
+3 -3
View File
@@ -92,11 +92,11 @@ func IsShareJail(id *storageprovider.ResourceId) bool {
// userIdToIdentity looks the user for the supplied id using the cache and returns it
// as a libregraph.Identity
func userIdToIdentity(ctx context.Context, cache identity.IdentityCache, userID string) (libregraph.Identity, error) {
func userIdToIdentity(ctx context.Context, cache identity.IdentityCache, tennantId, userID string) (libregraph.Identity, error) {
identity := libregraph.Identity{
Id: libregraph.PtrString(userID),
}
user, err := cache.GetUser(ctx, userID)
user, err := cache.GetUser(ctx, tennantId, userID)
if err == nil {
identity.SetDisplayName(user.GetDisplayName())
identity.SetLibreGraphUserType(user.GetUserType())
@@ -126,7 +126,7 @@ func cs3UserIdToIdentity(ctx context.Context, cache identity.IdentityCache, cs3U
return federatedIdToIdentity(ctx, cache, cs3UserID.GetOpaqueId())
}
if cs3UserID.GetType() != cs3User.UserType_USER_TYPE_SPACE_OWNER {
return userIdToIdentity(ctx, cache, cs3UserID.GetOpaqueId())
return userIdToIdentity(ctx, cache, cs3UserID.GetTenantId(), cs3UserID.GetOpaqueId())
}
return libregraph.Identity{Id: libregraph.PtrString(cs3UserID.GetOpaqueId())}, nil
}