BootstrapAdmin/Bootstrap.Admin/App_Start/BAAPIAuthorizaAttribute.cs

32 lines
1.1 KiB
C#

using Bootstrap.DataAccess;
using Longbow.Security.Principal;
using System.Linq;
using System.Security.Principal;
using System.Web.Http;
using System.Web.Http.Controllers;
namespace Bootstrap.Admin
{
/// <summary>
///
/// </summary>
public class BAAPIAuthorizaAttribute : AuthorizeAttribute
{
/// <summary>
///
/// </summary>
/// <param name="actionContext"></param>
/// <returns></returns>
protected override bool IsAuthorized(HttpActionContext actionContext)
{
IPrincipal principal = actionContext.ControllerContext.RequestContext.Principal;
if (principal.Identity.IsAuthenticated)
{
if (LgbPrincipal.IsAdmin(principal.Identity.Name)) return true;
var roles = RoleHelper.RetrieveRolesByUserName(principal.Identity.Name).Select(r => r.RoleName);
actionContext.ControllerContext.RequestContext.Principal = new LgbPrincipal(principal.Identity, roles);
}
return base.IsAuthorized(actionContext);
}
}
}