//-------------------------------- Not use zone ---------------------------------------------------------------- private OAuthToken GetTokenByRefresh(RefreshToken refreshToken) //! if I will use this, I can't update claims data { _logger.InitMethod(nameof(GetTokenByRefresh), $"[RefreshToken.UserId] {refreshToken.UserId}"); var claims = _tokenHandler.GetClaimsFromToken(refreshToken.Access); _logger.LogInformation("user claims: " + claims.ToJson()); var token = _tokenHandler.Create(_configuration["Jwt:Key"], int.Parse(_configuration["Jwt:LifeTimeInMinutes"]), claims); _logger.LogInformation($"token successfully created | rTokenLength: {token.RefreshToken.Length} | aTokenLength: {token.AccessToken.Length}"); return(token); }
public override Task <ProviderCultureResult> DetermineProviderCultureResult(HttpContext httpContext) { if (httpContext == null) { throw new ArgumentNullException(nameof(httpContext)); } _tokenHandler = GetService <ITokenHandler>(httpContext); //? haven't better way? _logger = GetService <ILogger <UserPreferenceRequestCultureProvider> >(httpContext); //? haven't better way? _logger.LogInformation("init searching language preference"); var headers = httpContext.Request.GetTypedHeaders().Headers[HeaderName].AsEnumerable()?.ToList(); if (headers == null || headers.Count == 0 || !headers[0].Contains(TokenType, StringComparison.InvariantCultureIgnoreCase)) { _logger.LogInformation("no authorization: stop searching language preference"); return(NullProviderCultureResult); } var accessToken = headers[0].Replace(TokenType, "").Trim(); var claims = _tokenHandler.GetClaimsFromToken(accessToken); if (claims.IsNullOrEmpty()) { _logger.LogWarning("claims not found"); return(NullProviderCultureResult); } var cultureName = claims.FirstOrDefault(c => c.Type == UserPreferenceParamName)?.Value; if (cultureName.IsNullOrWhiteSpace()) { _logger.LogInformation("claims haven't language preference"); return(NullProviderCultureResult); } _logger.LogInformation($"language preference found: {cultureName}"); return(Task.FromResult(new ProviderCultureResult(cultureName))); }