gehgassi_backend/gehGassi.Web/Auth/Attributes/CustomerAuthorizeAttribute.cs

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) };
}
}
}