public override void Process(SignInArgs args)
        {
            try
            {
                // get current user
                string         username = args.User.InnerUser.Profile.Email;
                GetUserRequest request  = new GetUserRequest(username);
                GetUserResult  user     = _customerServiceProvider.GetUser(request);
                if (!user.Success || user.CommerceUser == null)
                {
                    // if user isn't a customer, run customer create pipeline
                    string            password          = Guid.NewGuid().ToString();
                    CreateUserRequest createUserRequest = new CreateUserRequest(username, password, username, _storefrontContext.CurrentStorefront.ShopName);
                    CreateUserResult  createUserResult  = _customerServiceProvider.CreateUser(createUserRequest);
                }

                // identify commerce user and merge anonymous cart
                Cart result = _cartManager.GetCurrentCart(_visitorContext, _storefrontContext, false).Result;
                Tracker.Current.CheckForNull().Session.IdentifyAs("CommerceUser", username);
                _visitorContext.UserJustLoggedIn();
                _cartManager.MergeCarts(_storefrontContext.CurrentStorefront, _visitorContext, _visitorContext.CustomerId, result);
            }
            catch (Exception ex)
            {
                // log error
                Sitecore.Diagnostics.Log.Error($"Failed to create a customer for external user login {args.User.UserName}. {ex.Message}", this);
            }
        }
Example #2
0
        public ActionResult Register(RegisterModel model)
        {
            IAccountContract ac   = Actor.Public.AsAccountManager();
            IUserContract    uc   = Actor.Public.AsUserManager();
            BzureUser        user = new BzureUser(uc.GenerateUserID(), model.UserName)
            {
                EMail     = model.Email,
                Password  = ac.EncryptPassword(model.Password),
                RoleValue = 0,
                OpenID    = string.Empty,
                State     = 0,
                NickName  = model.UserName
            };
            CreateUserResult result = ac.CreateUser(user);

            if (result == CreateUserResult.Success)
            {
                user.SignIn(false);//登录

                return(Redirect("/"));
            }
            else
            {
                RegisterViewModel ViewModel = new RegisterViewModel()
                {
                    Title           = "注册",
                    Message         = result.StringValue(),
                    MasterViewModel = this.MasterViewModel
                };
                return(this.Result(ViewModel));
            }
        }
Example #3
0
        public ManagerResponse <CreateUserResult, CommerceUser> RegisterUser(RegisterUserInputModel inputModel)
        {
            Assert.ArgumentNotNull(inputModel, "inputModel");
            Assert.ArgumentNotNullOrEmpty(inputModel.FirstName, "inputModel.FirstName");
            Assert.ArgumentNotNullOrEmpty(inputModel.LastName, "inputModel.LastName");

            CreateUserResult result;

            // Attempt to register the user
            try
            {
                var request = new CreateUserRequest(inputModel.UserName, inputModel.Password, inputModel.UserName, StorefrontContext.Current.ShopName);
                request.Properties.Add("FirstName", inputModel.FirstName);
                request.Properties.Add("LastName", inputModel.LastName);
                result = this.CustomerServiceProvider.CreateUser(request);
            }
            catch (MembershipCreateUserException e)
            {
                result = new CreateUserResult {
                    Success = false
                };
                result.SystemMessages.Add(new SystemMessage {
                    Message = ErrorCodeToString(e.StatusCode)
                });
            }
            result.WriteToSitecoreLog();
            return(new ManagerResponse <CreateUserResult, CommerceUser>(result, result.CommerceUser));
        }
Example #4
0
        /// <summary>
        /// Registers the user.
        /// </summary>
        /// <param name="storefront">The storefront.</param>
        /// <param name="inputModel">The input model.</param>
        /// <returns>
        /// The manager result where the user is returned as the Result.
        /// </returns>
        public virtual ManagerResponse <CreateUserResult, CommerceUser> RegisterUser([NotNull] CommerceStorefront storefront, RegisterUserInputModel inputModel)
        {
            Assert.ArgumentNotNull(storefront, "storefront");
            Assert.ArgumentNotNull(inputModel, "inputModel");
            Assert.ArgumentNotNullOrEmpty(inputModel.UserName, "inputModel.UserName");
            Assert.ArgumentNotNullOrEmpty(inputModel.Password, "inputModel.Password");

            CreateUserResult result;

            // Attempt to register the user
            try
            {
                var request = new CreateUserRequest(inputModel.UserName, inputModel.Password, inputModel.UserName, storefront.ShopName);
                result = this.CustomerServiceProvider.CreateUser(request);
                if (!result.Success)
                {
                    Helpers.LogSystemMessages(result.SystemMessages, result);
                }
            }
            catch (MembershipCreateUserException e)
            {
                result = new CreateUserResult {
                    Success = false
                };
                result.SystemMessages.Add(new Commerce.Services.SystemMessage {
                    Message = ErrorCodeToString(e.StatusCode)
                });
            }

            return(new ManagerResponse <CreateUserResult, CommerceUser>(result, result.CommerceUser));
        }
