Import C# code
Aimeast authored at 2013-12-27 16:59:37
913.00 B
GitCandy
using GitCandy.Controllers;
using System.Web.Mvc;

namespace GitCandy.Filters
{
    public class TeamOrSystemAdministratorAttribute : SmartAuthorizeAttribute
    {
        public override void OnAuthorization(AuthorizationContext filterContext)
        {
            base.OnAuthorization(filterContext);

            var controller = filterContext.Controller as CandyControllerBase;
            if (controller != null && controller.Token != null)
            {
                if (controller.Token.IsSystemAdministrator)
                    return;

                var field = controller.ValueProvider.GetValue("name");
                var isAdmin = field != null && controller.MembershipService.IsTeamAdministrator(field.AttemptedValue, controller.Token.Username);
                if (isAdmin)
                    return;
            }

            HandleUnauthorizedRequest(filterContext);
        }
    }
}