예제 #1
0
        public async Task <ApiResponse> Register(UserRegisterVm userModel)
        {
            var applicationUser = new ApplicationUser()
            {
                Email     = userModel.Email,
                FirstName = userModel.FirstName,
                LastName  = userModel.LastName,
                UserName  = userModel.Email,
            };

            var result = await _userManager.CreateAsync(applicationUser, userModel.Password);

            var user = await _userManager.FindByEmailAsync(applicationUser.Email);

            if (user != null && result.Succeeded)
            {
                await _unitOfWork.CompleteAsync();

                var token = await _userManager.GenerateEmailConfirmationTokenAsync(user);

                byte[] tokenGeneratedBytes = Encoding.UTF8.GetBytes(token);
                var    codeEncoded         = WebEncoders.Base64UrlEncode(tokenGeneratedBytes);

                var url = "http://localhost:5000/emailConfirmation" + "?email=" + user.Email + "&token=" + codeEncoded;

                SendEmail.Send(user.Email, "Email confirmation", url);

                return(new ApiResponse(result.Succeeded));
            }
            else
            {
                throw new MyException(ApiResponseDescription.EMAIL_ALREADY_IN_USE);
            }
        }
예제 #2
0
        //[Permission("افزودن کاربر", ActionType.Insert)]
        public async Task <GeneralResult> Post([FromBody] UserRegisterVm model)
        {
            var xErrors = await _UserService.AddAsync(model);

            if (!xErrors.Any())
            {
                return(Ok("ثبت با موفقیت انجام شد"));
            }
            else
            {
                return(BadRequest(xErrors));
            }
        }
예제 #3
0
        public async Task <User> Register(UserRegisterVm userRegisterVm)
        {
            try
            {
                new MailAddress(userRegisterVm.Email);
            }
            catch
            {
                throw new ArgumentException("Value has a invalid format.", nameof(userRegisterVm.Email));
            }

            if (string.IsNullOrWhiteSpace(userRegisterVm.Password))
            {
                throw new ArgumentException("Value can't be null or empty.", nameof(userRegisterVm.Password));
            }

            if (await _context.Users.AnyAsync(x => x.Email == userRegisterVm.Email))
            {
                throw new Exception("The email provided is already registered.");
            }

            var user = new AppUser()
            {
                Email    = userRegisterVm.Email,
                UserName = userRegisterVm.Username
            };

            var result = await _userManager.CreateAsync(user, userRegisterVm.Password);

            if (result.Succeeded)
            {
                return(new User()
                {
                    Email = user.Email,
                    Username = user.UserName,
                    Token = _jwtGenerator.CreateToken(user)
                });
            }

            var errors = new StringBuilder();

            foreach (var error in result.Errors)
            {
                errors.Append($"{error.Description} ");
            }

            throw new Exception($"Failed to create user due to: \n{errors}");
        }
예제 #4
0
        public async Task <bool> EditAsync(UserRegisterVm model)
        {
            var dbUser = uow.UserRepository.Get(x => x.Id == model.xID, null).FirstOrDefault();

            if (dbUser == null)
            {
                throw new ErrorMessageException("کاربر انتخاب شده در سیستم موجود نمیباشد");
            }

            dbUser.xFirstName    = model.xFirstName;
            dbUser.xLastName     = model.xLastName;
            dbUser.UserName      = model.xUsername;
            dbUser.xRegisterDate = DateTime.Now;
            await uow.SaveChangesAsync();

            return(true);
        }
예제 #5
0
        public async Task <List <string> > AddAsync(UserRegisterVm model)
        {
            List <string> xErrors = new List <string>();

            if (model.xPassword != model.xRePassword)
            {
                throw new ErrorMessageException("تکرار رمز عبور صحیح نمیباشد");
            }

            var xDbModel = new User
            {
                UserName      = model.xUsername,
                Email         = model.xEmail,
                PhoneNumber   = model.xMobile,
                xRegisterDate = DateTime.UtcNow,
                xIsActive     = true,
                xFirstName    = model.xFirstName,
                xLastName     = model.xLastName
            };

            xDbModel.xUserRoles = new List <UserRole>();
            var xResult = await _UserManager.CreateAsync(xDbModel, model.xPassword);

            if (!xResult.Succeeded)
            {
                xErrors = xResult.Errors.Select(err =>
                {
                    return(Regex.Replace(err.Description, @"Name\s?\w+\s?is already taken", string.Format("شناسه کاربری {0} قبلا انتخاب شده است", model.xUsername))
                           .Replace("Passwords must be at least 6 characters.", "رمز عبور حداقل باید 6 کاراکتر باشد .<br/>")
                           .Replace("Passwords must have at least one non letter or digit character.", " رمز عبور باید دارای کارکتر های خاص و اعداد باشد .<br/>")
                           .Replace("Passwords must have at least one digit ('0'-'9').", "رمز عبور باید دارای حداقل یک عدد باشد  (0-9) .<br/>")
                           .Replace("Passwords must have at least one lowercase ('a'-'z').", "رمز عبور باید دارای حداقل یک حرف کوچک باشد  (a-z) .<br/>")
                           .Replace("Passwords must have at least one uppercase ('A'-'Z').", "رمز عبور باید دارای حداقل یک حرف بزرگ باشد  (A-Z) .<br/>"));
                }).ToList();
            }
            return(xErrors);
        }
예제 #6
0
        public ActionResult SignUp(UserRegisterVm userRegisterVm)
        {
            if (userRegisterVm == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }

            if (ModelState.IsValid)
            {
                UserEntity user = Mapper.Map <UserRegisterVm, UserEntity>(userRegisterVm);

                if (_userLogic.Add(user))
                {
                    FormsAuthentication.SetAuthCookie(user.Name, true);

                    return(RedirectToAction("Index", "Product"));
                }
            }

            return(View("SignIn", new UserAggregatedVm
            {
                RegisterVm = userRegisterVm
            }));
        }
예제 #7
0
        public async Task <GeneralResult> Put([FromBody] UserRegisterVm model)
        {
            var status = await _UserService.EditAsync(model);

            return(Ok(status));
        }
예제 #8
0
 public async Task <ActionResult <User> > Register(UserRegisterVm registerVm)
 {
     return(await _userService.Register(registerVm));
 }
예제 #9
0
        public ActionResult SignUpForm(UserRegisterVm userRegisterVm)
        {
            ModelState.Clear();

            return(View("_SignUpPartial", userRegisterVm));
        }
예제 #10
0
 public async Task <IActionResult> Register([FromBody] UserRegisterVm userModel) =>
 Ok(await _userService.Register(userModel));