tenant nur über header
This commit is contained in:
@@ -31,26 +31,56 @@ namespace BeWo.Service.ServiceBehavior
|
||||
{
|
||||
string lTenant = null;
|
||||
|
||||
// Hole Interface
|
||||
string lInterface = null;
|
||||
var segments = pChannel.LocalAddress.Uri.Segments;
|
||||
for (int i = 0; i < segments.Length; i++)
|
||||
{
|
||||
var seg = segments[i].Trim('/');
|
||||
|
||||
if (seg.EndsWith(".svc"))
|
||||
{
|
||||
lInterface = seg.Substring(0, seg.Length - 4);
|
||||
}
|
||||
}
|
||||
|
||||
if (string.IsNullOrWhiteSpace(lInterface))
|
||||
{
|
||||
throw new ArgumentException($"Zugriff verweigert. Interface unbekannt");
|
||||
}
|
||||
|
||||
|
||||
// Hole Methode
|
||||
string lMethod = pMessage.Properties[WebHttpDispatchOperationSelector.HttpOperationNamePropertyName] as string;
|
||||
if (string.IsNullOrWhiteSpace(lMethod))
|
||||
{
|
||||
throw new ArgumentException($"Zugriff verweigert. Methode unbekannt");
|
||||
}
|
||||
|
||||
|
||||
// RequireNoTenant
|
||||
var lTemp = ServiceHelper.GetCustomAttribute<RequireNoTenantAttribute>(pChannel.LocalAddress.Uri, pMessage.Headers.To);
|
||||
var lTemp = ServiceHelper.GetCustomAttribute<RequireNoTenantAttribute>(lInterface, lMethod);
|
||||
if (lTemp is object)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
//// Hole tenant aus Query
|
||||
if (pMessage.Properties?.Via is Uri uri)
|
||||
{
|
||||
var query = HttpUtility.ParseQueryString(uri.Query);
|
||||
var tenant = query["tenant"];
|
||||
// Hole tenant aus Query
|
||||
// Wird erstmal nicht benötigt. Per Header besser
|
||||
// Ungefähr auf einem Level wie Username
|
||||
//if (pMessage.Properties?.Via is Uri uri)
|
||||
//{
|
||||
// var query = HttpUtility.ParseQueryString(uri.Query);
|
||||
// var tenant = query["tenant"];
|
||||
|
||||
lTenant = tenant;
|
||||
}
|
||||
// lTenant = tenant;
|
||||
//}
|
||||
|
||||
// Hole tenant aus Header
|
||||
if (string.IsNullOrWhiteSpace(lTenant))
|
||||
{
|
||||
|
||||
var prop = (HttpRequestMessageProperty)pMessage.Properties[HttpRequestMessageProperty.Name];
|
||||
lTenant = prop?.Headers["tenant"];
|
||||
}
|
||||
|
||||
// Wenn kein Tenant gefunden wird,
|
||||
|
||||
Reference in New Issue
Block a user