Example #5
0
        public ManagerResponse <CreateUserResult, CommerceUser> RegisterUserCustomer(IStorefrontContext storefrontContext, string userName, string password,
                                                                                     string email, string secondaryEmail)
        {
            Assert.ArgumentNotNull(storefrontContext, nameof(storefrontContext));
            Assert.ArgumentNotNullOrEmpty(userName, nameof(userName));
            Assert.ArgumentNotNullOrEmpty(password, nameof(password));
            CreateUserResult createUserResult1;

            try
            {
                var createUserRequest = new CreateUserRequest(userName, password, email, storefrontContext.CurrentStorefront.ShopName);
                createUserRequest.Properties.Add("SecondEmail", secondaryEmail);
                createUserResult1 = CustomerServiceProvider.CreateUser(createUserRequest);
                //createUserResult1 = CustomerServiceProvider.CreateUser(new CreateUserRequest(userName, password, email, storefrontContext.CurrentStorefront.ShopName));
                if (!createUserResult1.Success)
                {
                    Helpers.LogSystemMessages(createUserResult1.SystemMessages, createUserResult1);
                }
                else if (createUserResult1.Success)
                {
                    if (createUserResult1.CommerceUser == null)
                    {
                        if (createUserResult1.SystemMessages.Count == 0)
                        {
                            createUserResult1.Success = false;
                            createUserResult1.SystemMessages.Add(new SystemMessage()
                            {
                                Message = storefrontContext.GetSystemMessage("User Already Exists")
                            });
                        }
                    }
                }
            }
            catch (MembershipCreateUserException ex)
            {
                CreateUserResult createUserResult2 = new CreateUserResult {
                    Success = false
                };
                createUserResult1 = createUserResult2;
                createUserResult1.SystemMessages.Add(new SystemMessage()
                {
                    Message = ErrorCodeToString(storefrontContext, ex.StatusCode)
                });
            }
            catch (Exception ex)
            {
                CreateUserResult createUserResult2 = new CreateUserResult {
                    Success = false
                };
                createUserResult1 = createUserResult2;
                createUserResult1.SystemMessages.Add(new SystemMessage()
                {
                    Message = storefrontContext.GetSystemMessage("Unknown Membership Provider Error")
                });
            }
            CreateUserResult serviceProviderResult = createUserResult1;

            return(new ManagerResponse <CreateUserResult, CommerceUser>(serviceProviderResult, serviceProviderResult.CommerceUser));
        }
Example #6
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="createUser"></param>
        /// <returns></returns>
        public CreateUserResult CreateNewUser(UserCreationDto createUser, ClaimsPrincipal claims)
        {
            CreateUserResult result = new CreateUserResult()
            {
                CreationError        = UserCreationError.NoError,
                IsCreatedSuccesfully = true
            };

            // First check if user alredy exists in database
            var users = userRepo.GetUsers(new UserQueryParameters()
            {
                UserName = createUser.UserName
            });

            if (users.Any(u => string.Compare(u.UserName, createUser.UserName, StringComparison.OrdinalIgnoreCase) == 0))
            {
                result.IsCreatedSuccesfully = false;
                result.CreationError        = UserCreationError.LoginAlreadyExists;
                return(result);
            }

            Users user = Mapper.Map <Users>(createUser);

            // Create appropriate user data according to flags
            if (createUser.IsTeacher)
            {
                Teachers teacher = Mapper.Map <Teachers>(createUser);
                teacherRepo.AddTeacher(teacher, claims);
                teacherRepo.Save();
                user.TeacherId     = teacher.TeacherId;
                result.CreatedUser = Mapper.Map <UserDto>(teacher);
            }

            if (createUser.IsStudent)
            {
                Students student = Mapper.Map <Students>(createUser);
                studentRepo.AddStudent(student, claims);
                studentRepo.Save();
                user.StudentId     = student.StudentId;
                result.CreatedUser = Mapper.Map <UserDto>(student);
            }

            if (createUser.IsParent)
            {
                Parents parent = Mapper.Map <Parents>(createUser);
                parentRepo.AddParent(parent, claims);
                parentRepo.Save();
                user.ParentId      = parent.ParentId;
                result.CreatedUser = Mapper.Map <UserDto>(parent);
            }

            userRepo.CreateUser(user, claims);
            userRepo.Save();
            result.CreatedUser.UserId = user.UserId.ToString();

            return(result);
        }
Example #7
0
        /********************************************************************************** ***************/
        private void CreateNewUser(string username, string password, string firstName, string lastName, string phoneNumber, string email)
        {
            CreateUserResult result = CreateUserResult.Failed;

            User user = new User(username, password, firstName, lastName, phoneNumber, email);

            result = _passwordService.CreateNewUser(user);

            _loginView.DisplayCreateNewUserResult(result, _passwordService.GetMinimumPasswordLength());
        }
Example #8
0
        public async Task <CreateUserResult> CreateUserAsync(UserItemInputDto input)
        {
            string message = string.Empty;
            var    result  = new CreateUserResult();
            var    success = DataModelValidate.AddOrUpdateUserValidate(input, ref message);

            if (!success)
            {
                result.Success = false;
                result.Message = message;
                return(result);
            }

            if (await _userAppServiceClient.IsMobileExistedAsync(input.Mobile))
            {
                result.Success = false;
                result.Message = "手机号码已经存在";
                return(result);
            }

            var userResult = await _userAppServiceClient.FindByUsernameAsync(input.Username);

            if (userResult.Item1 != null)
            {
                result.Success = false;
                result.Message = "用户名存在";
                return(result);
            }

            //通过,开始创建用户
            var dto = new UserItemDto
            {
                IdCardNo       = input.IdCardNo,
                Username       = input.Username,
                Password       = input.UserPwd,
                Name           = input.Name,
                EmployeeNumber = input.EmployeeNumber,
                Avatar         = input.Avatar,
                Mobile         = input.Mobile,
                IsActive       = true
            };
            var returnDto = await _userAppServiceClient.CreateUserAsync(dto);

            if (returnDto == null)
            {
                result.Success = false;
                result.Message = "创建用户失败,请重新尝试";
                return(result);
            }
            //记录Id
            result.Success = true;
            result.Message = "创建用户成功!";
            return(result);
        }
