public async Task <IActionResult> SignUp([FromBody] AccountSecurity model) { if (ModelState.IsValid) { if (VerifyUniqueEmail(model.Email)) { return(BadRequest(new { Message = "Email already exists" })); } model.UserId = Guid.NewGuid(); model.Password = PasswordUseFull.GetHash(model.Password); for (int j = 0; j < model.Phones.Count; j++) { model.Phones[j].UserId = model.UserId; } var createduser = _context.AccountSecurity.Add(model); if (createduser == null) { return(BadRequest(new { Message = "Username or password invalid" })); } _context.SaveChanges(); account = new Account() { CreatedOn = DateTime.Now, IdUser = model.UserId, LastLoginOn = DateTime.Now, LastUpdateOn = DateTime.Now }; return(BuildSignUpResponse(model)); } return(BadRequest(ModelState)); }
public IActionResult SignIn([FromBody] AccountSecurity model) { try { if (ModelState.IsValid) { var resultAccountSecurity = _context.AccountSecurity.FirstOrDefault(x => x.Email == model.Email); if (resultAccountSecurity?.Email == null) { return(BadRequest(new { Message = "Invalid user and / or password" })); } bool isValid = PasswordUseFull.ValidatePass(model.Password, resultAccountSecurity.Password); if (!isValid) { return(Unauthorized()); } var resultAccount = _context.Account .Where(c => c.IdUser == resultAccountSecurity.UserId) .OrderByDescending(t => t.LastLoginOn) .FirstOrDefault(); var token = BuildToken(model); Token tokenInfo = new Token() { CreatedDate = DateTime.Now, GuidToken = new Guid(token.Id), ValueToken = new JwtSecurityTokenHandler().WriteToken(token) }; if (resultAccount != null) { Account account = new Account() { IdUser = resultAccountSecurity.UserId, CreatedOn = resultAccount.CreatedOn, LastLoginOn = DateTime.Now, LastUpdateOn = DateTime.Now, TokenId = new Guid(token.Id) }; _context.Account.Add(account); _context.Tokens.Add(tokenInfo); _context.SaveChanges(); } if (resultAccount != null) { return(Ok(new { idUser = resultAccountSecurity.UserId, createdOn = resultAccount.CreatedOn, lastUpdateOn = resultAccount.LastUpdateOn, lastloginOn = resultAccount.LastLoginOn, token = new JwtSecurityTokenHandler().WriteToken(token) })); } return(BadRequest(new { Message = "Invalid user and / or password" })); } return(BadRequest()); } catch (Exception e) { return(BadRequest(e.Message)); } }