public CreateUserStatus CreateUser(RegistrationData user,
            [Required(ErrorMessageResourceName = "ValidationErrorRequiredField", ErrorMessageResourceType = typeof(ValidationErrorResources))]
            [RegularExpression("^.*[^a-zA-Z0-9].*$", ErrorMessageResourceName = "ValidationErrorBadPasswordStrength", ErrorMessageResourceType = typeof(ValidationErrorResources))]
            [StringLength(50, MinimumLength = 7, ErrorMessageResourceName = "ValidationErrorBadPasswordLength", ErrorMessageResourceType = typeof(ValidationErrorResources))]
            string password)
        {
            if (user == null)
            {
                throw new ArgumentNullException("user");
            }

            // Это нужно выполнить ДО создания пользователя, чтобы удостовериться, что нужные роли разрешены и доступна роль по умолчанию.
            //
            // Если возникнет проблема с диспетчером ролей, то лучше выдать ошибку сейчас, чем после создания пользователя.
            if (!Roles.RoleExists(UserRegistrationService.DefaultRole))
            {
                Roles.CreateRole(UserRegistrationService.DefaultRole);
            }

            // ПРИМЕЧАНИЕ. ASP.NET по умолчанию для создания базы данных пользователей использует SQL Server Express.
            // Вызов метода CreateUser завершится ошибкой, если не установлен SQL Server Express.
            MembershipCreateStatus createStatus;
            Membership.CreateUser(user.UserName, password, user.Email, user.Question, user.Answer, true, null, out createStatus);

            if (createStatus != MembershipCreateStatus.Success)
            {
                return UserRegistrationService.ConvertStatus(createStatus);
            }

            // Назначить пользователя ролью по умолчанию.
            // Вызов завершится ошибкой, если отключено управление ролями.
            Roles.AddUserToRole(user.UserName, UserRegistrationService.DefaultRole);

            // Задает понятное имя (параметр профиля).
            // Вызов завершится ошибкой, если неверно настроен web.config.
            ProfileBase profile = ProfileBase.Create(user.UserName, true);
            profile.SetPropertyValue("FriendlyName", user.FriendlyName);
            profile.Save();

            return CreateUserStatus.Success;
        }
Exemple #2
0
 /// <summary>
 /// Асинхронно вызывает метод "CreateUser" службы DomainService.
 /// </summary>
 /// <param name="user">Значение параметра "user" для данного действия.</param>
 /// <param name="password">Значение параметра "password" для данного действия.</param>
 /// <returns>Экземпляр операции, который может быть использован для управления асинхронным запросом.</returns>
 public InvokeOperation<CreateUserStatus> CreateUser(RegistrationData user, [RegularExpression("^.*[^a-zA-Z0-9].*$", ErrorMessageResourceName="ValidationErrorBadPasswordStrength", ErrorMessageResourceType=typeof(ValidationErrorResources))] [Required(ErrorMessageResourceName="ValidationErrorRequiredField", ErrorMessageResourceType=typeof(ValidationErrorResources))] [StringLength(50, ErrorMessageResourceName="ValidationErrorBadPasswordLength", ErrorMessageResourceType=typeof(ValidationErrorResources), MinimumLength=7)] string password)
 {
     Dictionary<string, object> parameters = new Dictionary<string, object>();
     parameters.Add("user", user);
     parameters.Add("password", password);
     this.ValidateMethod("CreateUser", parameters);
     return ((InvokeOperation<CreateUserStatus>)(this.InvokeOperation("CreateUser", typeof(CreateUserStatus), parameters, true, null, null)));
 }