Files: added room manager share, added room edit security

This commit is contained in:
Maksim Chegulov 2022-04-13 14:13:00 +03:00
parent 080dfd2bd8
commit 67431b1cfb

View File

@ -129,6 +129,11 @@ public class FileSecurity : IFileSecurity
{ {
return CanAsync(entry, userId, FilesSecurityActions.Delete); return CanAsync(entry, userId, FilesSecurityActions.Delete);
} }
public Task<bool> CanEditRoomAsync<T>(FileEntry<T> entry, Guid userId)
{
return CanAsync(entry, userId, FilesSecurityActions.RoomEdit);
}
public Task<bool> CanReadAsync<T>(FileEntry<T> entry) public Task<bool> CanReadAsync<T>(FileEntry<T> entry)
{ {
@ -169,6 +174,11 @@ public class FileSecurity : IFileSecurity
{ {
return CanDeleteAsync(entry, _authContext.CurrentAccount.ID); return CanDeleteAsync(entry, _authContext.CurrentAccount.ID);
} }
public Task<bool> CanEditRoomAsync<T>(FileEntry<T> entry)
{
return CanEditRoomAsync(entry, _authContext.CurrentAccount.ID);
}
public Task<IEnumerable<Guid>> WhoCanReadAsync<T>(FileEntry<T> entry) public Task<IEnumerable<Guid>> WhoCanReadAsync<T>(FileEntry<T> entry)
{ {
@ -545,6 +555,7 @@ public class FileSecurity : IFileSecurity
if (e.RootFolderType == FolderType.VirtualRooms && _fileSecurityCommon.IsAdministrator(userId)) if (e.RootFolderType == FolderType.VirtualRooms && _fileSecurityCommon.IsAdministrator(userId))
{ {
// administrator in VirtualRooms has all right
result.Add(e); result.Add(e);
continue; continue;
} }
@ -602,27 +613,31 @@ public class FileSecurity : IFileSecurity
{ {
result.Add(e); result.Add(e);
} }
else if (action == FilesSecurityActions.Comment && (e.Access == FileShare.Comment || e.Access == FileShare.Review || e.Access == FileShare.CustomFilter || e.Access == FileShare.ReadWrite)) else if (action == FilesSecurityActions.Comment && (e.Access == FileShare.Comment || e.Access == FileShare.Review || e.Access == FileShare.CustomFilter || e.Access == FileShare.ReadWrite || e.Access == FileShare.RoomManager))
{ {
result.Add(e); result.Add(e);
} }
else if (action == FilesSecurityActions.FillForms && (e.Access == FileShare.FillForms || e.Access == FileShare.Review || e.Access == FileShare.ReadWrite)) else if (action == FilesSecurityActions.FillForms && (e.Access == FileShare.FillForms || e.Access == FileShare.Review || e.Access == FileShare.ReadWrite || e.Access == FileShare.RoomManager))
{ {
result.Add(e); result.Add(e);
} }
else if (action == FilesSecurityActions.Review && (e.Access == FileShare.Review || e.Access == FileShare.ReadWrite)) else if (action == FilesSecurityActions.Review && (e.Access == FileShare.Review || e.Access == FileShare.ReadWrite || e.Access == FileShare.RoomManager))
{ {
result.Add(e); result.Add(e);
} }
else if (action == FilesSecurityActions.CustomFilter && (e.Access == FileShare.CustomFilter || e.Access == FileShare.ReadWrite)) else if (action == FilesSecurityActions.CustomFilter && (e.Access == FileShare.CustomFilter || e.Access == FileShare.ReadWrite || e.Access == FileShare.RoomManager))
{ {
result.Add(e); result.Add(e);
} }
else if (action == FilesSecurityActions.Edit && e.Access == FileShare.ReadWrite) else if (action == FilesSecurityActions.Edit && (e.Access == FileShare.ReadWrite || e.Access == FileShare.RoomManager))
{ {
result.Add(e); result.Add(e);
} }
else if (action == FilesSecurityActions.Create && e.Access == FileShare.ReadWrite) else if (action == FilesSecurityActions.RoomEdit && (e.Access == FileShare.RoomManager))
{
result.Add(e);
}
else if (action == FilesSecurityActions.Create && (e.Access == FileShare.ReadWrite || e.Access == FileShare.RoomManager))
{ {
result.Add(e); result.Add(e);
} }
@ -1110,6 +1125,7 @@ public class FileSecurity : IFileSecurity
Create, Create,
Edit, Edit,
Delete, Delete,
CustomFilter CustomFilter,
RoomEdit
} }
} }