Permission-based authorization utilizing Policies
This commit is contained in:
		@ -2,6 +2,7 @@
 | 
			
		||||
@using Oqtane.Modules
 | 
			
		||||
@using Oqtane.Services
 | 
			
		||||
@using Oqtane.Models;
 | 
			
		||||
@using Oqtane.Security
 | 
			
		||||
@using Oqtane.Client.Modules.Controls
 | 
			
		||||
@inherits ModuleBase
 | 
			
		||||
@inject IPageService PageService
 | 
			
		||||
@ -10,7 +11,7 @@
 | 
			
		||||
<ul class="list-group">
 | 
			
		||||
    @foreach (var p in pages)
 | 
			
		||||
    {
 | 
			
		||||
        if (p.IsNavigation && UserService.IsAuthorized(PageState.User, p.ViewPermissions))
 | 
			
		||||
        if (p.IsNavigation && UserSecurity.IsAuthorized(PageState.User, "View", p.Permissions))
 | 
			
		||||
        {
 | 
			
		||||
            string url = NavigateUrl(p.Path);
 | 
			
		||||
            <li class="list-group-item">
 | 
			
		||||
 | 
			
		||||
@ -3,6 +3,7 @@
 | 
			
		||||
@using Oqtane.Models
 | 
			
		||||
@using Oqtane.Modules
 | 
			
		||||
@using Oqtane.Shared
 | 
			
		||||
@using Oqtane.Security
 | 
			
		||||
@using Oqtane.Client.Modules.Controls
 | 
			
		||||
@inherits ModuleBase
 | 
			
		||||
@inject IUriHelper UriHelper
 | 
			
		||||
@ -89,8 +90,8 @@
 | 
			
		||||
        title = ModuleState.Title;
 | 
			
		||||
        containers = ThemeService.GetContainerTypes(await ThemeService.GetThemesAsync());
 | 
			
		||||
        containertype = ModuleState.ContainerType;
 | 
			
		||||
        viewpermissions = ModuleState.ViewPermissions;
 | 
			
		||||
        editpermissions = ModuleState.EditPermissions;
 | 
			
		||||
        viewpermissions = UserSecurity.GetPermissions("View", ModuleState.Permissions);
 | 
			
		||||
        editpermissions = UserSecurity.GetPermissions("Edit", ModuleState.Permissions);
 | 
			
		||||
        pageid = ModuleState.PageId.ToString();
 | 
			
		||||
 | 
			
		||||
        DynamicComponent = builder =>
 | 
			
		||||
@ -108,8 +109,7 @@
 | 
			
		||||
    private async Task SaveModule()
 | 
			
		||||
    {
 | 
			
		||||
        Module module = ModuleState;
 | 
			
		||||
        module.ViewPermissions = viewpermissions;
 | 
			
		||||
        module.EditPermissions = editpermissions;
 | 
			
		||||
        module.Permissions = UserSecurity.SetPermissions("View", viewpermissions) + UserSecurity.SetPermissions("Edit", editpermissions);
 | 
			
		||||
        await ModuleService.UpdateModuleAsync(module);
 | 
			
		||||
 | 
			
		||||
        PageModule pagemodule = await PageModuleService.GetPageModuleAsync(ModuleState.PageModuleId);
 | 
			
		||||
 | 
			
		||||
@ -1,15 +1,16 @@
 | 
			
		||||
@using Microsoft.AspNetCore.Components.Routing
 | 
			
		||||
@using Oqtane.Client.Modules.Controls
 | 
			
		||||
@using Oqtane.Models
 | 
			
		||||
@using Oqtane.Services
 | 
			
		||||
@using Oqtane.Modules
 | 
			
		||||
@using Oqtane.Shared
 | 
			
		||||
@using Oqtane.Security
 | 
			
		||||
@inherits ModuleBase
 | 
			
		||||
@inject IUriHelper UriHelper
 | 
			
		||||
@inject IPageService PageService
 | 
			
		||||
@inject IThemeService  ThemeService
 | 
			
		||||
 | 
			
		||||
@((MarkupString)message)
 | 
			
		||||
 | 
			
		||||
<ModuleMessage Message="@message" />
 | 
			
		||||
<table class="form-group">
 | 
			
		||||
    <tr>
 | 
			
		||||
        <td>
 | 
			
		||||
@ -144,7 +145,7 @@
 | 
			
		||||
        }
 | 
			
		||||
        catch (Exception ex)
 | 
			
		||||
        {
 | 
			
		||||
            message = "<div class=\"alert alert-danger\" role=\"alert\">" + ex.Message + "</div><br /><br />";
 | 
			
		||||
            message = ex.Message;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@ -180,8 +181,7 @@
 | 
			
		||||
            }
 | 
			
		||||
            System.Reflection.PropertyInfo property = type.GetProperty("Panes");
 | 
			
		||||
            page.Panes = (string)property.GetValue(Activator.CreateInstance(type), null);
 | 
			
		||||
            page.ViewPermissions = viewpermissions;
 | 
			
		||||
            page.EditPermissions = editpermissions;
 | 
			
		||||
            page.Permissions =  UserSecurity.SetPermissions("View", viewpermissions) + UserSecurity.SetPermissions("Edit", editpermissions);
 | 
			
		||||
            await PageService.AddPageAsync(page);
 | 
			
		||||
 | 
			
		||||
            PageState.Reload = Constants.ReloadSite;
 | 
			
		||||
@ -196,7 +196,7 @@
 | 
			
		||||
        }
 | 
			
		||||
        catch (Exception ex)
 | 
			
		||||
        {
 | 
			
		||||
            message = "<div class=\"alert alert-danger\" role=\"alert\">" + ex.Message + "</div><br /><br />";
 | 
			
		||||
            message = ex.Message;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -1,15 +1,16 @@
 | 
			
		||||
@using Microsoft.AspNetCore.Components.Routing
 | 
			
		||||
@using Oqtane.Client.Modules.Controls
 | 
			
		||||
@using Oqtane.Models
 | 
			
		||||
@using Oqtane.Services
 | 
			
		||||
@using Oqtane.Modules
 | 
			
		||||
@using Oqtane.Shared
 | 
			
		||||
@using Oqtane.Client.Modules.Controls
 | 
			
		||||
@using Oqtane.Security
 | 
			
		||||
@inherits ModuleBase
 | 
			
		||||
@inject IUriHelper UriHelper
 | 
			
		||||
@inject IPageService PageService
 | 
			
		||||
@inject IThemeService  ThemeService
 | 
			
		||||
 | 
			
		||||
@((MarkupString)message)
 | 
			
		||||
<ModuleMessage Message="@message" />
 | 
			
		||||
 | 
			
		||||
<table class="form-group">
 | 
			
		||||
    <tr>
 | 
			
		||||
@ -163,8 +164,8 @@
 | 
			
		||||
                themetype = page.ThemeType;
 | 
			
		||||
                layouttype = page.LayoutType;
 | 
			
		||||
                icon = page.Icon;
 | 
			
		||||
                viewpermissions = page.ViewPermissions;
 | 
			
		||||
                editpermissions = page.EditPermissions;
 | 
			
		||||
                viewpermissions = UserSecurity.GetPermissions("View", page.Permissions);
 | 
			
		||||
                editpermissions = UserSecurity.GetPermissions("Edit", page.Permissions);
 | 
			
		||||
                createdby = page.CreatedBy;
 | 
			
		||||
                createdon = page.CreatedOn;
 | 
			
		||||
                modifiedby = page.ModifiedBy;
 | 
			
		||||
@ -173,7 +174,7 @@
 | 
			
		||||
        }
 | 
			
		||||
        catch (Exception ex)
 | 
			
		||||
        {
 | 
			
		||||
            message = "<div class=\"alert alert-danger\" role=\"alert\">" + ex.Message + "</div><br /><br />";
 | 
			
		||||
            message = ex.Message;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@ -194,7 +195,7 @@
 | 
			
		||||
        }
 | 
			
		||||
        catch (Exception ex)
 | 
			
		||||
        {
 | 
			
		||||
            message = "<div class=\"alert alert-danger\" role=\"alert\">" + ex.Message + "</div><br /><br />";
 | 
			
		||||
            message = ex.Message;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -1,15 +1,16 @@
 | 
			
		||||
@using Microsoft.AspNetCore.Components.Routing
 | 
			
		||||
@using Oqtane.Client.Modules.Controls
 | 
			
		||||
@using Oqtane.Models
 | 
			
		||||
@using Oqtane.Services
 | 
			
		||||
@using Oqtane.Modules
 | 
			
		||||
@using Oqtane.Shared
 | 
			
		||||
@using Oqtane.Client.Modules.Controls
 | 
			
		||||
@using Oqtane.Security
 | 
			
		||||
@inherits ModuleBase
 | 
			
		||||
@inject IUriHelper UriHelper
 | 
			
		||||
@inject IPageService PageService
 | 
			
		||||
@inject IThemeService  ThemeService
 | 
			
		||||
 | 
			
		||||
@((MarkupString)message)
 | 
			
		||||
<ModuleMessage Message="@message" />
 | 
			
		||||
 | 
			
		||||
<table class="form-group">
 | 
			
		||||
    <tr>
 | 
			
		||||
@ -170,8 +171,8 @@
 | 
			
		||||
                themetype = page.ThemeType;
 | 
			
		||||
                layouttype = page.LayoutType;
 | 
			
		||||
                icon = page.Icon;
 | 
			
		||||
                viewpermissions = page.ViewPermissions;
 | 
			
		||||
                editpermissions = page.EditPermissions;
 | 
			
		||||
                viewpermissions = UserSecurity.GetPermissions("View", page.Permissions);
 | 
			
		||||
                editpermissions = UserSecurity.GetPermissions("Edit", page.Permissions);
 | 
			
		||||
                createdby = page.CreatedBy;
 | 
			
		||||
                createdon = page.CreatedOn;
 | 
			
		||||
                modifiedby = page.ModifiedBy;
 | 
			
		||||
@ -180,7 +181,7 @@
 | 
			
		||||
        }
 | 
			
		||||
        catch (Exception ex)
 | 
			
		||||
        {
 | 
			
		||||
            message = "<div class=\"alert alert-danger\" role=\"alert\">" + ex.Message + "</div><br /><br />";
 | 
			
		||||
            message = ex.Message;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@ -216,8 +217,7 @@
 | 
			
		||||
            }
 | 
			
		||||
            System.Reflection.PropertyInfo property = type.GetProperty("Panes");
 | 
			
		||||
            page.Panes = (string)property.GetValue(Activator.CreateInstance(type), null);
 | 
			
		||||
            page.ViewPermissions = viewpermissions;
 | 
			
		||||
            page.EditPermissions = editpermissions;
 | 
			
		||||
            page.Permissions = UserSecurity.SetPermissions("View", viewpermissions) + UserSecurity.SetPermissions("Edit", editpermissions);
 | 
			
		||||
            await PageService.UpdatePageAsync(page);
 | 
			
		||||
 | 
			
		||||
            PageState.Reload = Constants.ReloadSite;
 | 
			
		||||
@ -232,7 +232,7 @@
 | 
			
		||||
        }
 | 
			
		||||
        catch (Exception ex)
 | 
			
		||||
        {
 | 
			
		||||
            message = "<div class=\"alert alert-danger\" role=\"alert\">" + ex.Message + "</div><br /><br />";
 | 
			
		||||
            message = ex.Message;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -1,7 +1,7 @@
 | 
			
		||||
@using Oqtane.Services
 | 
			
		||||
@using Oqtane.Client.Modules.Controls
 | 
			
		||||
@using Oqtane.Services
 | 
			
		||||
@using Oqtane.Models
 | 
			
		||||
@using Oqtane.Modules
 | 
			
		||||
@using Oqtane.Client.Modules.Controls
 | 
			
		||||
@inherits ModuleBase
 | 
			
		||||
@inject IPageService PageService
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -9,7 +9,7 @@
 | 
			
		||||
<div class="container">
 | 
			
		||||
    <div class="form-group">
 | 
			
		||||
        <label for="Username" class="control-label">Email: </label>
 | 
			
		||||
        <input type="text" name="Username" class="form-control" placeholder="Username" @bind="@Username" />
 | 
			
		||||
        <input type="text" name="Username" class="form-control" placeholder="Username" @bind="@Email" />
 | 
			
		||||
    </div>
 | 
			
		||||
    <div class="form-group">
 | 
			
		||||
        <label for="Password" class="control-label">Password: </label>
 | 
			
		||||
@ -22,17 +22,17 @@
 | 
			
		||||
@code {
 | 
			
		||||
    public override SecurityAccessLevel SecurityAccessLevel { get { return SecurityAccessLevel.Anonymous; } }
 | 
			
		||||
 | 
			
		||||
    public string Username { get; set; } = "";
 | 
			
		||||
    public string Email { get; set; } = "";
 | 
			
		||||
    public string Password { get; set; } = "";
 | 
			
		||||
 | 
			
		||||
    private async Task RegisterUser()
 | 
			
		||||
    {
 | 
			
		||||
        User user = new User();
 | 
			
		||||
        user.SiteId = PageState.Site.SiteId;
 | 
			
		||||
        user.Username = Username;
 | 
			
		||||
        user.DisplayName = Username;
 | 
			
		||||
        user.Roles = "Administrators;";
 | 
			
		||||
        user.IsSuperUser = false;
 | 
			
		||||
        user.Username = Email;
 | 
			
		||||
        user.DisplayName = Email;
 | 
			
		||||
        user.Email = Email;
 | 
			
		||||
        user.IsHost = false;
 | 
			
		||||
        user.Password = Password;
 | 
			
		||||
        await UserService.AddUserAsync(user);
 | 
			
		||||
        UriHelper.NavigateTo("");
 | 
			
		||||
 | 
			
		||||
@ -2,6 +2,8 @@
 | 
			
		||||
@using Oqtane.Models
 | 
			
		||||
@using Oqtane.Services
 | 
			
		||||
@using Oqtane.Modules
 | 
			
		||||
@using Oqtane.Shared
 | 
			
		||||
@using Oqtane.Security
 | 
			
		||||
@inherits ModuleBase
 | 
			
		||||
@inject IUriHelper UriHelper
 | 
			
		||||
@inject ITenantService TenantService
 | 
			
		||||
@ -102,8 +104,7 @@ else
 | 
			
		||||
        Type type = Type.GetType(p.ThemeType);
 | 
			
		||||
        System.Reflection.PropertyInfo property = type.GetProperty("Panes");
 | 
			
		||||
        p.Panes = (string)property.GetValue(Activator.CreateInstance(type), null);
 | 
			
		||||
        p.ViewPermissions = "All Users";
 | 
			
		||||
        p.EditPermissions = "Administrators";
 | 
			
		||||
        p.Permissions = UserSecurity.SetPermissions("View", Constants.AllUsersRole) + UserSecurity.SetPermissions("Edit", Constants.AdminRole);
 | 
			
		||||
        await PageService.AddPageAsync(p);
 | 
			
		||||
 | 
			
		||||
        UriHelper.NavigateTo(url, true);
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user