private async Task <RefreshToken> CreateInternalAsync(User user) { var tokenId = Guid.NewGuid(); var userClaims = user.ExtractUserClaims(); var jwtToken = CreateJwtToken(userClaims, tokenId); var jwtTokenStr = _jwtSecurityTokenHandler.WriteToken(jwtToken); var refreshToken = new RefreshToken(user.Id, jwtTokenStr); refreshToken = refreshToken.Bind(x => x.Id, tokenId); _refreshTokenRepository.Add(refreshToken); await _refreshTokenRepository.UnitOfWork.SaveChangesAndDispatchDomainEventsAsync(); return(refreshToken); }