public async Task <IActionResult> Register(EmployeeForLogin user) { user.Username = user.Username.ToLower(); //if (await _logic.UserExists(user.Username)) // return BadRequest("Username already exists!"); var userForRegistration = await _logic.GetObjectByUsername(user.Username); if (userForRegistration == null) { return(BadRequest($"Employee with username:'******' doesn't exist.")); } var createdUser = await _logic.Register(userForRegistration, user.Password); return(StatusCode(201)); }
public async Task <IActionResult> Login(EmployeeForLogin userForLogin) { var userFromRepo = await _logic.Login(userForLogin.Username.ToLower(), userForLogin.Password.ToLower()); if (userFromRepo == null) { return(Unauthorized()); } var claims = new[] { new Claim(ClaimTypes.NameIdentifier, userFromRepo.EmployeeID.ToString()), new Claim(ClaimTypes.Name, userFromRepo.Username), new Claim(ClaimTypes.Actor, "employee") }; var key = new SymmetricSecurityKey(Encoding.UTF8. GetBytes(_config.GetSection("AppSettings:Token").Value)); var credentials = new SigningCredentials(key, SecurityAlgorithms.HmacSha512Signature); var tokenDescriptor = new SecurityTokenDescriptor { Subject = new ClaimsIdentity(claims), Expires = DateTime.Now.AddDays(1), SigningCredentials = credentials }; var tokenHandler = new JwtSecurityTokenHandler(); var token = tokenHandler.CreateToken(tokenDescriptor); var empToReturn = _mapper.Map <EmployeeDTO>(userFromRepo); return(Ok(new { token = tokenHandler.WriteToken(token), user = empToReturn })); }