Example #9
0
        public void UserCreationShouldFailIfEmailAddressIsAlreadyTaken()
        {
            CreateUserRequest createUserRequest = new CreateUserRequest
            {
                Email = "*****@*****.**"
            };

            CreateUserResult createUserResult = _createUserHandler.Handle(createUserRequest);

            Assert.IsFalse(createUserResult.Succeeded);
        }
Example #10
0
        /// <summary>
        /// Starts cycle for new account creation.
        /// </summary>
        public IActionResult CreateUser([FromForm] string email, [FromForm] string userName, [FromForm] string pass,
                                        [FromForm] string captcha, [FromForm] string lang)
        {
            // Must have all fields
            if (string.IsNullOrEmpty(email) || string.IsNullOrEmpty(userName) || string.IsNullOrEmpty(pass) ||
                string.IsNullOrEmpty(captcha) || string.IsNullOrEmpty(lang))
            {
                logger.LogWarning(new EventId(), "Missing request data in CreateUser.");
                return(StatusCode(400, "Missing request data."));
            }
            // Verify email, user and pass criteria. If they fail here, that's an invalid request: client should have checked.
            bool dataValid = true;

            if (!auth.IsEmailValid(email))
            {
                dataValid = false;
            }
            Regex reUsrName = new Regex(@"^[\._\-\p{L}\p{N}]+$");

            if (!reUsrName.Match(userName).Success)
            {
                dataValid = false;
            }
            if (userName.Length < 3)
            {
                dataValid = false;
            }
            if (!auth.IsPasswordValid(pass))
            {
                dataValid = false;
            }
            if (!dataValid)
            {
                return(StatusCode(400, "Invalid data; check for validation criteria."));
            }

            // Verify captcha
            if (!isCaptchaOk(captcha))
            {
                return(StatusCode(400, "Captcha didn't verify."));
            }

            // See if user can be created
            Auth.CreateUserResult cur = auth.CreateUser(lang, email, userName, pass);
            CreateUserResult      res = new CreateUserResult
            {
                Success        = (cur == 0),
                UserNameExists = (cur & Auth.CreateUserResult.UserNameExists) == Auth.CreateUserResult.UserNameExists,
                EmailExists    = (cur & Auth.CreateUserResult.EmailExists) == Auth.CreateUserResult.EmailExists,
            };

            return(new ObjectResult(res));
        }
Example #11
0
        public async Task <IActionResult> CreateNewAccount(CreateUserViewModel cmd)
        {
            var user = new User()
            {
                Email    = cmd.Email,
                UserName = cmd.UserName,
                Password = cmd.Password
            };
            CreateUserResult result = await _mediator.Send(new CreateUserCommand(user));

            return(HandleResult(result, _mapper.Map <UserDto>(result.User)));
        }
Example #12
0
        public HttpResponseMessage CreateUser(string userName, string password, string email)
        {
            CreateUserResult result = new CreateUserResult();

            try
            {
                using (SqlConnection connection = new SqlConnection(Constants.ConnectionStr))
                {
                    connection.Open();

                    // Check if user name already exist
                    string checkExistenceQuery = "SELECT * FROM dbo.users WHERE [UserName] = @userName";
                    using (SqlCommand cmd = new SqlCommand(checkExistenceQuery, connection))
                    {
                        cmd.Parameters.Add("@userName", SqlDbType.VarChar, 255).Value = userName;
                        using (SqlDataReader reader = cmd.ExecuteReader())
                        {
                            if (reader.Read())
                            {
                                result.message = $"User name {userName} already exist!";
                                return(Utilities.CreateJsonReponse(Request, result));
                            }
                        }
                    }

                    // Create new user
                    string createNewUserQuery = "INSERT INTO dbo.users ([UserName], [Password], [Email], [AuthToken]) VALUES (@userName, @password, @email, @authToken)";
                    using (SqlCommand cmd = new SqlCommand(createNewUserQuery, connection))
                    {
                        string authToken = Convert.ToBase64String(Guid.NewGuid().ToByteArray());
                        cmd.Parameters.Add("@userName", SqlDbType.VarChar, 255).Value  = userName;
                        cmd.Parameters.Add("@password", SqlDbType.VarChar, 255).Value  = password;
                        cmd.Parameters.Add("@email", SqlDbType.VarChar, 255).Value     = email;
                        cmd.Parameters.Add("@authToken", SqlDbType.VarChar, 255).Value = authToken;

                        cmd.ExecuteNonQuery();

                        result.success = true;
                        result.message = $"User {userName} created";
                        return(Utilities.CreateJsonReponse(Request, result));
                    }
                }
            }
            catch (Exception e)
            {
                result.message = $"Failed to create new user: {e.Message}";
                return(Utilities.CreateJsonReponse(Request, result));
            }
        }
Example #13
0
        public virtual ManagerResponse <CreateUserResult, CommerceUser> RegisterUser(IStorefrontContext storefrontContext, string userName, string password, string email, StringPropertyCollection propertyBag = null)
        {
            Diagnostics.Assert.ArgumentNotNull(storefrontContext, "storefrontContext");
            Diagnostics.Assert.ArgumentNotNullOrEmpty(userName, "userName");
            Diagnostics.Assert.ArgumentNotNullOrEmpty(password, "password");
            CreateUserResult createUserResult;

            try
            {
                CreateUserRequest request = new CreateUserRequest(userName, password, email, storefrontContext.CurrentStorefront.ShopName);
                request.CopyPropertyBag(propertyBag);
                createUserResult = _customerServiceProvider.CreateUser(request);
                if (!createUserResult.Success)
                {
                    Helpers.LogSystemMessages(createUserResult.SystemMessages, createUserResult);
                }
                else if (createUserResult.Success && createUserResult.CommerceUser == null && createUserResult.SystemMessages.Count == 0)
                {
                    createUserResult.Success = false;
                    createUserResult.SystemMessages.Add(new SystemMessage
                    {
                        Message = storefrontContext.GetSystemMessage("User Already Exists")
                    });
                }
            }
            catch (MembershipCreateUserException ex)
            {
                createUserResult = new CreateUserResult
                {
                    Success = false
                };
                createUserResult.SystemMessages.Add(new SystemMessage
                {
                    Message = ex.StatusCode.ToString()
                });
            }
            catch (Exception ex)
            {
                createUserResult = new CreateUserResult
                {
                    Success = false
                };
                createUserResult.SystemMessages.Add(new SystemMessage
                {
                    Message = storefrontContext.GetSystemMessage("Unknown Membership Provider Error")
                });
            }
            return(new ManagerResponse <CreateUserResult, CommerceUser>(createUserResult, createUserResult.CommerceUser));
        }
