🐛 Fix missing file permission creation

This commit is contained in:
2026-01-12 19:32:50 +08:00
parent 7085f43e54
commit c11bf579c4
12 changed files with 158 additions and 3 deletions

View File

@@ -80,9 +80,6 @@ public class FileController(
if (currentUser?.IsSuperuser == true)
return true;
// TODO Remove this when the other serivce will mark permission correctly.
return true;
var permission = await db.FilePermissions
.FirstOrDefaultAsync(p => p.FileId == file.Id);

View File

@@ -854,6 +854,45 @@ public class FileService(
await db.SaveChangesAsync();
return count;
}
public async Task SetPublicAsync(string fileId)
{
var existingPermission = await db.FilePermissions
.FirstOrDefaultAsync(p =>
p.FileId == fileId &&
p.SubjectType == SnFilePermissionType.Anyone &&
p.Permission == SnFilePermissionLevel.Read);
if (existingPermission != null)
return;
var permission = new SnFilePermission
{
Id = Guid.NewGuid(),
FileId = fileId,
SubjectType = SnFilePermissionType.Anyone,
SubjectId = string.Empty,
Permission = SnFilePermissionLevel.Read
};
db.FilePermissions.Add(permission);
await db.SaveChangesAsync();
}
public async Task UnsetPublicAsync(string fileId)
{
var permission = await db.FilePermissions
.FirstOrDefaultAsync(p =>
p.FileId == fileId &&
p.SubjectType == SnFilePermissionType.Anyone &&
p.Permission == SnFilePermissionLevel.Read);
if (permission == null)
return;
db.FilePermissions.Remove(permission);
await db.SaveChangesAsync();
}
}
file class UpdatableCloudFile(SnCloudFile file)

View File

@@ -46,5 +46,17 @@ namespace DysonNetwork.Drive.Storage
await fileService._PurgeCacheAsync(request.FileId);
return new Empty();
}
public override async Task<Empty> SetFilePublic(SetFilePublicRequest request, ServerCallContext context)
{
await fileService.SetPublicAsync(request.FileId);
return new Empty();
}
public override async Task<Empty> UnsetFilePublic(UnsetFilePublicRequest request, ServerCallContext context)
{
await fileService.UnsetPublicAsync(request.FileId);
return new Empty();
}
}
}