public async Task <AuthenticationResult> Login(string login, string password) { var user = await userRepository.GetUser(login); if (user == null) { throw new InvalidCredentialsException("Invalid credentials"); } string salt = user.Salt; string hash = encrypter.GetHash(password, salt); if (user.Password != hash) { throw new InvalidCredentialsException("Invalid credentials"); } var loggedUser = await loggedUserRepository.GetLoggedUser(user.UserId); if (loggedUser != null) { throw new AlreadyExistException($"User {user.Login} is already logged on"); } var authResult = jwtService.CreateToken(user.Login, user.Role.ToString()); var refreshToken = new LoggedUser { RefreshToken = Guid.NewGuid(), JwtId = authResult.JwtId, CreationDate = DateTime.Now, ExpiryDate = DateTime.Now.AddDays(7), UserId = user.UserId }; await loggedUserRepository.AddLoggedUser(refreshToken); await loggedUserRepository.SaveChanges(); authResult.RefreshToken = refreshToken.RefreshToken; return(authResult); }
public ActionResult <BaseResult <User> > GetLogged() { var user = _loggedUserRepository.GetLoggedUser(); return(Ok(user)); }