public void WHEN_passing_empty_email_SHOULD_throw_ArgumentException(string email)
        {
            //Arrange
            var sut = _container.CreateInstance <MembershipViewService>();

            sut.Membership = _container.Get <IMembershipProxy>();
            var param = new CreateUserParam
            {
                Email            = email,
                FirstName        = GetRandom.FirstName(),
                LastName         = GetRandom.LastName(),
                Username         = GetRandom.Email(),
                Password         = GetRandom.String(32),
                PasswordQuestion = GetRandom.String(32),
                PasswordAnswer   = GetRandom.String(32),
                CultureInfo      = TestingExtensions.GetRandomCulture(),
                Scope            = GetRandom.String(32)
            };

            // Act
            var exception = Assert.ThrowsAsync <ArgumentException>(() => sut.RegisterAsync(param));

            //Assert
            exception.Message.Should().Contain("Email");
        }
        /// <summary>
        /// Create a customer account.
        /// </summary>
        /// <param name="createUserParam">Service call params <see cref="CreateUserParam"/></param>
        /// <returns>
        /// The Created in Customer and a status representing a possible cause of errors
        /// </returns>
        public virtual async Task <CreateAccountViewModel> RegisterAsync(CreateUserParam createUserParam)
        {
            if (createUserParam == null)
            {
                throw new ArgumentNullException("createUserParam");
            }
            if (createUserParam.CultureInfo == null)
            {
                throw new ArgumentException("createUserParam.CultureInfo");
            }
            if (string.IsNullOrWhiteSpace(createUserParam.Password))
            {
                throw new ArgumentException("createUserParam.Password");
            }
            if (string.IsNullOrWhiteSpace(createUserParam.FirstName))
            {
                throw new ArgumentException("createUserParam.FirstName");
            }
            if (string.IsNullOrWhiteSpace(createUserParam.LastName))
            {
                throw new ArgumentException("createUserParam.LastName");
            }
            if (string.IsNullOrWhiteSpace(createUserParam.Email))
            {
                throw new ArgumentException("createUserParam.Email");
            }
            if (string.IsNullOrWhiteSpace(createUserParam.Scope))
            {
                throw new ArgumentException("createUserParam.Scope");
            }

            var termsAndConditionsUrl = MyAccountUrlProvider.GetTermsAndConditionsUrl(new BaseUrlParameter {
                CultureInfo = createUserParam.CultureInfo
            });

            var customer = await CustomerRepository.CreateUserAsync(new CreateUserParam
            {
                CustomerId       = Guid.Empty,
                Email            = createUserParam.Email,
                FirstName        = createUserParam.FirstName,
                LastName         = createUserParam.LastName,
                Username         = createUserParam.Username,
                Password         = createUserParam.Password,
                PasswordQuestion = createUserParam.PasswordQuestion,
                PasswordAnswer   = createUserParam.PasswordAnswer,
                CultureInfo      = createUserParam.CultureInfo,
                Scope            = createUserParam.Scope
            }).ConfigureAwait(false);

            return(GetCreateAccountViewModel(new GetCreateAccountViewModelParam
            {
                ReturnUrl = createUserParam.ReturnUrl,
                Status = customer.AccountStatus == AccountStatus.RequiresApproval ? MyAccountStatus.RequiresApproval : MyAccountStatus.Success,
                CultureInfo = createUserParam.CultureInfo,
                Customer = customer,
                TermsAndConditionsUrl = termsAndConditionsUrl
            }));
        }
        public virtual IHttpActionResult Register(RegisterRequest registerRequest)
        {
            //todo:  Captcha for bots or not?!
            if (registerRequest == null)
            {
                return(BadRequest("No body found in the request"));
            }

            var returnUrl = registerRequest.ReturnUrl;

            if (string.IsNullOrWhiteSpace(returnUrl) || !UrlFormatter.IsReturnUrlValid(RequestUtils.GetBaseUrl(Request).ToString(), returnUrl))
            {
                returnUrl = MyAccountUrlProvider.GetMyAccountUrl(new BaseUrlParameter
                {
                    CultureInfo = ComposerContext.CultureInfo
                });
            }

            var registerParam = new CreateUserParam
            {
                Username         = registerRequest.Username,
                Password         = registerRequest.Password,
                Email            = registerRequest.Email,
                FirstName        = registerRequest.FirstName,
                LastName         = registerRequest.LastName,
                PhoneNumber      = registerRequest.PhoneNumber,
                PasswordQuestion = registerRequest.PasswordQuestion,
                PasswordAnswer   = registerRequest.PasswordAnswer,
                ReturnUrl        = returnUrl,
                Scope            = ComposerContext.Scope,
                CultureInfo      = ComposerContext.CultureInfo,
                GuestCustomerId  = ComposerContext.CustomerId
            };

            var createAccountViewModel = MembershipViewService.RegisterAsync(registerParam).Result;

            if (!createAccountViewModel.IsSuccess)
            {
                return(Ok(createAccountViewModel));
            }

            var loginParam = new LoginParam
            {
                CultureInfo     = ComposerContext.CultureInfo,
                Scope           = ComposerContext.Scope,
                GuestCustomerId = ComposerContext.CustomerId,
                Username        = registerRequest.Email,
                Password        = registerRequest.Password
            };

            var loginViewModel = MembershipViewService.LoginAsync(loginParam).Result;

            ComposerContext.IsGuest    = false;
            ComposerContext.CustomerId = createAccountViewModel.CustomerId;
            FormsAuthentication.SetAuthCookie(createAccountViewModel.Username, true, WebsiteContext.WebsiteId.ToString());

            return(Ok(createAccountViewModel));
        }
        /// <summary>
        /// Returns the new user ID or throws an exception containing the error code
        /// The error codes can be found here: https://wiki.secondlife.com/wiki/RegAPIError
        /// </summary>
        /// <param name="user">New user account to create</param>
        /// <returns>The UUID of the new user account</returns>
        public UUID CreateUser(CreateUserParam user)
        {
            if (Initializing)
            {
                throw new InvalidOperationException("still initializing");
            }

            if (_caps.CreateUser == null)
            {
                throw new InvalidOperationException("access denied; only approved developers have access to the registration api");
            }

            // Create the POST data
            var query = new OSDMap
            {
                { "username", OSD.FromString(user.FirstName) },
                { "last_name_id", OSD.FromInteger(user.LastName.ID) },
                { "email", OSD.FromString(user.Email) },
                { "password", OSD.FromString(user.Password) },
                { "dob", OSD.FromString(user.Birthdate.ToString("yyyy-MM-dd")) }
            };

            if (user.LimitedToEstate != null)
            {
                query.Add("limited_to_estate", OSD.FromInteger(user.LimitedToEstate.Value));
            }

            if (!string.IsNullOrEmpty(user.StartRegionName))
            {
                query.Add("start_region_name", OSD.FromInteger(user.LimitedToEstate.Value));
            }

            if (user.StartLocation != null)
            {
                query.Add("start_local_x", OSD.FromReal(user.StartLocation.Value.X));
                query.Add("start_local_y", OSD.FromReal(user.StartLocation.Value.Y));
                query.Add("start_local_z", OSD.FromReal(user.StartLocation.Value.Z));
            }

            if (user.StartLookAt != null)
            {
                query.Add("start_look_at_x", OSD.FromReal(user.StartLookAt.Value.X));
                query.Add("start_look_at_y", OSD.FromReal(user.StartLookAt.Value.Y));
                query.Add("start_look_at_z", OSD.FromReal(user.StartLookAt.Value.Z));
            }

            //byte[] postData = OSDParser.SerializeXmlBytes(query);

            // Make the request
            var request = new CapsClient(_caps.CreateUser);

            request.OnComplete += CreateUserResponse;
            request.BeginGetResponse(REQUEST_TIMEOUT);

            // FIXME: Block
            return(UUID.Zero);
        }
