async Task <IHttpActionResult> Create(AccountEmailSignIn model) { if (string.IsNullOrEmpty(model.UserId)) { model.UserId = Guid.NewGuid().ToString(); } if (await AppDatabase.Users.AnyAsync(o => o.Id == model.UserId)) { return(BadRequest("UserId is in use.")); } if (await AppDatabase.Users.AnyAsync(o => o.Email == model.Email)) { return(BadRequest("Email is in use.")); } var user = new UserAccount { Email = model.Email, Id = model.UserId, CreatedOn = DateTime.UtcNow, ModifiedOn = DateTime.UtcNow, EmailPassword = UserPassword.Create(model.Password), PhonePassword = UserPassword.Create(model.Password), }; AppDatabase.Users.Add(user); await AppDatabase.SaveChangesAsync(); await SendWelcomeMail(new UserEmailViewModel { UserId = user.Id, UserEmail = user.Email }); //Sign In Authorization.UpdateFrom(user); Session.UpdateFrom(user); return(Ok(GetAccountDetails())); }
public async Task <IHttpActionResult> SignIn(AccountEmailSignIn model) { var user = await AppDatabase.Users.FirstOrDefaultAsync(o => o.Email == model.Email); if (user == null) { return(await Create(model)); } if (!user.EmailPassword.Compare(model.Password)) { return(BadRequest("Invalid password.")); } //Sign In Authorization.UpdateFrom(user); Session.UpdateFrom(user); return(Ok(GetAccountDetails())); }