Exemple #1
0
        public async Task InvokeAsync(HttpContext context, IConfiguration _configuration, IUserManager _userManager, ISessionManager _sessionManager)
        {
            IHeaderDictionary headers    = context.Request.Headers;
            string            authHeader = headers["Authorization"];

            if (authHeader != null && authHeader != string.Empty)
            {
                string[] tokenBreak = authHeader.Split(" ");

                if (tokenBreak.Length == 2)
                {
                    string AuthToken = tokenBreak[1];
                    string JwtSecret = _configuration.GetValue <string>("JwtSecret");
                    string UUID      = JWT.ValidateJwtToken(AuthToken, JwtSecret);

                    if (UUID != null)
                    {
                        User user = _userManager.GetUser(UUID);

                        Session latestSession = _sessionManager.GetLatestSession(UUID);

                        if (user != null && latestSession.JWT == AuthToken && latestSession.UUID == UUID && latestSession.Verified)
                        {
                            _userManager.CurrentUser = user;
                        }
                    }
                }
            }

            await _next(context);
        }