예제 #1
0
        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));
        }
예제 #2
0
        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!" }
                }));
            }
        }
예제 #3
0
        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]
                }));
            }
        }