Example #14
0
        public CreateUserResult CreateUser(LoginRegisterModel user, string role)
        {
            CreateUserResult result  = new CreateUserResult();
            AppUser          appuser = new AppUser()
            {
                UserName = user.UserName, Email = user.Email
            };

            try
            {
                if (_userManager.Users.SingleOrDefault(u => u.UserName == user.UserName) != null)
                {
                    result.Message        = "Пользователь с таким логином уже существует";
                    result.Success        = false;
                    result.IsAlreadyExist = true;
                }
                else
                {
                    IdentityResult userCreation = _userManager.CreateAsync(appuser, user.Password).Result;
                    IdentityResult inRoleAdding = _userManager.AddToRoleAsync(appuser, role).Result;
                    if (userCreation.Succeeded)
                    {
                        if (inRoleAdding.Succeeded)
                        {
                            result.IsAlreadyExist = false;
                            result.Success        = true;
                            result.Message        = "Пользователь успешно создан";
                            result.UserId         = appuser.Id;
                        }
                        else
                        {
                            AppUser appUser = _userManager.Users.SingleOrDefault(u => u.UserName == user.UserName);
                            _userManager.DeleteAsync(appUser);
                            result.IsAlreadyExist = false;
                            result.Other          = true;
                            result.Message        = "Не удалось создать пользователя";
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                result.Message = "Не удалось создать пользователя " + ex;
            }
            return(result);
        }
Example #15
0
        /// <summary>
        /// 创建新用户
        /// </summary>
        /// <param name="User"></param>
        /// <returns>是否成功</returns>
        public CreateUserResult CreateUser(BzureUser User)
        {
            CreateUserResult result = this.Decorator.CreateUser(User);

            if (result == CreateUserResult.Success)
            {
                //为每个新创建的用户指定一个默认的角色
                TeamRole[]           role = Actor.Public.GetRoleByName("注册用户");
                IEnumerable <string> Ids  = role.Select((TeamRole r) => { return(r.ID); });
                if (role.IsNotNull())
                {
                    Actor.Public.AuthorizeUser(User, Ids.ToArray(), (bool ok) =>
                    {
                    });
                }
            }
            return(result);
        }
Example #16
0
        public void UserCreationShouldSucceedIfEmailAddressIsAvailable()
        {
            string            emailAddress      = "*****@*****.**";
            CreateUserRequest createUserRequest = new CreateUserRequest
            {
                Email             = emailAddress,
                Password          = "******",
                ConfirmedPassword = "******",
                Gender            = GenderType.Female,
                UnitsOfMeasure    = MeasurementSystem.Imperial
            };

            CreateUserResult createUserResult = _createUserHandler.Handle(createUserRequest);

            BodyFitTrackerContext bodyFitTrackerContext = DatabaseConnectionFactory.GetInMemoryDatabase(false);

            Assert.IsNotNull(bodyFitTrackerContext.AppUsers.Where(x => x.Email == emailAddress).First());
            Assert.IsTrue(createUserResult.Succeeded);
        }
Example #17
0
        public ManagerResponse <CreateUserResult, CommerceUser> RegisterUser(RegisterUserInputModel inputModel)
        {
            Assert.ArgumentNotNull(inputModel, nameof(inputModel));
            Assert.ArgumentNotNullOrEmpty(inputModel.UserName, nameof(inputModel.UserName));
            Assert.ArgumentNotNullOrEmpty(inputModel.Password, nameof(inputModel.Password));
            if (StorefrontContext.Current == null)
            {
                throw new InvalidOperationException("Cannot be called without a valid storefront context.");
            }

            CreateUserResult result;

            // Attempt to register the user
            try
            {
                var request = new CreateUserRequest(inputModel.UserName, inputModel.Password, inputModel.UserName, StorefrontContext.Current.ShopName);
                result = CustomerServiceProvider.CreateUser(request);
                result.WriteToSitecoreLog();

                if (result.Success && result.CommerceUser == null && !result.SystemMessages.Any())
                {
                    // Connect bug:  This is a work around to a Connect bug.  When the user already exists,connect simply aborts the pipeline but
                    // does not set the success flag nor does it return an error message.
                    result.Success = false;
                    result.SystemMessages.Add(new SystemMessage
                    {
                        Message = DictionaryPhraseRepository.Current.Get("/System Messages/Accounts/User Already Exists", "User name already exists. Please enter a different user name.")
                    });
                }
            }
            catch (MembershipCreateUserException e)
            {
                result = new CreateUserResult {
                    Success = false
                };
                result.SystemMessages.Add(new SystemMessage {
                    Message = ErrorCodeToString(e.StatusCode)
                });
            }

            return(new ManagerResponse <CreateUserResult, CommerceUser>(result, result.CommerceUser));
        }
Example #18
0
        /// <summary>
        /// Registers the user.
        /// </summary>
        /// <param name="storefront">The storefront.</param>
        /// <param name="inputModel">The input model.</param>
        /// <returns>
        /// The manager result where the user is returned as the Result.
        /// </returns>
        public virtual ManagerResponse <CreateUserResult, CommerceUser> RegisterUser([NotNull] CommerceStorefront storefront, RegisterUserInputModel inputModel)
        {
            Assert.ArgumentNotNull(storefront, "storefront");
            Assert.ArgumentNotNull(inputModel, "inputModel");
            Assert.ArgumentNotNullOrEmpty(inputModel.UserName, "inputModel.UserName");
            Assert.ArgumentNotNullOrEmpty(inputModel.Password, "inputModel.Password");

            CreateUserResult result;

            // Attempt to register the user
            try
            {
                var request = new CreateUserRequest(inputModel.UserName, inputModel.Password, inputModel.UserName, storefront.ShopName);
                result = this._customerServiceProvider.CreateUser(request);
                //                if (!result.Success)
                //                {
                //                    Helpers.LogSystemMessages(result.SystemMessages, result);
                //                }
                //                else

                if (result.Success && result.CommerceUser == null && result.SystemMessages.Count() == 0)
                {
                    // Connect bug:  This is a work around to a Connect bug.  When the user already exists,connect simply aborts the pipeline but
                    // does not set the success flag nor does it return an error message.
                    result.Success = false;
                    result.SystemMessages.Add(new SystemMessage {
                        Message = StorefrontManager.GetSystemMessage(StorefrontConstants.SystemMessages.UserAlreadyExists)
                    });
                }
            }
            catch (MembershipCreateUserException e)
            {
                result = new CreateUserResult {
                    Success = false
                };
                result.SystemMessages.Add(new Commerce.Services.SystemMessage {
                    Message = ErrorCodeToString(e.StatusCode)
                });
            }

            return(new ManagerResponse <CreateUserResult, CommerceUser>(result, result.CommerceUser));
        }
        public ManagerResponse <CreateUserResult, CommerceUser> CreateUser(string userName, string email, string password, string shopName)
        {
            Assert.ArgumentNotNullOrEmpty(userName, nameof(userName));
            Assert.ArgumentNotNullOrEmpty(email, nameof(email));
            Assert.ArgumentNotNullOrEmpty(password, nameof(password));
            Assert.ArgumentNotNullOrEmpty(shopName, nameof(shopName));

            // Commerce needs domain name to be presented in the user name
            var fullUserName = $"{Constants.CommerceUsersDomainName}\\{userName}";

            var createUserRequest = new CreateUserRequest(fullUserName, password, email, shopName);

            CreateUserResult createUserResult = this.customerServiceProvider.CreateUser(createUserRequest);

            if (!createUserResult.Success || createUserResult.CommerceUser == null)
            {
                Log.Warn("User creation failed", this.GetType());
            }

            return(new ManagerResponse <CreateUserResult, CommerceUser>(createUserResult, createUserResult.CommerceUser));
        }
Example #20
0
        public async Task <CreateUserResult> CreateUserAsync(string userName, string password)
        {
            var user = new IdentityUser
            {
                Email    = userName,
                UserName = userName
            };

            var createUserResult = new CreateUserResult();

            createUserResult.RegisterResult = await userManager.CreateAsync(user, password);

            if (createUserResult.RegisterResult.Succeeded)
            {
                var token = await userManager.GenerateEmailConfirmationTokenAsync(user);

                createUserResult.ConfirmEmailResult = await userManager.ConfirmEmailAsync(user, token);
            }

            return(createUserResult);
        }
Example #21
0
        /// <summary>
        /// Executes the business logic of the CreateUser processor.
        /// </summary>
        /// <param name="args">The args.</param>
        public override void Process(ServicePipelineArgs args)
        {
            Assert.ArgumentNotNull(args, "args");
            CreateUserRequest request = (CreateUserRequest)args.Request;
            CreateUserResult  result  = (CreateUserResult)args.Result;

            using (ICustomersServiceChannel channel = this.GetClient())
            {
                Guid customerId;
                if (!request.Properties.Contains("UserId") || !Guid.TryParse(request.Properties["UserId"].ToString(), out customerId))
                {
                    customerId = Guid.NewGuid();
                }

                CustomerModel customerModel = new CustomerModel
                {
                    CustomerGuid = customerId,
                    FirstName    = request.UserName,
                    LastName     = request.UserName,
                    Company      = request.Shop.Name,
                    Active       = true
                };

                channel.CreateCustomer(customerId, customerModel);
                request.Properties["UserId"] = customerId;

                var commerceUser = this.EntityFactory.Create <CommerceUser>("CommerceUser");
                commerceUser.ExternalId = customerId.ToString();
                commerceUser.UserName   = request.UserName;
                commerceUser.Email      = request.Email;
                commerceUser.Shops      = new ReadOnlyCollection <string>(new List <string> {
                    request.Shop.Name
                });
                commerceUser.CreationDate = DateTime.UtcNow;

                result.CommerceUser = commerceUser;
            }
        }
Example #22
0
        public async Task <XuIdentityResult> Handle(SocialMediaLoginQuery request, CancellationToken cancellationToken)
        {
            XuIdentityResult Result = new XuIdentityResult();

            User userInfo = await _unitOfWork.Users.FirstOrDefaultAsync(u => u.Email == request.Email);

            // If user does not exist
            if (userInfo == null)
            {
                // Create the new user
                CreateUserResult userResult = await _mediator.Send(new CreateUserCommand(new User()
                {
                    Email = request.Email,
                    UserName = request.Name,
                    Avatar = request.PhotoUrl,
                    SocialMediaId = request.Id,
                    Password = Helpers.GenerateUniqueId(),
                    Provider = (AuthProvider)Enum.Parse(typeof(AuthProvider), request.Provider),
                }));

                if (userResult.State != OperationState.Success)
                {
                    return(OperationResult.CopyResult <XuIdentityResult>(userResult));
                }
                // User created successfully
                userInfo = userResult.User;
            }

            // Check user is not suspended
            if (userInfo.AccountSuspended)
            {
                Result.ErrorContent = new ErrorContent("Your Account Has Been Suspended.", ErrorOrigin.Client);
                return(Result);
            }

            return(await _mediator.Send(new GetLogedInUserClaimsQuery(userInfo, false)));
        }
Example #23
0
        public IActionResult CreateUser(FrontUser frontUser)
        {
            CreateUserResult   result             = new CreateUserResult();
            LoginRegisterModel loginRegisterModel = new LoginRegisterModel()
            {
                UserName = frontUser.UserName, Password = frontUser.Password
            };
            FrontCustomer frontCustomer = new FrontCustomer()
            {
                Address = frontUser.Address, Name = frontUser.Name
            };
            var userCreationResult = _marketUoW.UseUserMngmtRepository().CreateUser(loginRegisterModel, "User");

            if (userCreationResult.Success)
            {
                var assignResult = _marketUoW.UseUserMngmtRepository().AssignCustomer(frontCustomer, userCreationResult.UserId).Result;
                if (assignResult.Succeeded)
                {
                    result.Success = true;
                }
                ;
            }
            return(Ok(result));
        }
Example #24
0
        /// <summary>
        /// Creates pending new user and starts confirmation cycle.
        /// </summary>
        public CreateUserResult CreateUser(string lang, string email, string userName, string pass)
        {
            email = email.ToLowerInvariant().Trim();
            // Salt password, hash
            // http://www.c-sharpcorner.com/article/hashing-passwords-in-net-core-with-tips/
            // https://crackstation.net/hashing-security.htm
            string salt = getRandomString();
            string hash = getHash(pass + salt);

            CreateUserResult res = CreateUserResult.OK;
            int count;
            int userId = -1;

            using (MySqlConnection conn = DB.GetConn())
                using (MySqlCommand ins = DB.GetCmd(conn, "InsNewUser"))
                    using (MySqlCommand sel1 = DB.GetCmd(conn, "SelUserByName"))
                        using (MySqlCommand sel2 = DB.GetCmd(conn, "SelUserByEmail"))
                            using (MySqlTransaction trans = conn.BeginTransaction())
                            {
                                ins.Parameters["@email"].Value      = email;
                                ins.Parameters["@user_name"].Value  = userName;
                                ins.Parameters["@pass_hash"].Value  = hash;
                                ins.Parameters["@pass_salt"].Value  = salt;
                                ins.Parameters["@registered"].Value = DateTime.UtcNow;
                                ins.ExecuteNonQuery();
                                userId = (int)ins.LastInsertedId;
                                count  = 0;
                                sel1.Parameters["@user_name"].Value = userName;
                                using (var rdr = sel1.ExecuteReader()) { while (rdr.Read())
                                                                         {
                                                                             ++count;
                                                                         }
                                }
                                if (count > 1)
                                {
                                    res |= CreateUserResult.UserNameExists;
                                }
                                count = 0;
                                sel2.Parameters["@email"].Value = email;
                                using (var rdr = sel2.ExecuteReader()) { while (rdr.Read())
                                                                         {
                                                                             ++count;
                                                                         }
                                }
                                if (count > 1)
                                {
                                    res |= CreateUserResult.EmailExists;
                                }
                                if (res == 0)
                                {
                                    trans.Commit();
                                }
                                else
                                {
                                    trans.Rollback();
                                }
                            }
            if (res != CreateUserResult.OK)
            {
                return(res);
            }
            // User created: store confirmation token; send email
            using (MySqlConnection conn = DB.GetConn())
            {
                DateTime expiry = DateTime.UtcNow;
                expiry = expiry.AddMinutes(60);
                string code = fileConfToken(conn, userId, expiry, null, (int)ConfirmedAction.Register);
                string msg  = pageProvider.GetPage(lang, "?/mail.regconfirm", false).Html;
                string url  = baseUrl + lang + "/user/confirm/" + code;
                msg = string.Format(msg, url);
                string senderName = mut == Mutation.HDD ?
                                    TextProvider.Instance.GetString(lang, "emails.senderNameHDD") :
                                    TextProvider.Instance.GetString(lang, "emails.senderNameCHD");
                emailer.SendMail(email, senderName,
                                 TextProvider.Instance.GetString(lang, "emails.regConfirm"),
                                 msg, true);
            }
            return(res);
        }
Example #25
0
        /*************************************************************************************************/
        public void DisplayCreateNewUserResult(CreateUserResult result, int minimumPasswordLength)
        {
            switch (result)
            {
            case CreateUserResult.UsernameTaken:
                UIHelper.UpdateStatusLabel("Username taken!", createNewUserResultLabel, ErrorLevel.Error);
                break;

            case CreateUserResult.Failed:
                UIHelper.UpdateStatusLabel("Unsuccessful!", createNewUserResultLabel, ErrorLevel.Error);
                break;

            case CreateUserResult.PasswordNotValid:
                UIHelper.UpdateStatusLabel("Password does not meet requirements!", createNewUserResultLabel, ErrorLevel.Error);
                break;

            case CreateUserResult.UsernameNotValid:
                UIHelper.UpdateStatusLabel("Invalid username!", createNewUserResultLabel, ErrorLevel.Error);
                break;

            case CreateUserResult.FirstNameNotValid:
                UIHelper.UpdateStatusLabel("First name not valid!", createNewUserResultLabel, ErrorLevel.Error);
                break;

            case CreateUserResult.LastNameNotValid:
                UIHelper.UpdateStatusLabel("Last name not valid!", createNewUserResultLabel, ErrorLevel.Error);
                break;

            case CreateUserResult.PhoneNumberNotValid:
                UIHelper.UpdateStatusLabel("Phone number not valid!", createNewUserResultLabel, ErrorLevel.Error);
                break;

            case CreateUserResult.EmailNotValid:
                UIHelper.UpdateStatusLabel("Email not valid!", createNewUserResultLabel, ErrorLevel.Error);
                break;

            case CreateUserResult.NoLowerCaseCharacter:
                UIHelper.UpdateStatusLabel("Password must have lower case!", createNewUserResultLabel, ErrorLevel.Error);
                break;

            case CreateUserResult.LengthRequirementNotMet:
                UIHelper.UpdateStatusLabel(string.Format(CultureInfo.CurrentCulture, "Password must have length: {0}!", minimumPasswordLength), createNewUserResultLabel, ErrorLevel.Error);
                break;

            case CreateUserResult.NoNumber:
                UIHelper.UpdateStatusLabel("Password must have number!", createNewUserResultLabel, ErrorLevel.Error);
                break;

            case CreateUserResult.NoSpecialCharacter:
                UIHelper.UpdateStatusLabel("Password must have special character!", createNewUserResultLabel, ErrorLevel.Error);
                break;

            case CreateUserResult.NoUpperCaseCharacter:
                UIHelper.UpdateStatusLabel("Password must have upper case!", createNewUserResultLabel, ErrorLevel.Error);
                break;

            case CreateUserResult.Successful:
                UIHelper.UpdateStatusLabel("Success. Please log in.", createNewUserResultLabel, ErrorLevel.Ok);
                createUsernameTextBox.Text    = "";
                createPasswordTextBox.Text    = "";
                createFirstNameTextBox.Text   = "";
                createLastNameTextBox.Text    = "";
                createEmailTextBox.Text       = "";
                createPhoneNumberTextBox.Text = "";
                break;

            default:
                createNewUserResultLabel.Text      = "Unsuccessful.";
                createNewUserResultLabel.ForeColor = Color.Red;
                break;
            }

            createNewUserResultLabel.Visible = true;
        }
Example #26
0
 /// <summary>
 /// Initializes a new instance of the <see cref="RegisterBaseJsonResult"/> class.
 /// </summary>
 /// <param name="result">The result.</param>
 public RegisterBaseResultApiModel(CreateUserResult result)
     : base(result)
 {
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="RegisterBaseJsonResult"/> class.
 /// </summary>
 /// <param name="result">The result.</param>
 public RegisterBaseJsonResult(CreateUserResult result)
     : base(result)
 {
 }
        /*************************************************************************************************/
        public CreateUserResult CreateNewUser(User user)
        {
            CreateUserResult createUserResult = CreateUserResult.Failed;

            if (user != null)
            {
                User queryResult = _dbcontext.GetUserByUsername(user.Username);

                if (queryResult != null)
                {
                    createUserResult = CreateUserResult.UsernameTaken;
                }
                else
                {
                    UserInformationResult    verifyUser     = VerifyUserInformation(user);
                    ChangeUserPasswordResult verifyPassword = VerifyPasswordRequirements(user.PlainTextPassword);

                    // Verify that username and password pass requirements
                    if (!VerifyUsernameRequirements(user.Username))
                    {
                        createUserResult = CreateUserResult.UsernameNotValid;
                    }
                    else if (verifyPassword != ChangeUserPasswordResult.Success)
                    {
                        switch (verifyPassword)
                        {
                        case ChangeUserPasswordResult.Failed:
                            createUserResult = CreateUserResult.PasswordNotValid;
                            break;

                        case ChangeUserPasswordResult.LengthRequirementNotMet:
                            createUserResult = CreateUserResult.LengthRequirementNotMet;
                            break;

                        case ChangeUserPasswordResult.NoLowerCaseCharacter:
                            createUserResult = CreateUserResult.NoLowerCaseCharacter;
                            break;

                        case ChangeUserPasswordResult.NoNumber:
                            createUserResult = CreateUserResult.NoNumber;
                            break;

                        case ChangeUserPasswordResult.NoSpecialCharacter:
                            createUserResult = CreateUserResult.NoSpecialCharacter;
                            break;

                        case ChangeUserPasswordResult.NoUpperCaseCharacter:
                            createUserResult = CreateUserResult.NoUpperCaseCharacter;
                            break;

                        case ChangeUserPasswordResult.PasswordsDoNotMatch:
                            createUserResult = CreateUserResult.PasswordNotValid;
                            break;

                        default:
                            createUserResult = CreateUserResult.PasswordNotValid;
                            break;
                        }
                    }
                    else if (verifyUser != UserInformationResult.Success)
                    {
                        switch (verifyUser)
                        {
                        case UserInformationResult.InvalidEmail:
                            createUserResult = CreateUserResult.EmailNotValid;
                            break;

                        case UserInformationResult.InvalidFirstName:
                            createUserResult = CreateUserResult.FirstNameNotValid;
                            break;

                        case UserInformationResult.InvalidLastName:
                            createUserResult = CreateUserResult.LastNameNotValid;
                            break;

                        case UserInformationResult.InvalidPhoneNumber:
                            createUserResult = CreateUserResult.PhoneNumberNotValid;
                            break;

                        case UserInformationResult.Failed:
                            createUserResult = CreateUserResult.Failed;
                            break;
                        }
                    }
                    else
                    {
                        createUserResult = CreateUserResult.Successful;
                        UserEncrypedData newEncryptedData = _masterPassword.GenerateNewUserEncryptedDataFromPassword(user.PlainTextPassword);

                        User newUser = new User(
                            newEncryptedData.UniqueGUID,                                                          // Leave unique guid in plaintext
                            _encryptDecrypt.Encrypt(newEncryptedData.RandomGeneratedKey, user.PlainTextPassword), // Encrypt the random key with the users password
                            user.Username,                                                                        // Leave username in plaintext
                            newEncryptedData.Iterations.ToString(CultureInfo.CurrentCulture),                     // Leave iterations in plaintext
                            newEncryptedData.Salt,
                            newEncryptedData.Hash,
                            _encryptDecrypt.Encrypt(user.FirstName, newEncryptedData.RandomGeneratedKey),   // Encrypt with decrypted random key
                            _encryptDecrypt.Encrypt(user.LastName, newEncryptedData.RandomGeneratedKey),    // Encrypt with decrypted random key
                            _encryptDecrypt.Encrypt(user.PhoneNumber, newEncryptedData.RandomGeneratedKey), // Encrypt with decrypted random key
                            _encryptDecrypt.Encrypt(user.Email, newEncryptedData.RandomGeneratedKey)        // Encrypt with decrypted random key
                            );

                        _dbcontext.AddUser(newUser);
                    }
                }
            }

            return(createUserResult);
        }
        /// <summary>
        /// Registers the user.
        /// </summary>
        /// <param name="storefront">The storefront.</param>
        /// <param name="inputModel">The input model.</param>
        /// <returns>
        /// The manager result where the user is returned as the Result.
        /// </returns>
        public virtual ManagerResponse<CreateUserResult, CommerceUser> RegisterUser([NotNull] CommerceStorefront storefront, RegisterUserInputModel inputModel)
        {
            Assert.ArgumentNotNull(storefront, "storefront");
            Assert.ArgumentNotNull(inputModel, "inputModel");
            Assert.ArgumentNotNullOrEmpty(inputModel.UserName, "inputModel.UserName");
            Assert.ArgumentNotNullOrEmpty(inputModel.Password, "inputModel.Password");

            CreateUserResult result;

            // Attempt to register the user
            try
            {
                var request = new CreateUserRequest(inputModel.UserName, inputModel.Password, inputModel.UserName, storefront.ShopName);
                result = this.CustomerServiceProvider.CreateUser(request);
                if (!result.Success)
                {
                    Helpers.LogSystemMessages(result.SystemMessages, result);
                }
                else if (result.Success && result.CommerceUser == null && result.SystemMessages.Count() == 0)
                {
                    // Connect bug:  This is a work around to a Connect bug.  When the user already exists,connect simply aborts the pipeline but
                    // does not set the success flag nor does it return an error message.
                    result.Success = false;
                    result.SystemMessages.Add(new SystemMessage { Message = StorefrontManager.GetSystemMessage("UserAlreadyExists") });
                }
            }
            catch (MembershipCreateUserException e)
            {
                result = new CreateUserResult { Success = false };
                result.SystemMessages.Add(new Commerce.Services.SystemMessage { Message = ErrorCodeToString(e.StatusCode) });
            }

            return new ManagerResponse<CreateUserResult, CommerceUser>(result, result.CommerceUser);
        }
        /// <summary>
        /// Registers the user.
        /// </summary>
        /// <param name="storefront">The storefront.</param>
        /// <param name="inputModel">The input model.</param>
        /// <returns>
        /// The manager result where the user is returned as the Result.
        /// </returns>
        public virtual ManagerResponse<CreateUserResult, CommerceUser> RegisterUser([NotNull] CommerceStorefront storefront, RegisterUserInputModel inputModel)
        {
            Assert.ArgumentNotNull(storefront, "storefront");
            Assert.ArgumentNotNull(inputModel, "inputModel");
            Assert.ArgumentNotNullOrEmpty(inputModel.UserName, "inputModel.UserName");
            Assert.ArgumentNotNullOrEmpty(inputModel.Password, "inputModel.Password");

            CreateUserResult result;

            // Attempt to register the user
            try
            {
                var request = new CreateUserRequest(inputModel.UserName, inputModel.Password, inputModel.UserName, storefront.ShopName);
                result = this.CustomerServiceProvider.CreateUser(request);
                if (!result.Success)
                {
                    Helpers.LogSystemMessages(result.SystemMessages, result);
                }
            }
            catch (MembershipCreateUserException e)
            {
                result = new CreateUserResult { Success = false };
                result.SystemMessages.Add(new Commerce.Services.SystemMessage { Message = ErrorCodeToString(e.StatusCode) });
            }

            return new ManagerResponse<CreateUserResult, CommerceUser>(result, result.CommerceUser);
        }
 /// <summary>
 /// Initializes a new instance of the <see cref="RegisterBaseJsonResult"/> class.
 /// </summary>
 /// <param name="result">The result.</param>
 public RegisterBaseJsonResult(CreateUserResult result)
     : base(result)
 {
 }
Example #32
0
        public IActionResult RegisterManager(LoginRegisterModel user)
        {
            CreateUserResult result = _marketUoW.UseUserMngmtRepository().CreateUser(user, "Manager");

            return(Ok(result));
        }
Example #33
0
        /// <summary>
        /// 创建新用户
        /// </summary>
        /// <param name="User"></param>
        /// <returns>是否成功</returns>
        public CreateUserResult CreateUser(BzureUser User)
        {
            CreateUserResult result = this.Decorator.CreateUser(User);

            return(result);
        }