🐛 Fix missing file permission creation
This commit is contained in:
@@ -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);
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user