using System.Linq;
using System.Threading.Tasks;
using Admin.Core.Service.Admin.User;
namespace Admin.Core.Auth
{
///
/// 权限处理
///
public class PermissionHandler : IPermissionHandler
{
private readonly IUserService _userService;
public PermissionHandler(IUserService userService)
{
_userService = userService;
}
///
/// 权限验证
///
/// 接口路径
/// http请求方法
///
public async Task ValidateAsync(string api, string httpMethod)
{
var permissions = await _userService.GetPermissionsAsync();
var valid = permissions.Any(m =>
m.Path.NotNull() && m.Path.EqualsIgnoreCase($"/{api}")
&& m.HttpMethods.NotNull() && m.HttpMethods.Split(',').Any(n => n.NotNull() && n.EqualsIgnoreCase(httpMethod))
);
return valid;
}
}
}