public async Task <IActionResult> Login(UserToLoginDTO userToLoginDTO) { var userFromRepo = await _repo.Login(userToLoginDTO.Username.ToLower(), userToLoginDTO.Password); if (userFromRepo == null) { return(Unauthorized()); } var claims = new[] { new Claim(ClaimTypes.NameIdentifier, userFromRepo.Id.ToString()), new Claim(ClaimTypes.Name, userFromRepo.UserName) }; var key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_cofig.GetSection("AppSettings:Token").Value)); var creds = new SigningCredentials(key, SecurityAlgorithms.HmacSha512Signature); var tokenDescriptor = new SecurityTokenDescriptor { Subject = new ClaimsIdentity(claims), Expires = DateTime.Now.AddDays(1), SigningCredentials = creds }; var tokenHandler = new JwtSecurityTokenHandler(); var token = tokenHandler.CreateToken(tokenDescriptor); return(Ok( new { token = tokenHandler.WriteToken(token) } )); }
public async Task <UserDTO> Login(UserToLoginDTO userToLogin) { try { userToLogin.Username = userToLogin.Username.ToLower(); var userFromDB = await _userRepo.GetFromUsernameAsync(userToLogin.Username); if (userFromDB == null) { return(null); } if (!VerifyPasswordHash(userToLogin.Password, userFromDB.PasswordHash, userFromDB.PasswordSalt)) { return(null); } userFromDB.LastActive = DateTime.Now; await _genericRepo.UpdateAsync(userFromDB); return(ConvertUser(userFromDB)); } catch { throw new Exception("UserService failed to login server"); } }
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 <IActionResult> DeleteUser(UserToLoginDTO user) { var userId = Int32.Parse(this.User.FindFirstValue(ClaimTypes.NameIdentifier)); await _userService.DeleteUser(userId, user.Password); return(StatusCode(200)); }
public async Task <IActionResult> LoginUser([FromBody] UserToLoginDTO userToLogin) { if (ModelState.IsValid) { var getUserByEmail = _userManager.Users.FirstOrDefault(user => user.Email == userToLogin.Email); var userPwd = await _userManager.CheckPasswordAsync(getUserByEmail, userToLogin.Password); if (userPwd) { //Establish the claims of the unique user var claims = new[] { new Claim(ClaimTypes.NameIdentifier, getUserByEmail.Id), new Claim(ClaimTypes.Name, getUserByEmail.FirstName) }; //Generate the token key var key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_configuration.GetSection("AppSettings:SecuredToken").Value)); //Generate the sign-in credentials var creds = new SigningCredentials(key, SecurityAlgorithms.HmacSha512Signature); //Create the security token descriptor (token descriptor outlines the shape of your token) var securityTokenDescriptor = new SecurityTokenDescriptor { Subject = new ClaimsIdentity(claims), Expires = DateTime.Now.AddDays(3), SigningCredentials = creds }; //Next, we create the token handler var tokenHandler = new JwtSecurityTokenHandler(); //Then, we create the token var token = tokenHandler.CreateToken(securityTokenDescriptor); //...and generate it var generatedToken = tokenHandler.WriteToken(token); var userToReturn = new LoggedInUserDetailsDTO { FirstName = getUserByEmail.FirstName, LastName = getUserByEmail.LastName, Email = getUserByEmail.Email, Department = getUserByEmail.Department, Token = generatedToken }; return(Ok(userToReturn)); } } return(BadRequest()); }
public async Task <IActionResult> Login([FromBody] UserToLoginDTO loginDTO) { var userFromRepo = await _repo.Login(loginDTO.Email.ToLower(), loginDTO.Password); if (userFromRepo == null || !userFromRepo.IsValid()) { return(Unauthorized()); } var token = this.GenerateToken(userFromRepo); var user = _mapper.Map <UserToListDTO>(userFromRepo); return(Ok(new { token, user })); }
public async Task <IActionResult> Login(UserToLoginDTO userToLoginDTO) { try { var userFromRepo = await repo.Login(userToLoginDTO.Username.ToLower(), userToLoginDTO.Password); if (userFromRepo == null) { //Unauthorized return(StatusCode(401, "Bad login")); } var claims = new[] { new Claim(ClaimTypes.NameIdentifier, userFromRepo.UserId.ToString()), new Claim(ClaimTypes.Name, userFromRepo.Username) //More claims here }; var key = new SymmetricSecurityKey(System.Text.Encoding.UTF8.GetBytes(config.GetSection("Appsettings:Token").Value)); var creds = new SigningCredentials(key, SecurityAlgorithms.HmacSha512Signature); var tokenDescriptor = new SecurityTokenDescriptor { Subject = new ClaimsIdentity(claims), Expires = DateTime.Now.AddDays(1), SigningCredentials = creds }; var tokenhandler = new JwtSecurityTokenHandler(); var token = tokenhandler.CreateToken(tokenDescriptor); //Ok return(StatusCode(200, new { token = tokenhandler.WriteToken(token) })); } catch { return(StatusCode(500, "Something went wrong while attempting to log in, please try again in a few moments.")); } }