public string GetRole(HttpContext context)
        {
            Claim claim = ((ClaimsIdentity)context.User.Identity).FindFirst(CookieConstants.ROLE_CALIM_TYPE);

            if (claim == null && _ctfOptions.CtfChallengeOptions.MissingAuthentication)
            {
                IEnumerable <Claim> claims = _cookieService.GetClaims(context);

                claim = claims
                        .Where(x => x.Type == CookieConstants.ROLE_CALIM_TYPE)
                        .SingleOrDefault();
            }

            return(claim?.Value);
        }
        public virtual bool AuthorizeAdmin(AuthorizationFilterContext context)
        {
            bool isCookieValid = _cookieService.ValidateCookie(context.HttpContext);

            if (!isCookieValid)
            {
                return(false);
            }

            IEnumerable <Claim> claims = _cookieService.GetClaims(context.HttpContext);

            if (claims == null)
            {
                return(false);
            }

            Claim roleCalim = claims
                              .Where(x => x.Type == CookieConstants.ROLE_CALIM_TYPE)
                              .SingleOrDefault();

            if (roleCalim == null)
            {
                return(false);
            }

            if (roleCalim.Value != CookieConstants.ADMIN_ROLE_STRING)
            {
                return(false);
            }

            GenericPrincipal tmpUser = new GenericPrincipal(new ClaimsIdentity(claims), Array.Empty <string>());

            context.HttpContext.User = tmpUser;

            return(true);
        }