Пример #5
0
            /// <summary>
            /// 创建用户
            /// </summary>
            /// <param name="userInfo">用户信息</param>
            /// <param name="cancellationToken"></param>
            /// <returns></returns>
            public async Task <User> Create(
                CreateUserInput userInfo,
                CancellationToken cancellationToken = default)
            {
                userInfo.Password = client.Encrypt(userInfo.Password);
                var param = new CreateUserParam(userInfo);
                await client.GetAccessToken();

                var res = await client.Request <CreateUserResponse>(param.CreateRequest(), cancellationToken);

                return(res.Result);
            }
Пример #6
0
        /// <summary>
        /// 用户管理界面创建用户
        /// </summary>
        /// <param name="param"></param>
        /// <param name="currentUser"></param>
        /// <returns></returns>
        public async Task <BaseResponseModel> CreateManagerUserAsync(CreateUserParam param, UserCacheBo currentUser)
        {
            var result = new ResponseModel <bool>();

            // 考虑是否验证上传的角色是当前租户下的
            var checkResult = await CheckRoleIds(param.RoleIds, currentUser);

            if (!checkResult.IsNullOrEmpty())
            {
                return(result.Fail(checkResult));
            }

            if (await ExistUserAsync(param.Email))
            {
                result.Fail(ResponseCode.Fail, "该邮箱已存在", false);
                return(result);
            }

            var sysUser = new SysUser()
            {
                NickName             = param.NickName,
                PassWord             = param.Pwd.Md5Encrypt(),
                Email                = param.Email,
                Sex                  = 1,
                State                = 1,
                CreatedTime          = DateTime.Now,
                UpdatedTime          = DateTime.Now,
                TenantId             = currentUser.TenantId,
                UpdatedBy            = 0,
                CreatedBy            = currentUser.UserId,
                SysUserRoleRelations = new List <SysUserRoleRelation>()
            };

            param.RoleIds.ForEach(roleId =>
            {
                sysUser.SysUserRoleRelations.Add(new SysUserRoleRelation()
                {
                    TenantId    = currentUser.TenantId,
                    RoleId      = roleId,
                    State       = 1,
                    CreatedTime = DateTime.Now,
                    CreatedBy   = currentUser.UserId,
                    Deleted     = false,
                });
            });
            SysUserDao.Add(sysUser);
            var count = await SysUserDao.SaveChangesAsync();

            return(count > 0 ? result.Succeed(true) : result.Fail("保存失败", false));
        }
