Refactor CheckOwnRequests

This commit is contained in:
Florian Dupret 2021-11-10 17:09:48 +01:00
commit f20ff7f594
4 changed files with 15 additions and 15 deletions

View file

@ -78,23 +78,23 @@ namespace Ombi.Core.Engine
return _dbTv; return _dbTv;
} }
protected async Task<RequestEngineResult> CheckOwnRequests(BaseRequest request) { protected async Task<RequestEngineResult> CheckCanManageRequest(BaseRequest request) {
var isRequestedBySameUser = ( await GetUser() ).Equals(request.RequestedUser); // Admins can always manage requests
var isAdmin = await IsInRole(OmbiRoles.PowerUser) || await IsInRole(OmbiRoles.Admin); var isAdmin = await IsInRole(OmbiRoles.PowerUser) || await IsInRole(OmbiRoles.Admin);
if (isAdmin)
if (!isRequestedBySameUser && !isAdmin) return new RequestEngineResult { Result = true };
{
return new RequestEngineResult // Users with 'ManageOwnRequests' can only manage their own requests
{ var isRequestedBySameUser = ( await GetUser() ).Equals(request.RequestedUser);
Result = false, var canManageOwnRequests = await IsInRole(OmbiRoles.ManageOwnRequests);
ErrorCode = ErrorCode.NoPermissions if(canManageOwnRequests && isRequestedBySameUser)
}; return new RequestEngineResult { Result = true };
}
return new RequestEngineResult return new RequestEngineResult
{ {
Result = true, Result = false,
ErrorCode = ErrorCode.NoPermissions
}; };
} }

View file

@ -658,7 +658,7 @@ namespace Ombi.Core.Engine
{ {
var request = await MovieRepository.GetAll().FirstOrDefaultAsync(x => x.Id == requestId); var request = await MovieRepository.GetAll().FirstOrDefaultAsync(x => x.Id == requestId);
var result = await CheckOwnRequests(request); var result = await CheckCanManageRequest(request);
if (result.IsError) if (result.IsError)
return result; return result;

View file

@ -408,7 +408,7 @@ namespace Ombi.Core.Engine
{ {
var request = await MusicRepository.GetAll().FirstOrDefaultAsync(x => x.Id == requestId); var request = await MusicRepository.GetAll().FirstOrDefaultAsync(x => x.Id == requestId);
var result = await CheckOwnRequests(request); var result = await CheckCanManageRequest(request);
if (result.IsError) if (result.IsError)
return result; return result;

View file

@ -753,7 +753,7 @@ namespace Ombi.Core.Engine
{ {
var request = await TvRepository.GetChild().FirstOrDefaultAsync(x => x.Id == requestId); var request = await TvRepository.GetChild().FirstOrDefaultAsync(x => x.Id == requestId);
var result = await CheckOwnRequests(request); var result = await CheckCanManageRequest(request);
if (result.IsError) if (result.IsError)
return result; return result;