mirror of https://github.com/abpframework/abp.git
committed by
GitHub
4 changed files with 72 additions and 0 deletions
@ -0,0 +1,46 @@ |
|||||
|
using System; |
||||
|
using System.Threading.Tasks; |
||||
|
using Hangfire.Dashboard; |
||||
|
using Microsoft.Extensions.DependencyInjection; |
||||
|
using Volo.Abp.Authorization.Permissions; |
||||
|
using Volo.Abp.Users; |
||||
|
|
||||
|
namespace Volo.Abp.Hangfire |
||||
|
{ |
||||
|
public class AbpHangfireAuthorizationFilter : IDashboardAsyncAuthorizationFilter |
||||
|
{ |
||||
|
private readonly string _requiredPermissionName; |
||||
|
|
||||
|
public AbpHangfireAuthorizationFilter(string requiredPermissionName = null) |
||||
|
{ |
||||
|
_requiredPermissionName = requiredPermissionName; |
||||
|
} |
||||
|
|
||||
|
public async Task<bool> AuthorizeAsync(DashboardContext context) |
||||
|
{ |
||||
|
if (!IsLoggedIn(context)) |
||||
|
{ |
||||
|
return false; |
||||
|
} |
||||
|
|
||||
|
if (_requiredPermissionName.IsNullOrEmpty()) |
||||
|
{ |
||||
|
return true; |
||||
|
} |
||||
|
|
||||
|
return await IsPermissionGrantedAsync(context, _requiredPermissionName); |
||||
|
} |
||||
|
|
||||
|
private static bool IsLoggedIn(DashboardContext context) |
||||
|
{ |
||||
|
var currentUser = context.GetHttpContext().RequestServices.GetRequiredService<ICurrentUser>(); |
||||
|
return currentUser.IsAuthenticated; |
||||
|
} |
||||
|
|
||||
|
private static async Task<bool> IsPermissionGrantedAsync(DashboardContext context, string requiredPermissionName) |
||||
|
{ |
||||
|
var permissionChecker = context.GetHttpContext().RequestServices.GetRequiredService<IPermissionChecker>(); |
||||
|
return await permissionChecker.IsGrantedAsync(requiredPermissionName); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
Loading…
Reference in new issue