public IActionResult Register(UserViewModel model) { EmailChecker validate = new EmailChecker(_context); if (validate.Check(model.email)) { if (ModelState.IsValid) { PasswordHasher <User> hasher = new PasswordHasher <User>(); User newUser = new User { first_name = model.first_name, last_name = model.last_name, email = model.email, password = model.password, created_date = DateTime.Now, updated_date = DateTime.Now }; newUser.password = hasher.HashPassword(newUser, newUser.password); //Save new user _context.Add(newUser); _context.SaveChanges(); return(RedirectToAction("Welcome")); } } else { ModelState.AddModelError("email", "Please select a unique email."); } return(View(model)); }
public async Task <IActionResult> Update([FromBody] UpdateUserViewModel updateUserViewModel) { var updatedUser = await userManager.Users.Where <User>(c => c.Id == updateUserViewModel.UserId).FirstOrDefaultAsync(); if (updatedUser != null) { if (updateUserViewModel.NewUserName != null) { updatedUser.UserName = updateUserViewModel.NewUserName; } if (updateUserViewModel.NewAvatarUrl != null) { updatedUser.AvatarUrl = updateUserViewModel.NewAvatarUrl; } if (updateUserViewModel.NewEmail != null) { //Check whether email is existed bool isExisted = await EmailChecker.Check(updateUserViewModel.NewEmail); if (isExisted == false) { return(BadRequest(new { Errors = new { Code = "NotExistedEmailAddress", Description = "Email address is not existed!" } })); } else { updatedUser.Email = updateUserViewModel.NewEmail; } } if (updateUserViewModel.Description != null) { updatedUser.Description = updateUserViewModel.Description; } var result = await userManager.UpdateAsync(updatedUser); if (result.Succeeded) { return(Ok(new { Results = updatedUser })); } else { return(BadRequest(new { Errors = result.Errors.ToArray()[0] })); } } else { return(BadRequest(new { Errors = new { Code = "InvalidInputParameters", Description = "Invalid Input Parameters!" } })); } }
public async Task <IActionResult> Register([FromBody] UserViewModel userViewModel) { //Check whether email is existed bool isExisted = await EmailChecker.Check(userViewModel.Email); if (isExisted == false) { return(BadRequest(new { Errors = new { Code = "NotExistedEmailAddress", Description = "Email address is not existed!" } })); } //Check IsRole existed //IdentityRole isRoleExisted = await roleManager.FindByNameAsync(userViewModel.Role); //if (isRoleExisted == null) //{ // return BadRequest(new // { // Errors = new object[] { new { Code = "InvalidRole", Description = $"Role {userViewModel.Role} is invalid!" } } // }); //} //Check IsEmail existed User isEmailExisted = await userManager.FindByEmailAsync(userViewModel.Email); if (isEmailExisted != null) { return(BadRequest(new { Errors = new { Code = "InvalidEmail", Description = $"Email {userViewModel.Email} has already taken!" } })); } var random = new Random(); var OTPCOde = random.Next(100000, 999999); var identityUser = new User() { UserName = userViewModel.UserName, Email = userViewModel.Email, AvatarUrl = "https://picsum.photos/200", IsTwoStepConfirmation = false, OTPCode = OTPCOde, IsLocked = false }; IdentityResult result1 = await userManager.CreateAsync(identityUser, userViewModel.Password); if (result1.Succeeded) { IdentityResult result2 = await userManager.AddToRoleAsync(identityUser, "Student"); if (result2.Succeeded) { Email.SendEmailOTP(identityUser.Email, OTPCOde); //return Ok( // new // { // Results = new { Code = "Success", Description = $"User registeration is successful!" } // }); return(Ok( new { Results = new { RegisteredUser = identityUser } })); } return(BadRequest( new { Errors = result2.Errors.ToArray()[0] })); } else { return(BadRequest( new { Errors = result1.Errors.ToArray()[0] })); } }