Пример #7
0
        /// <summary>
        /// Create a new Customer
        /// </summary>
        /// <param name="createUserParam">The Repository call params <see cref="CreateUserParam"/></param>
        /// <returns>
        /// The created Customer
        /// </returns>
        public virtual async Task <Customer> CreateUserAsync(CreateUserParam createUserParam)
        {
            if (createUserParam == null)
            {
                throw new ArgumentNullException(nameof(createUserParam));
            }
            if (createUserParam.CultureInfo == null)
            {
                throw new ArgumentException(GetMessageOfNull(nameof(createUserParam.CultureInfo)), nameof(createUserParam));
            }
            if (string.IsNullOrWhiteSpace(createUserParam.Password))
            {
                throw new ArgumentException(GetMessageOfNullWhiteSpace(nameof(createUserParam.Password)), nameof(createUserParam));
            }
            if (string.IsNullOrWhiteSpace(createUserParam.Email))
            {
                throw new ArgumentException(GetMessageOfNullWhiteSpace(nameof(createUserParam.Email)), nameof(createUserParam));
            }
            if (string.IsNullOrWhiteSpace(createUserParam.FirstName))
            {
                throw new ArgumentException(GetMessageOfNullWhiteSpace(nameof(createUserParam.FirstName)), nameof(createUserParam));
            }
            if (string.IsNullOrWhiteSpace(createUserParam.LastName))
            {
                throw new ArgumentException(GetMessageOfNullWhiteSpace(nameof(createUserParam.LastName)), nameof(createUserParam));
            }
            if (string.IsNullOrWhiteSpace(createUserParam.Scope))
            {
                throw new ArgumentException(GetMessageOfNullWhiteSpace(nameof(createUserParam.Scope)), nameof(createUserParam));
            }

            var request = new CreateCustomerMembershipRequest
            {
                Id               = createUserParam.CustomerId,
                Username         = createUserParam.Username,
                Email            = createUserParam.Email,
                FirstName        = createUserParam.FirstName,
                LastName         = createUserParam.LastName,
                Password         = createUserParam.Password,
                PasswordQuestion = createUserParam.PasswordQuestion,
                PasswordAnswer   = createUserParam.PasswordAnswer,
                Language         = createUserParam.CultureInfo.Name,
                ScopeId          = createUserParam.Scope
            };

            var createdCustomer = await OvertureClient.SendAsync(request).ConfigureAwait(false);

            return(createdCustomer);
        }
