54 lines
1.8 KiB
C#
54 lines
1.8 KiB
C#
using gehGassi.Web.Auth.Filters;
|
|
using gehGassi.Web.Auth.Requirements;
|
|
using Microsoft.AspNetCore.Mvc;
|
|
|
|
namespace gehGassi.Web.Auth.Attributes
|
|
{
|
|
/// <summary>
|
|
/// Attribut zur Prüfung ob ein Benutzer Zugriff auf einen Kunden hat
|
|
/// </summary>
|
|
public class CustomerAuthorizeAttribute : TypeFilterAttribute
|
|
{
|
|
private string _parameterName;
|
|
private bool _allowAdmin;
|
|
|
|
/// <summary>
|
|
/// Parameter der für die Prüfung herangezogen werden soll
|
|
/// </summary>
|
|
public string ParameterName
|
|
{
|
|
get => _parameterName;
|
|
set
|
|
{
|
|
_parameterName = value;
|
|
Arguments = new object[] { new CustomerRequirement(_parameterName, _allowAdmin) };
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Soll ein Administrator Zugriff haben auch wenn er nicht den Mandanten zugeordnet hat?
|
|
/// </summary>
|
|
public bool AllowAdmin
|
|
{
|
|
get => _allowAdmin;
|
|
set
|
|
{
|
|
_allowAdmin = value;
|
|
Arguments = new object[] { new CustomerRequirement(_parameterName, _allowAdmin) };
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Erstellt eine Instanz
|
|
/// </summary>
|
|
/// <param name="parameterName">Parameter der für die Prüfung herangezogen werden soll</param>
|
|
/// <param name="allowAdmin">Soll ein Administrator Zugriff haben auch wenn er nicht den Mandanten zugeordnet hat?</param>
|
|
public CustomerAuthorizeAttribute(string parameterName, bool allowAdmin = false) : base(typeof(AuthorizeCustomerPolicyFilter))
|
|
{
|
|
_parameterName = parameterName;
|
|
_allowAdmin = allowAdmin;
|
|
Arguments = new object[] { new CustomerRequirement(parameterName, allowAdmin) };
|
|
}
|
|
}
|
|
}
|