public ResgridPrincipleV3(V3AuthToken authToken)
        {
            AuthToken = authToken;
            IsSystem  = false;

            _identity = new GenericIdentity(authToken.UserName, "Basic");
        }
        public static async Task <bool> AuthAndSetPrinciple(ICacheProvider cacheProvider, IDepartmentsRepository departmentsRepository, string authTokenString, HttpContext context, bool v3)
        {
            if (string.IsNullOrWhiteSpace(authTokenString))
            {
                return(false);
            }

            var encodedUserPass = authTokenString.Trim();

            if (v3)
            {
                var authToken = V3AuthToken.Decode(encodedUserPass);

                if (authToken != null)
                {
                    string userId;

                    if (Config.SecurityConfig.SystemLoginCredentials.ContainsKey(authToken.UserName))
                    {
                        if (Config.SecurityConfig.SystemLoginCredentials[authToken.UserName] != encodedUserPass)
                        {
                            return(false);
                        }

                        authToken.UserId = authToken.UserName;
                    }
                    else
                    {
                        var result = await ValidateUserAndDepartmentByUser(cacheProvider, departmentsRepository, authToken.UserName, authToken.DepartmentId, null);

                        if (!result.IsValid)
                        {
                            return(false);
                        }

                        authToken.UserId = result.UserId;
                    }

                    var principal = new ResgridPrincipleV3(authToken);
                    Thread.CurrentPrincipal = principal;
                    if (context != null)
                    {
                        context.User = new System.Security.Claims.ClaimsPrincipal(principal);
                    }
                }
            }

            return(true);
        }
        public static AuthenticationHeaderValue GetAuthHeaderValue(V3AuthToken authToken)
        {
            var authString = Create(authToken.UserName, authToken.DepartmentId);

            return(new AuthenticationHeaderValue("Basic", authString));
        }