public async Task <IActionResult> LogIn([FromBody] LogInAccount logInAccount) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } try { var identity = await _accountService.LogIn(logInAccount); if (identity.Error != null) { return(StatusCode(identity.Error.ErrorCode, identity.Error.ErrorDescriprion)); } var response = await _accountService.GetToken(identity.Data); if (response.Error != null) { return(StatusCode(identity.Error.ErrorCode, identity.Error.ErrorDescriprion)); } return(Ok(response.Data)); } catch (Exception e) { return(StatusCode(500, new Error(e.Message))); } }
public async Task <Response <ClaimsIdentity> > LogIn(LogInAccount logIn) { var response = new Response <ClaimsIdentity>(); try { var user = await GetUserByCreds(logIn.Nike, logIn.Password, logIn.UserRole); if (user == null) { response.Error = new Error(404, "User not found!"); return(response); } var isCorrectDataFromUser = await _context.Users.AnyAsync(p => p.Nike == logIn.Nike && p.Password == logIn.Password); if (!isCorrectDataFromUser) { response.Error = new Error(400, "Nike or password is wrong"); return(response); } var claims = new List <Claim> { new Claim(ClaimsIdentity.DefaultNameClaimType, user.Id.ToString()), new Claim(ClaimsIdentity.DefaultRoleClaimType, user.Role.ToString()) }; ClaimsIdentity claimsIdentity = new ClaimsIdentity(claims, "Token", ClaimsIdentity.DefaultNameClaimType, ClaimsIdentity.DefaultRoleClaimType); response.Data = claimsIdentity; return(response); } catch (Exception ex) { response.Error = new Error(500, "Can`t LogIn: " + ex); return(response); } }