Tolitech.CleanArchitecture.Application.Authorization
1.0.0-alpha01
See the version list below for details.
dotnet add package Tolitech.CleanArchitecture.Application.Authorization --version 1.0.0-alpha01
NuGet\Install-Package Tolitech.CleanArchitecture.Application.Authorization -Version 1.0.0-alpha01
<PackageReference Include="Tolitech.CleanArchitecture.Application.Authorization" Version="1.0.0-alpha01" />
paket add Tolitech.CleanArchitecture.Application.Authorization --version 1.0.0-alpha01
#r "nuget: Tolitech.CleanArchitecture.Application.Authorization, 1.0.0-alpha01"
// Install Tolitech.CleanArchitecture.Application.Authorization as a Cake Addin #addin nuget:?package=Tolitech.CleanArchitecture.Application.Authorization&version=1.0.0-alpha01&prerelease // Install Tolitech.CleanArchitecture.Application.Authorization as a Cake Tool #tool nuget:?package=Tolitech.CleanArchitecture.Application.Authorization&version=1.0.0-alpha01&prerelease
Tolitech.CleanArchitecture.Application.Authorization
Overview
Tolitech.CleanArchitecture.Application.Authorization is a lightweight .NET library designed to facilitate the definition and retrieval of application permissions using marker interfaces and reflection. This library helps you manage permissions in a clean and organized manner by leveraging marker interfaces to identify classes that contain permission definitions.
Features
Marker Interface for Permissions: Use the IPermissionDefinitions interface to mark classes that define permissions.
Reflection-Based Retrieval: Retrieve all permission definitions from specified assemblies using reflection.
Easy Integration: Seamlessly integrate with your existing .NET applications.
Getting Started
Installation
You can install the package via NuGet:
dotnet add package Tolitech.CleanArchitecture.Application.Authorization
Usage
Define Permissions
Create classes that implement the IPermissionDefinitions interface to define your permissions. For example:
namespace MyApplication.Permissions
{
public class UserPermissions : IPermissionDefinitions
{
public const string ViewUsers = "Permissions.Users.View";
public const string EditUsers = "Permissions.Users.Edit";
}
public class AdminPermissions : IPermissionDefinitions
{
public const string ManageRoles = "Permissions.Admin.ManageRoles";
public const string ViewLogs = "Permissions.Admin.ViewLogs";
}
}
Retrieve Permissions
Use the PermissionDefinitions.GetAllPermissions method to retrieve all permissions defined in the specified assembly:
using System.Reflection;
using Tolitech.CleanArchitecture.Application.Authorization;
Assembly assembly = Assembly.GetExecutingAssembly();
ReadOnlyCollection<string> permissions = PermissionDefinitions.GetAllPermissions(assembly);
foreach (var permission in permissions)
{
Console.WriteLine(permission);
}
This will output:
Permissions.Users.View
Permissions.Users.Edit
Permissions.Admin.ManageRoles
Permissions.Admin.ViewLogs
Detailed Explanation
Marker Interface
The IPermissionDefinitions interface serves as a marker to identify classes that contain permission definitions. This makes it easy to locate and process permission-related classes within your application.
Reflection-Based Retrieval
The PermissionDefinitions.GetAllPermissions method uses reflection to find all classes that implement the IPermissionDefinitions interface within a given assembly. It then retrieves the values of all public static string fields within those classes, which are treated as permission names.
Benefits
- Organized Permission Management: Keeps your permission definitions organized and easily accessible.
- Reduced Hardcoding: Centralizes permission definitions, reducing the need to hardcode permission strings throughout your application.
- Scalability: Easily add new permissions by simply adding new classes or fields implementing the IPermissionDefinitions interface.
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
-
net8.0
- No dependencies.
NuGet packages (1)
Showing the top 1 NuGet packages that depend on Tolitech.CleanArchitecture.Application.Authorization:
Package | Downloads |
---|---|
Tolitech.CleanArchitecture.Infrastructure.Authorization
The library provides implementations for managing authorization logic. It includes classes and utilities for handling permissions, attribute-based authorization, and configuring authorization policies. |
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated |
---|---|---|
1.0.0-alpha02 | 83 | 7/4/2024 |
1.0.0-alpha01 | 56 | 6/28/2024 |