public async Task <ActionResult <string> > Register(RegisterInputModel model) { if (ModelState.IsValid) { var user = new IdentityUser { UserName = model.Email, Email = model.Email }; var result = await userManager.CreateAsync(user, model.Password); if (result.Succeeded) { logger.LogInformation("User created a new account with password."); var jwt = JwtTokenGenerator.Generate(model.Email, configuration["AuthToken:Issuer"], configuration["AuthToken:Key"]); logger.LogInformation("User logged in."); return(jwt); } return(BadRequest(result.Errors.Select(x => new Error() { Name = string.Empty, Message = x.Description } ).ToList())); } return(BadRequest()); }
public async Task <ActionResult <string> > Login(AccountInputModel model) { if (ModelState.IsValid) { var user = await userManager.FindByNameAsync(model.Email); if (user == null) { return(BadRequest(ErrorResult.Create("Wrong email/password"))); } // This doesn't count login failures towards account lockout // To enable password failures to trigger account lockout, set lockoutOnFailure: true var result = await signInManager.CheckPasswordSignInAsync(user, model.Password, lockoutOnFailure : false); if (result.Succeeded) { var jwt = JwtTokenGenerator.Generate(model.Email, configuration["AuthToken:Issuer"], configuration["AuthToken:Key"]); logger.LogInformation("User logged in."); return(jwt); } if (result.RequiresTwoFactor) { return(BadRequest(new List <Error>() { new Error() { Name = "2fa", Message = "Require LoginWith 2fa" } })); } if (result.IsLockedOut) { return(BadRequest(new List <Error>() { new Error() { Name = "Lockout", Message = "User account locked out" } })); } else { return(BadRequest(new List <Error>() { new Error() { Name = "InvalidLogin", Message = "Invalid login attempt." } })); } } return(BadRequest(ModelState)); }