Skip to content
12 changes: 4 additions & 8 deletions roles/database/files/sql/idempotent/fworch-api-funcs.sql
Original file line number Diff line number Diff line change
Expand Up @@ -214,23 +214,21 @@ RETURNS boolean AS $$
ELSE
IF EXISTS ( -- ip of rule_from object is in tenant_network of tenant
SELECT rf.obj_id FROM rule_from rf
LEFT JOIN rule r ON (rf.rule_id=r.rule_id)
LEFT JOIN objgrp_flat ON (rf.obj_id=objgrp_flat.objgrp_flat_id)
LEFT JOIN object ON (objgrp_flat.objgrp_flat_member_id=object.obj_id)
LEFT JOIN tenant_network ON
(ip_ranges_overlap(obj_ip, obj_ip_end, tenant_net_ip, tenant_net_ip_end, rf.negated != r.rule_src_neg))
(ip_ranges_overlap(obj_ip, obj_ip_end, tenant_net_ip, tenant_net_ip_end, rf.negated))
WHERE rule_from_id = rule_from.rule_from_id AND tenant_id = t_id
) THEN
show := true;
ELSE -- check if all rule_from objects visible since relevant rule_to exists
FOR rule_to_obj IN
SELECT rt.*, tenant_network.tenant_id
FROM rule_to rt
LEFT JOIN rule r ON (rt.rule_id=r.rule_id)
LEFT JOIN objgrp_flat ON (rt.obj_id=objgrp_flat_id)
LEFT JOIN object ON (objgrp_flat_member_id=object.obj_id)
LEFT JOIN tenant_network ON
(ip_ranges_overlap(obj_ip, obj_ip_end, tenant_net_ip, tenant_net_ip_end, rt.negated != r.rule_dst_neg))
(ip_ranges_overlap(obj_ip, obj_ip_end, tenant_net_ip, tenant_net_ip_end, rt.negated))
WHERE rt.rule_id = rule_from.rule_id
LOOP
IF rule_to_obj.tenant_id = t_id THEN
Expand Down Expand Up @@ -269,23 +267,21 @@ RETURNS boolean AS $$
ELSE
IF EXISTS ( -- ip of rule_to object is in tenant_network of tenant
SELECT rt.obj_id FROM rule_to rt
LEFT JOIN rule r ON (rt.rule_id=r.rule_id)
LEFT JOIN objgrp_flat ON (rt.obj_id=objgrp_flat.objgrp_flat_id)
LEFT JOIN object ON (objgrp_flat.objgrp_flat_member_id=object.obj_id)
LEFT JOIN tenant_network ON
(ip_ranges_overlap(obj_ip, obj_ip_end, tenant_net_ip, tenant_net_ip_end, rt.negated != r.rule_dst_neg))
(ip_ranges_overlap(obj_ip, obj_ip_end, tenant_net_ip, tenant_net_ip_end, rt.negated))
WHERE rule_to_id = rule_to.rule_to_id AND tenant_id = t_id
) THEN
show := true;
ELSE -- check if all rule_to objects visible since relevant rule_from exists
FOR rule_from_obj IN
SELECT rf.*, tenant_network.tenant_id
FROM rule_from rf
LEFT JOIN rule r ON (rf.rule_id=r.rule_id)
LEFT JOIN objgrp_flat ON (rf.obj_id=objgrp_flat_id)
LEFT JOIN object ON (objgrp_flat.objgrp_flat_member_id=object.obj_id)
LEFT JOIN tenant_network ON
(ip_ranges_overlap(obj_ip, obj_ip_end, tenant_net_ip, tenant_net_ip_end, rf.negated != r.rule_src_neg))
(ip_ranges_overlap(obj_ip, obj_ip_end, tenant_net_ip, tenant_net_ip_end, rf.negated))
WHERE rf.rule_id = rule_to.rule_id
LOOP
IF rule_from_obj.tenant_id = t_id THEN
Expand Down
27 changes: 21 additions & 6 deletions roles/ui/files/FWO.UI/Shared/AnchorNavToRSB.razor
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,15 @@
/// </summary>
private async Task<string> GetIdFromURI()
{
var currentUrl = await JSRuntime.InvokeAsync<string>("getCurrentUrl");
string? currentUrl = null;
try
{
currentUrl = await JSRuntime.InvokeAsync<string>("getCurrentUrl");
}
catch (JSException)
{
return "";
}
var uri = new Uri(currentUrl, UriKind.Absolute);
var fragment = uri.Fragment;
if (fragment.StartsWith("#goto-"))
Expand Down Expand Up @@ -88,12 +96,19 @@

CollapseState.Expand(elementId);

bool foundObj = await JSRuntime.InvokeAsync<bool>("scrollIntoRSBView", elementId);

if (foundObj)
bool foundObj = false;
try
{
foundObj = await JSRuntime.InvokeAsync<bool>("scrollIntoRSBView", elementId);
if (foundObj)
{
// remove #goto-{obj-link} fragment from uri
await JSRuntime.InvokeVoidAsync("removeUrlFragment");
}
}
catch (JSException)
{
// remove #goto-{obj-link} fragment from uri
await JSRuntime.InvokeVoidAsync("removeUrlFragment");
return;
}
}
}
Expand Down
Loading