public async Task <TokenDto> SignIn(SignInDto signInDto) { var user = await userRepository.FindByLoginAsync(signInDto.Email); TokenDto tokenDto = new TokenDto(); if (user == null || user.StatusOfVerification == "Processing" || user.StatusOfVerification == "Blocked") { tokenDto.Code = 401; return(tokenDto); } if (signInDto.Email != user.Email || !VerifyPassword(signInDto.Password, user.HashPassword, user.Salt)) { tokenDto.Code = 401; return(tokenDto); } //Return two tokens Access, Refresh tokenDto.Name = user.FirstName; tokenDto.Code = 200; tokenDto.AccessToken = token.GenerateToken(user); tokenDto.RefreshToken = token.RefreshGenerateToken(); //Save To database Refresh token RefreshTokens refreshToken = new RefreshTokens(tokenDto.RefreshToken, user.Id, true); refreshRepository.Create(refreshToken); await refreshRepository.SaveChangesAsync(); return(tokenDto); }
/// <summary> /// Sign in with correct email and input password /// </summary> /// <param name="userLoginDto"></param> /// <returns>return TokenDto with new Access Token and Refresh Token /// if user null or email or password not correct /// return tokenDto with code 401</returns> public async Task <TokenDto> SignInAsync(UserLoginDto userLoginDto) { var user = await userRepository.FindByLoginAsync(userLoginDto.Email); TokenDto tokenDto = new TokenDto(); if (user == null) { tokenDto.Code = 401; return(tokenDto); } if (userLoginDto.Email != user.Email || !VerifyPassword(userLoginDto.Password, user.HashPassword, user.Salt)) { tokenDto.Code = 401; return(tokenDto); } //Return two tokens Access, Refresh tokenDto.Code = 200; tokenDto.AccessToken = token.GenerateToken(user); tokenDto.RefreshToken = token.RefreshGenerateToken(); //Save To database Refresh token RefreshToken refreshToken = new RefreshToken(tokenDto.RefreshToken, user.UserId, true); refreshRepository.Create(refreshToken); await refreshRepository.SaveChangesAsync(); return(tokenDto); }
/// <summary> /// Save Refresh token to database /// </summary> /// <param name="id"></param> /// <param name="refreshtoken"></param> /// <param name="isvalid"></param> /// <returns>return model TokenDto</returns> public async Task <TokenDto> SaveRefreshTokenAsync(int id, string refreshtoken, bool isvalid) { RefreshTokens refresh = new RefreshTokens(refreshtoken, id, isvalid); refreshRepository.Create(refresh); await refreshRepository.SaveChangesAsync(); return(new TokenDto() { RefreshToken = refresh.Refresh }); }