Пример #8
0
            public async Task <User> Create(
                CreateUserInput userInfo,
                CreateUserOption createUserOption   = null,
                CancellationToken cancellationToken = default)
            {
                userInfo.Password = client.Encrypt(userInfo.Password);
                var param = new CreateUserParam(userInfo)
                {
                    KeepPassword = createUserOption?.KeppPassword,
                    ResetPasswordOnFirstLogin = createUserOption?.ResetPasswordOnFirstLogin,
                    UserInfo = userInfo,
                };

                var res = await client.Request <CreateUserResponse>(param.CreateRequest(), cancellationToken);

                return(res.Result);
            }
        public void WHEN_passing_empty_Scope_SHOULD_throw_ArgumentException(string scope)
        {
            //Arrange
            var customerRepository = _container.CreateInstance <CustomerRepository>();
            var param = new CreateUserParam
            {
                Email            = GetRandom.Email(),
                FirstName        = GetRandom.FirstName(),
                LastName         = GetRandom.LastName(),
                Username         = GetRandom.Email(),
                Password         = GetRandom.String(32),
                PasswordQuestion = GetRandom.String(32),
                PasswordAnswer   = GetRandom.String(32),
                CultureInfo      = TestingExtensions.GetRandomCulture(),
                Scope            = scope
            };

            // Act
            var exception = Assert.ThrowsAsync <ArgumentException>(() => customerRepository.CreateUserAsync(param));

            //Assert
            exception.Message.Should().Contain("Scope");
        }
        /// <summary>
        ///     Returns the new user ID or throws an exception containing the error code
        ///     The error codes can be found here: https://wiki.secondlife.com/wiki/RegAPIError
        /// </summary>
        /// <param name="user">New user account to create</param>
        /// <returns>The UUID of the new user account</returns>
        public UUID CreateUser(CreateUserParam user)
        {
            if (Initializing)
                throw new InvalidOperationException("still initializing");

            if (_caps.CreateUser == null)
                throw new InvalidOperationException("access denied; only approved developers have access to the registration api");

            // Create the POST data
            OSDMap query = new OSDMap();
            query.Add("username", OSD.FromString(user.FirstName));
            query.Add("last_name_id", OSD.FromInteger(user.LastName.ID));
            query.Add("email", OSD.FromString(user.Email));
            query.Add("password", OSD.FromString(user.Password));
            query.Add("dob", OSD.FromString(user.Birthdate.ToString("yyyy-MM-dd")));

            if (user.LimitedToEstate != null)
                query.Add("limited_to_estate", OSD.FromInteger(user.LimitedToEstate.Value));

            if (!string.IsNullOrEmpty(user.StartRegionName))
                query.Add("start_region_name", OSD.FromInteger(user.LimitedToEstate.Value));

            if (user.StartLocation != null)
            {
                query.Add("start_local_x", OSD.FromReal(user.StartLocation.Value.X));
                query.Add("start_local_y", OSD.FromReal(user.StartLocation.Value.Y));
                query.Add("start_local_z", OSD.FromReal(user.StartLocation.Value.Z));
            }

            if (user.StartLookAt != null)
            {
                query.Add("start_look_at_x", OSD.FromReal(user.StartLookAt.Value.X));
                query.Add("start_look_at_y", OSD.FromReal(user.StartLookAt.Value.Y));
                query.Add("start_look_at_z", OSD.FromReal(user.StartLookAt.Value.Z));
            }

            // Make the request
            CapsClient request = new CapsClient(_caps.CreateUser);
            request.OnComplete += new CapsClient.CompleteCallback(CreateUserResponse);
            request.BeginGetResponse(REQUEST_TIMEOUT);

            // FIXME: Block
            return UUID.Zero;
        }
Пример #11
0
        public CreateUserResult CreateUser(CreateUserParam createUserParam)
        {
            var result = _restHelper.Post <CreateUserParam, CreateUserResult>("/api/v1/users.create", createUserParam, _headers);

            return(result);
        }
Пример #12
0
        /// <summary>
        /// Returns the new user ID or throws an exception containing the error code
        /// The error codes can be found here: https://wiki.secondlife.com/wiki/RegAPIError
        /// </summary>
        /// <param name="user">New user account to create</param>
        /// <returns>The UUID of the new user account</returns>
        public LLUUID CreateUser(CreateUserParam user)
        {
            if (Initializing)
                throw new InvalidOperationException("still initializing");

            if (_caps.CreateUser == null)
                throw new InvalidOperationException("access denied; only approved developers have access to the registration api");

            // Create the POST data
            Dictionary<string, object> query = new Dictionary<string, object>();
            query.Add("username", user.FirstName);
            query.Add("last_name_id", user.LastName.ID);
            query.Add("email", user.Email);
            query.Add("password", user.Password);
            query.Add("dob", user.Birthdate.ToString("yyyy-MM-dd"));

            if (user.LimitedToEstate != null)
                query.Add("limited_to_estate", user.LimitedToEstate.Value);

            if (!string.IsNullOrEmpty(user.StartRegionName))
                query.Add("start_region_name", user.LimitedToEstate.Value);

            if (user.StartLocation != null)
            {
                query.Add("start_local_x", user.StartLocation.Value.X);
                query.Add("start_local_y", user.StartLocation.Value.Y);
                query.Add("start_local_z", user.StartLocation.Value.Z);
            }

            if (user.StartLookAt != null)
            {
                query.Add("start_look_at_x", user.StartLookAt.Value.X);
                query.Add("start_look_at_y", user.StartLookAt.Value.Y);
                query.Add("start_look_at_z", user.StartLookAt.Value.Z);
            }

            byte[] postData = LLSDParser.SerializeXmlBytes(query);

            // Make the request
            CapsRequest request = new CapsRequest(_caps.CreateUser.AbsoluteUri, String.Empty, null);
            request.OnCapsResponse += new CapsRequest.CapsResponseCallback(CreateUserResponse);
            request.MakeRequest(postData, "application/xml", 0, null);

            // FIXME: Block
            return LLUUID.Zero;
        }
Пример #13
0
        public async Task <ActionResult> CreateManagerUser(CreateUserParam param)
        {
            var result = await UserBll.CreateManagerUserAsync(param, CurrentUser);

            return(MyJson(result));
        }