/// <inheritdoc />
        protected override Task <AuthenticateResult> HandleAuthenticateAsync()
        {
            var authenticatedAttribute = new AuthenticatedAttribute();

            try
            {
                var user = _authService.Authenticate(Request, authenticatedAttribute);
                if (user == null)
                {
                    return(Task.FromResult(AuthenticateResult.Fail("Invalid user")));
                }

                var claims = new[]
                {
                    new Claim(ClaimTypes.Name, user.Name),
                    new Claim(
                        ClaimTypes.Role,
                        value: user.Policy.IsAdministrator?UserRoles.Administrator: UserRoles.User)
                };
                var identity  = new ClaimsIdentity(claims, Scheme.Name);
                var principal = new ClaimsPrincipal(identity);
                var ticket    = new AuthenticationTicket(principal, Scheme.Name);

                return(Task.FromResult(AuthenticateResult.Success(ticket)));
            }
            catch (SecurityException ex)
            {
                return(Task.FromResult(AuthenticateResult.Fail(ex)));
            }
        }
        public void AuthorizeAuthenticatedAttribute_AsAuthenticated()
        {
            var context = generateContext();

            context.HttpContext.Request.Headers["Authorization"] = "auth";

            var admin = new AuthenticatedAttribute();

            admin.OnActionExecuting(context);
        }