public async Task <IActionResult> LoginAsync([FromBody] LoginDTO model) { UserManagerResponse response; if (!ModelState.IsValid) { response = CreateResponse.Create("Some model properties are not valid", false, null); return(BadRequest(response)); } var user = await _userManager.FindByEmailAsync(model.Email); if (user == null) { response = CreateResponse.Create("User does not exist", false, null); return(BadRequest(response)); } var signin = await _signInManager.PasswordSignInAsync(model.Email, model.Password, isPersistent : model.RememberMe, false); if (signin.Succeeded) { var token = JwtTokenConfig.GetToken(user, _configuration); response = CreateResponse.Create(token, true, null); return(Ok(response)); } response = CreateResponse.Create("Invalid credentials!", false, null); return(Unauthorized(response)); }
public async Task <IActionResult> Login(UserToLoginDTO model) { if (ModelState.IsValid) { //get user by email var user = _userManager.Users.FirstOrDefault(x => x.Email == model.Email); //check if user exist if (user == null) { return(BadRequest("User does not exist")); } var result = await _signInManager.PasswordSignInAsync(model.Email, model.Password, false, false); if (result.Succeeded) { var getToken = JwtTokenConfig.GetToken(user, _config); return(Ok(getToken)); } return(Unauthorized("Invalid credentials")); } return(BadRequest(model)); }
public async Task <Response <string> > Login(string username, string password) { var response = new Response <string>(); try { var user = await _ctx.Users.FirstOrDefaultAsync(c => c.Username.ToLower() == username.ToLower()); if (user == null) { response.Message = "User not found."; response.Success = false; return(response); } var passwordCheck = VerifyPasswordHash(password, user.PasswordHash, user.PasswordSalt); if (!passwordCheck) { response.Success = false; response.Message = "Invalid username or password"; return(response); } response.Data = JwtTokenConfig.GetToken(user, _config); response.Message = "Logged in successfully"; } catch (Exception ex) { response.Message = ex.Message; return(response); } return(response); }
/// <summary> /// /// </summary> /// <param name="userToLoginDto"></param> /// <returns></returns> public async Task <string> LoginUser(UserToLoginDto userToLoginDto) { var user = await GetUserByEmail(userToLoginDto.Email); var roles = await GetUserRoles(user); await _signManager.SignInAsync(user, false); return(JwtTokenConfig.GetToken(user, _config, roles)); }
public async Task <IActionResult> Login([FromBody] LoginDto model) { try { // get device ip var currentIp = Utility.getMac(); Console.WriteLine(currentIp); //var isSignedIn = _signInManager.IsSignedIn(User); var user = _userManager.Users.FirstOrDefault(x => x.Email == model.Email); if (user == null) { return(BadRequest("User does not exist")); } var activityResponse = await _logActivityRepository.GetLogActivity(user.Id); if (activityResponse == null) { return(BadRequest("No registered user")); } if (activityResponse.DeviceIp == currentIp && activityResponse.IsActive) { return(BadRequest("Already Signed In")); } // if the user has previously logged in on current device but logged out if (activityResponse.DeviceIp == currentIp && !activityResponse.IsActive) { activityResponse.LoginTime = DateTime.Now; activityResponse.IsActive = true; await _logActivityRepository.UpdateLogActivity(activityResponse); } else { return(BadRequest("You are already logged in on another device. Do you want to logout?")); } var result = await _signInManager.PasswordSignInAsync(model.Email, model.Password, false, false); if (result.Succeeded) { var getToken = JwtTokenConfig.GetToken(user, _config); return(Ok(new { message = "Logged in successfully", token = getToken })); } return(Unauthorized("Incorrect username or Password")); } catch (Exception e) { _logger.LogError(e.Message); return(BadRequest("An error occured")); } }