@using Microsoft.AspNetCore.Components.Routing @using Oqtane.Modules @using Oqtane.Services @using Oqtane.Shared @inherits ModuleBase @inject IUserService UserService @if (authorized) { @text } @code { [Parameter] public string Action { get; set; } [Parameter] public string Text { get; set; } // optional [Parameter] public string Parameters { get; set; } // optional [Parameter] public string ButtonClass { get; set; } // optional string text = ""; string url = ""; string parameters = ""; string buttonClass = "btn btn-primary"; bool authorized = false; protected override void OnInitialized() { text = Action; if (!String.IsNullOrEmpty(Text)) { text = Text; } if (!String.IsNullOrEmpty(Parameters)) { parameters = Parameters; } if (!string.IsNullOrEmpty(ButtonClass)) { buttonClass = "btn " + ButtonClass; } url = EditUrl(Action, parameters); string typename = ModuleState.ModuleType.Replace(Utilities.GetTypeNameClass(ModuleState.ModuleType) + ",", Action + ","); Type moduleType = Type.GetType(typename); if (moduleType != null) { var moduleobject = Activator.CreateInstance(moduleType); SecurityAccessLevel SecurityAccessLevel = (SecurityAccessLevel)moduleType.GetProperty("SecurityAccessLevel").GetValue(moduleobject, null); switch (SecurityAccessLevel) { case SecurityAccessLevel.Anonymous: authorized = true; break; case SecurityAccessLevel.View: authorized = UserService.IsAuthorized(PageState.User, ModuleState.ViewPermissions); break; case SecurityAccessLevel.Edit: authorized = UserService.IsAuthorized(PageState.User, ModuleState.EditPermissions); break; case SecurityAccessLevel.Admin: authorized = UserService.IsAuthorized(PageState.User, Constants.AdminRole); break; case SecurityAccessLevel.Host: if (PageState.User != null) { authorized = PageState.User.IsSuperUser; } break; } } } }