improve confirm dialog

This commit is contained in:
Shaun Walker
2019-10-25 21:27:29 -04:00
parent d5031a052a
commit f59ec7bdac
7 changed files with 189 additions and 114 deletions

View File

@ -9,7 +9,10 @@
@code {
[Parameter]
public string Action { get; set; }
public string Action { get; set; } // required
[Parameter]
public SecurityAccessLevel? Security { get; set; } // optional - can be used to explicitly specify SecurityAccessLevel
[Parameter]
public string Text { get; set; } // optional - defaults to Action if not specified
@ -23,9 +26,6 @@
[Parameter]
public string Style { get; set; } // optional
[Parameter]
public string Control { get; set; } // optional - can be used to explicitly link an Action to a Module Control
string text = "";
string url = "";
string parameters = "";
@ -57,51 +57,53 @@
}
url = EditUrl(Action, parameters);
authorized = IsAuthorized();
}
private bool IsAuthorized()
{
bool authorized = false;
if (PageState.EditMode)
{
string typename;
if (string.IsNullOrEmpty(Control))
SecurityAccessLevel security = SecurityAccessLevel.Host;
if (Security == null)
{
typename = ModuleState.ModuleType.Replace(Utilities.GetTypeNameLastSegment(ModuleState.ModuleType, 0) + ",", Action + ",");
}
else
{
typename = ModuleState.ModuleType.Replace(Utilities.GetTypeNameLastSegment(ModuleState.ModuleType, 0) + ",", Control + ",");
}
Type moduleType = Type.GetType(typename);
if (moduleType != null)
{
var moduleobject = Activator.CreateInstance(moduleType);
SecurityAccessLevel SecurityAccessLevel = (SecurityAccessLevel)moduleType.GetProperty("SecurityAccessLevel").GetValue(moduleobject, null);
switch (SecurityAccessLevel)
string typename = ModuleState.ModuleType.Replace(Utilities.GetTypeNameLastSegment(ModuleState.ModuleType, 0) + ",", Action + ",");
Type moduleType = Type.GetType(typename);
if (moduleType != null)
{
case SecurityAccessLevel.Anonymous:
authorized = true;
break;
case SecurityAccessLevel.View:
authorized = UserSecurity.IsAuthorized(PageState.User, "View", ModuleState.Permissions);
break;
case SecurityAccessLevel.Edit:
authorized = UserSecurity.IsAuthorized(PageState.User, "Edit", ModuleState.Permissions);
break;
case SecurityAccessLevel.Admin:
authorized = UserSecurity.IsAuthorized(PageState.User, Constants.AdminRole);
break;
case SecurityAccessLevel.Host:
authorized = UserSecurity.IsAuthorized(PageState.User, Constants.HostRole);
break;
var moduleobject = Activator.CreateInstance(moduleType);
security = (SecurityAccessLevel)moduleType.GetProperty("SecurityAccessLevel").GetValue(moduleobject, null);
}
else
{
security = SecurityAccessLevel.Anonymous; // occurs when an action does not have a corresponding module control
Class = "btn btn-warning"; // alert developer of missing module comtrol
}
}
else
{
authorized = true; // occurs when an action does not have a corresponding module control
classname = "btn btn-warning"; // alert developer of missing module comtrol
security = Security.Value;
}
switch (security)
{
case SecurityAccessLevel.Anonymous:
authorized = true;
break;
case SecurityAccessLevel.View:
authorized = UserSecurity.IsAuthorized(PageState.User, "View", ModuleState.Permissions);
break;
case SecurityAccessLevel.Edit:
authorized = UserSecurity.IsAuthorized(PageState.User, "Edit", ModuleState.Permissions);
break;
case SecurityAccessLevel.Admin:
authorized = UserSecurity.IsAuthorized(PageState.User, Constants.AdminRole);
break;
case SecurityAccessLevel.Host:
authorized = UserSecurity.IsAuthorized(PageState.User, Constants.HostRole);
break;
}
}
else
{
authorized = false;
}
return authorized;
}
}