first commit

This commit is contained in:
2025-02-26 23:42:19 +01:00
commit 777ea98be1
283 changed files with 88266 additions and 0 deletions
@@ -0,0 +1,37 @@
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.Filters;
using OpenWarehouse.auth.Common.ApiInterfeiceLib;
using OpenWarehouse.auth.lib;
namespace OpenWarehouse.warehouse.api.Common.CustimIdentifyManager;
public class HasPrivilage : Attribute, IAsyncAuthorizationFilter
{
public ServicePrivilage Privilage;
public HasPrivilage(ServicePrivilage privilage)
{
Privilage = privilage;
}
public async Task OnAuthorizationAsync(AuthorizationFilterContext context)
{
context.HttpContext.Request.Headers.TryGetValue("Authorization", out var token);
var sToken = token.ToString();
if (sToken == "") context.Result = new UnauthorizedResult();
var config = context.HttpContext.RequestServices.GetRequiredService<IConfiguration>();
var handler = new AuthTokenHandler(sToken);
var httpClient = new HttpClient(handler);
var client = new OpenWarehouseAuthClient(config["Auth:Url"], httpClient);
var privilage = await client.GetUserPrivilagesAsync();
if (privilage is {Count: 0} && !privilage.Any(s => s.Equals(Privilage.GetName())))
{
context.Result = new ForbidResult();
}
return;
}
}
@@ -0,0 +1,7 @@
namespace OpenWarehouse.warehouse.api.Common.CustimIdentifyManager;
public enum ServicePrivilage
{
Admin, ServiceAdmin, ManageWarehouse, EditWarehouse, AddWarehouse, DeleteWarehouse, ManageItems, EditItems,
AddItems, DeleteItems, ManageInvetory, EditInventory, AddItemToInventory, SeeInventory, ManageServicePrivilage, ServiceUser
}
@@ -0,0 +1,132 @@
namespace OpenWarehouse.warehouse.api.Common.CustimIdentifyManager;
public static class ServicePrivilageClass
{
private static readonly string PrivilagePrefix = "WarehouseApi";
private static readonly Dictionary<ServicePrivilage, string> PrivilageNameMap = new()
{
{ ServicePrivilage.Admin, "Admin" },
{ ServicePrivilage.ServiceAdmin, $"{PrivilagePrefix}-Admin" },
{ ServicePrivilage.ManageWarehouse, $"{PrivilagePrefix}-Warehouse-Manage" },
{ ServicePrivilage.EditWarehouse, $"{PrivilagePrefix}-Warehouse-Edit" },
{ ServicePrivilage.AddWarehouse, $"{PrivilagePrefix}-Warehouse-Add" },
{ ServicePrivilage.DeleteWarehouse, $"{PrivilagePrefix}-Warehouse-Delete" },
{ ServicePrivilage.ManageItems, $"{PrivilagePrefix}-Items-Manage" },
{ ServicePrivilage.EditItems, $"{PrivilagePrefix}-Items-Edit" },
{ ServicePrivilage.AddItems, $"{PrivilagePrefix}-Items-Add" },
{ ServicePrivilage.DeleteItems, $"{PrivilagePrefix}-Items-Delete" },
{ ServicePrivilage.ManageInvetory, $"{PrivilagePrefix}-Inventory-mange"},
{ ServicePrivilage.EditInventory, $"{PrivilagePrefix}-Inventory-Edit"},
{ ServicePrivilage.AddItemToInventory, $"{PrivilagePrefix}-Inventory-Add-Item"},
{ ServicePrivilage.SeeInventory, $"{PrivilagePrefix}-Inventory-See"},
{ ServicePrivilage.ServiceUser, $"{PrivilagePrefix}-User"}
};
private static readonly Dictionary<ServicePrivilage, List<ServicePrivilage>> PrivilageMap = new()
{
{ ServicePrivilage.Admin, [ServicePrivilage.Admin] },
{ ServicePrivilage.ServiceAdmin, [ServicePrivilage.Admin, ServicePrivilage.ServiceAdmin] },
{
ServicePrivilage.ManageWarehouse,
[ServicePrivilage.Admin, ServicePrivilage.ServiceAdmin, ServicePrivilage.ManageWarehouse]
},
{
ServicePrivilage.EditWarehouse,
[
ServicePrivilage.Admin, ServicePrivilage.ServiceAdmin, ServicePrivilage.ManageWarehouse,
ServicePrivilage.EditWarehouse
]
},
{
ServicePrivilage.AddWarehouse,
[
ServicePrivilage.Admin, ServicePrivilage.ServiceAdmin, ServicePrivilage.ManageWarehouse,
ServicePrivilage.AddWarehouse
]
},
{
ServicePrivilage.DeleteWarehouse,
[
ServicePrivilage.Admin, ServicePrivilage.ServiceAdmin, ServicePrivilage.ManageWarehouse,
ServicePrivilage.DeleteWarehouse
]
},
{
ServicePrivilage.ManageItems,
[ServicePrivilage.Admin, ServicePrivilage.ServiceAdmin, ServicePrivilage.ManageItems]
},
{
ServicePrivilage.EditItems,
[
ServicePrivilage.Admin, ServicePrivilage.ServiceAdmin, ServicePrivilage.ManageItems,
ServicePrivilage.EditItems
]
},
{
ServicePrivilage.AddItems,
[
ServicePrivilage.Admin, ServicePrivilage.ServiceAdmin, ServicePrivilage.ManageItems,
ServicePrivilage.AddItems
]
},
{
ServicePrivilage.DeleteItems,
[
ServicePrivilage.Admin, ServicePrivilage.ServiceAdmin, ServicePrivilage.ManageItems,
ServicePrivilage.DeleteItems
]
},
{
ServicePrivilage.ManageInvetory,
[ServicePrivilage.Admin, ServicePrivilage.ServiceAdmin, ServicePrivilage.ManageInvetory]
},
{
ServicePrivilage.EditInventory,
[
ServicePrivilage.Admin, ServicePrivilage.ServiceAdmin, ServicePrivilage.ManageInvetory,
ServicePrivilage.EditInventory
]
},
{
ServicePrivilage.AddItemToInventory,
[
ServicePrivilage.Admin, ServicePrivilage.ServiceAdmin, ServicePrivilage.ManageInvetory,
ServicePrivilage.AddItemToInventory
]
},
{
ServicePrivilage.SeeInventory,
[
ServicePrivilage.Admin, ServicePrivilage.ServiceAdmin, ServicePrivilage.ManageInvetory,
ServicePrivilage.SeeInventory
]
},
{ ServicePrivilage.ServiceUser, GetAllPrivilageList() }
};
public static List<ServicePrivilage> GetAllPrivilageList()
{
var list = PrivilageNameMap.Select(pair => pair.Key).ToList();
return list;
}
public static List<ServicePrivilage> GetServicePrivilageList()
{
var list = PrivilageNameMap.Where(pair => pair.Value.Contains(PrivilagePrefix))
.Select(pair => pair.Key).ToList();
return list;
}
public static List<string> GetServicePrivilageNameList()
{
var list = PrivilageNameMap.Where(pair => pair.Value.Contains(PrivilagePrefix))
.Select(pair => pair.Value).ToList();
return list;
}
public static string GetName(this ServicePrivilage servicePrivilage)
{
var result = PrivilageNameMap.TryGetValue(servicePrivilage, out var name);
return (result ? name : $"Uknow-{servicePrivilage}") ?? $"Role {servicePrivilage} Uknow";
}
}