public async Task <JsonWebToken> CreateAccessTokenAsync(string token) { var refreshToken = await _refreshTokenRepository.GetAsync(token); if (refreshToken == null) { throw new VirtualMarketException(Codes.RefreshTokenNotFound, "Refresh token was not found."); } if (refreshToken.Revoked) { throw new VirtualMarketException(Codes.RefreshTokenAlreadyRevoked, $"Refresh token: '{refreshToken.Id}' was revoked."); } var user = await _userRepository.GetAsync(refreshToken.UserId); if (user == null) { throw new VirtualMarketException(Codes.UserNotFound, $"User: '******' was not found."); } var claims = await _claimsProvider.GetAsync(user.Id); var jwt = _jwtHandler.CreateToken(user.Id.ToString("N"), user.Role, claims); jwt.RefreshToken = refreshToken.Token; await _busPublisher.PublishAsync(new AccessTokenRefreshed(user.Id), CorrelationContext.Empty); return(jwt); }
public async Task <JsonWebToken> SignInAsync(string email, string password) { var identity = await _identityRepository.FirstOrDefaultAsync(x => x.Email == email); if (identity == null || !identity.ValidatePassword(password, _passwordHasher)) { throw new AdsboardException(Codes.InvalidCredentials, "Invalid credentials."); } var refreshToken = new RefreshToken(identity, _passwordHasher); var claims = await _claimsProvider.GetAsync(identity.Id); var jwt = _jwtHandler.CreateToken(identity.Id.ToString("N"), identity.Role, claims); jwt.RefreshToken = refreshToken.Token; jwt.Email = identity.Email; await _refreshTokenRepository.AddAsync(refreshToken); var savingResult = await _dbContext.SaveChangesAsync(); if (savingResult == 0) { throw new AdsboardException(Codes.SavingError, $"An error occured during saving data."); } return(jwt); }
public async Task <JsonWebToken> CreateAccessTokenAsync(string token) { var refreshToken = await _refreshTokenRepository.FirstOrDefaultAsync(x => x.Token == token); if (refreshToken == null) { throw new AdsboardException(Codes.RefreshTokenNotFound, "Refresh token was not found."); } if (refreshToken.Revoked) { throw new AdsboardException(Codes.RefreshTokenAlreadyRevoked, $"Refresh token: '{refreshToken.Id}' was revoked."); } var identity = await _identityRepository.FirstOrDefaultAsync(x => x.Id == refreshToken.IdentityId); if (identity == null) { throw new AdsboardException(Codes.IdentityNotFound, $"identity: '{refreshToken.IdentityId}' was not found."); } var claims = await _claimsProvider.GetAsync(identity.Id); var jwt = _jwtHandler.CreateToken(identity.Id.ToString("N"), identity.Role, claims); jwt.RefreshToken = refreshToken.Token; // await _busPublisher.PublishAsync(new AccessTokenRefreshed(identity.Id), CorrelationContext.Empty); return(jwt); }
public async Task <JsonWebToken> CreateAccessTokenAsync(string refreshToken) { var rToken = await _refreshTokenRepository.GetAsync(rt => rt.Token == refreshToken); if (rToken == null) { throw new JppcException(Codes.RefreshTokenNotFound, "Refresh token was not found."); } if (rToken.Revoked) { throw new JppcException(Codes.RefreshTokenAlreadyRevoked, $"Refresh token : '{refreshToken}' was revoked."); } var user = await _userRepository.GetAsync(rToken.UserId); if (user == null) { throw new JppcException(Codes.UserNotFound, $"User: '******' was not found."); } var claims = await _claimsProvider.GetAsync(user.Id); var jwt = _jwtHandler.CreateToken(user.Id.ToString("N"), claims); jwt.RefreshToken = rToken.Token; return(jwt); }
public async Task <JsonWebToken> CreateAccessTokenAsync(string token) { var refreshToken = await _refreshTokenRepository.GetAsync(token); if (refreshToken is null) { throw new ServiceException(ExceptionCode.RefreshTokenNotFound, "Refresh token was not found."); } if (refreshToken.Revoked) { throw new ServiceException(ExceptionCode.RefreshTokenAlreadyRevoked, "Refresh token: '{refreshToken.Id}' was revoked."); } var user = await _userRepository.GetAsync(refreshToken.UserId); if (user is null) { throw new ServiceException(ExceptionCode.UserNotExists, $"User: '******' was not found."); } var claims = await _claimsProvider.GetAsync(user.Id); var jwt = _jwtHandler.CreateToken(user.Id.ToString("N"), user.Role, claims); jwt.RefreshToken = refreshToken.Token; return(jwt); }
public async Task <JsonWebToken> CreateAccessTokenAsync(string token) { var refreshToken = await _refreshTokenRepository.GetAsync(token); if (refreshToken == null) { throw new ToolBoxException(Codes.RefreshTokenNotFound, "Refresh token was not found."); } //var user = await _userRepository.GetAsync(refreshToken.UserId); if (refreshToken.User == null || refreshToken.UserId == null || refreshToken.UserId == Guid.Empty) { throw new ToolBoxException(Codes.UserNotFound, $"User: '******' was not found."); } var claims = await _claimsProvider.GetAsync(refreshToken.User); var jwt = _jwtHandler.CreateToken(refreshToken.UserId.ToString(), null, claims); jwt.RefreshToken = refreshToken.Token; await _busClient.PublishAsync(new AccessTokenRefreshed(Guid.NewGuid(), refreshToken.UserId)); // await _busClient.PublishAsync(new AccessTokenRefreshed(user.Id), CorrelationContext.Empty); return(jwt); }
public async Task <JsonWebToken> SignInAsync(string email, string password) { var user = await _userRepository.GetAsync(email); if (user == null || !user.ValidatePassword(password, _passwordHasher)) { throw new ToolBoxException(Codes.InvalidCredentials, "Invalid credentials."); } var refreshToken = new RefreshToken(); refreshToken.SetToken(user, _passwordHasher); var claims = await _claimsProvider.GetAsync(user); var jwt = _jwtHandler.CreateToken(user.Id.ToString(), null, claims); jwt.RefreshToken = refreshToken.Token; if (user.RefreshToken != null) { user.RefreshToken.Token = refreshToken.Token; user.RefreshToken.SetUpdatedDate(); } else { await _refreshTokenRepository.AddAsync(refreshToken); user.RefreshToken = refreshToken; user.RefreshTokenId = refreshToken.Id; } await _userRepository.UpdateAsync(user); return(jwt); }
public async Task <JsonWebToken> SignInAsync(string email, string password) { var user = await _userRepository.GetAsync(email); if (user == null || !user.ValidatePassword(password, _passwordHasher)) { throw new DSNException(Codes.InvalidCredentials, "Invalid credentials"); } var refreshToken = new RefreshToken(user, _passwordHasher); var claims = await _claimsProvider.GetAsync(user.Id); var jwt = _jwtHandler.CreateToken(user.Id.ToString("N"), user.Role, claims); jwt.RefreshToken = refreshToken.Token; //Add refresh token after return(jwt); }
public async Task <JsonWebToken> SignInAsync(string email, string password) { var user = await _userRepository.GetAsync(email); if (user == null || !user.ValidatePassword(password, _passwordHasher)) { throw new MicroSException(Codes.InvalidCredentials, "Invalid credentials."); } var refreshToken = new dto.RefreshToken(user, _passwordHasher); var claims = await _claimsProvider.GetAsync(user.Id); var jwt = _jwtHandler.CreateToken(user.Id.ToString("N"), user.Role, claims); jwt.RefreshToken = refreshToken.Token; await _refreshTokenRepository.AddAsync(refreshToken); await _busPublisher.PublishAsync(new SignedIn(user.Id), CorrelationContext.Empty); return(jwt); }
public async Task <JsonWebToken> SignInAsync(string username, string password) { var user = await _userRepository.GetAsync(username); if (user == null || !user.VerifyHashedPassword(password, _passwordHasher)) { throw new S3Exception(ExceptionCodes.InvalidCredentials, "Invalid credentials."); } var refreshToken = new RefreshToken(user, _passwordHasher); var claims = await _claimsProvider.GetAsync(user); //var claims = await _claimsProvider.GetAsync(user.Id); var jwt = _jwtHandler.CreateToken(user.Id.ToString("N"), user.Roles, claims); jwt.RefreshToken = refreshToken.Token; await _refreshTokenRepository.AddAsync(refreshToken); return(jwt); }
public async Task <JsonWebToken> Handle(SignIn request, CancellationToken cancellationToken) { var email = request.Email; var password = request.Password; var user = await _userRepository.GetAsync(email); if (user == null || !user.ValidatePassword(password, _passwordHasher)) { throw new IdentityException(Codes.InvalidCredentials, "Invalid credentials."); } var refreshToken = new RefreshToken(user, _passwordHasher); var claims = await _claimsProvider.GetAsync(user.Id); var jwt = _jwtService.CreateToken(user.Id.ToString("N"), user.Role, claims); jwt.RefreshToken = refreshToken.Token; await _refreshTokenRepository.AddAndSaveAsync(refreshToken); return(jwt); }