public async Task <IActionResult> Refresh([FromBody] vmRefreshTokenRequest refreshTokenRequest) { var refreshTokenResponse = new SingleResponse <vmRefreshTokenResponse>(); try { #region Get Principal Info from Token var principal = _tokenService.GetPrincipalFromExpiredToken(refreshTokenRequest.JwtToken, Encoding.UTF8.GetBytes(_configuration["JwtIssuerOptions:ServerSigningPassword"])); var userEmail = principal.Identity.Name; //this is mapped to the Name claim by default #endregion #region Get Claims Info from token principal //var name = principal.Claims.Where(c => c.Type == ClaimTypes.Name) // .Select(c => c.Value).SingleOrDefault(); //var role = principal.Claims.Where(c => c.Type == ClaimTypes.Role) // .Select(c => c.Value).SingleOrDefault(); //var email = principal.Claims.Where(c => c.Type == ClaimTypes.Email) // .Select(c => c.Value).SingleOrDefault(); #endregion var existedUserResponse = await _commonService.GetSingleUserForUpdateAsync(userEmail); if (existedUserResponse.Model == null || existedUserResponse.Model.RefreshToken != refreshTokenRequest.RefreshToken) { throw new FamilyHubException(string.Format(CommonMessageDisplays.UserNotFoundMessage, userEmail)); } refreshTokenResponse.Model = await _tokenService.AssignRefreshTokenAsync(existedUserResponse.Model); refreshTokenResponse.Message = ResponseMessageDisplay.Success; } catch (Exception ex) { refreshTokenResponse.SetError(ex); } return(refreshTokenResponse.ToHttpResponse()); }