Refactor CheckCanManageRequest

This commit is contained in:
Florian Dupret 2021-11-11 10:46:44 +01:00
commit 40e51c84dc

View file

@ -79,26 +79,29 @@ namespace Ombi.Core.Engine
} }
protected async Task<RequestEngineResult> CheckCanManageRequest(BaseRequest request) { protected async Task<RequestEngineResult> CheckCanManageRequest(BaseRequest request) {
var errorResult = new RequestEngineResult {
Result = false,
ErrorCode = ErrorCode.NoPermissions
};
var successResult = new RequestEngineResult { Result = true };
// Admins can always manage requests // 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 (isAdmin) {
return new RequestEngineResult { Result = true }; return successResult;
}
// Users with 'ManageOwnRequests' can only manage their own requests
var canManageOwnRequests = await IsInRole(OmbiRoles.ManageOwnRequests);
if (canManageOwnRequests) {
var isRequestedBySameUser = ( await GetUser() ).Id == request.RequestedUser?.Id;
if (isRequestedBySameUser) {
return new RequestEngineResult { Result = true };
}
} }
return new RequestEngineResult // Users with 'ManageOwnRequests' can only manage their own requests
{ var canManageOwnRequests = await IsInRole(OmbiRoles.ManageOwnRequests);
Result = false, if (!canManageOwnRequests) {
ErrorCode = ErrorCode.NoPermissions return errorResult;
}; }
var isRequestedBySameUser = ( await GetUser() ).Id == request.RequestedUser?.Id;
if (isRequestedBySameUser) {
return successResult;
}
return errorResult;
} }
public RequestCountModel RequestCount() public RequestCountModel RequestCount()