29 lines
670 B
C#
29 lines
670 B
C#
using Microsoft.AspNetCore.Mvc;
|
|
using Microsoft.AspNetCore.Mvc.Filters;
|
|
using SoftwareContracts.ViewModels;
|
|
using SoftwareDateModels.Enums;
|
|
|
|
namespace SoftwareRestApi
|
|
{
|
|
public class RoleFilterAttribute : Attribute, IActionFilter
|
|
{
|
|
private readonly UserRole _requiredRole;
|
|
|
|
public RoleFilterAttribute(UserRole role)
|
|
{
|
|
_requiredRole = role;
|
|
}
|
|
|
|
public void OnActionExecuting(ActionExecutingContext context)
|
|
{
|
|
var user = context.HttpContext.Items["User"] as UserViewModel;
|
|
if (user == null || user.Role != _requiredRole)
|
|
{
|
|
context.Result = new ForbidResult();
|
|
}
|
|
}
|
|
|
|
public void OnActionExecuted(ActionExecutedContext context) { }
|
|
}
|
|
}
|