|
|
|
@ -64,20 +64,26 @@ namespace Volo.Abp.Authorization |
|
|
|
|
|
|
|
protected async Task CheckAsync(IAuthorizeData authorizationAttribute) |
|
|
|
{ |
|
|
|
if (authorizationAttribute.Policy == null) |
|
|
|
if (authorizationAttribute.Policy != null) |
|
|
|
{ |
|
|
|
//TODO: Can we find a better, unified, way of checking if current request has been authenticated
|
|
|
|
if (!_currentUser.IsAuthenticated && !_currentClient.IsAuthenticated) |
|
|
|
await _authorizationService.CheckAsync(authorizationAttribute.Policy).ConfigureAwait(false); |
|
|
|
} |
|
|
|
else if (authorizationAttribute.Roles != null) |
|
|
|
{ |
|
|
|
if(_currentUser.IsInRole(authorizationAttribute.Roles) == false) |
|
|
|
{ |
|
|
|
throw new AbpAuthorizationException("Authorization failed! User has not logged in."); |
|
|
|
throw new AbpAuthorizationException("Authorization failed! Given roles has not granted: " + authorizationAttribute.Roles); |
|
|
|
} |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
await _authorizationService.CheckAsync(authorizationAttribute.Policy).ConfigureAwait(false); |
|
|
|
//TODO: Can we find a better, unified, way of checking if current request has been authenticated
|
|
|
|
if (!_currentUser.IsAuthenticated && !_currentClient.IsAuthenticated) |
|
|
|
{ |
|
|
|
throw new AbpAuthorizationException("Authorization failed! User has not logged in."); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
//TODO: What about roles and other props?
|
|
|
|
} |
|
|
|
} |
|
|
|
} |