using System.Net.Sockets;
using LFlow.Base;
using LFlow.Base.Utils;
using LFlow.Middleware;
using LFlow.Permission.Service;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Routing;
using Newtonsoft.Json;
namespace LFlow.Permission;
///
/// 权限中间件
///
public class PermissionMiddleware : ILFlowMiddleware
{
///
/// 优先级
///
public int Priority => 1;
///
/// 执行入口
///
///
///
///
///
public async Task RunAsync(HttpContext context, Func next)
{
var progName = context.GetRouteData()?.Values["controller"]?.ToString();
var progAction = context.GetRouteData()?.Values["action"]?.ToString();
if (progName != null)
{
var service = App.GetService();
var progPermission = service != null ? await service.GetProgPerminssionListAsync(progName) : null;
var currentPermission = progPermission?.FirstOrDefault(p => p.PermissionAction == progAction);
if (currentPermission == null || currentPermission!.IsPublic)
{
await next();
}
else
{
//TODO 从缓存中根据Token获取用户信息,并判断是否有权限
await context.Response.WriteAsync(JsonConvert.SerializeObject(ApiResult