Ejemplo n.º 1
0
        public MembershipCreateStatus CreateUser(string userName, string password, string email)
        {
            if (String.IsNullOrEmpty(userName))
            {
                throw new ArgumentException("El valor no puede ser NULL ni estar vacío.", "userName");
            }
            if (String.IsNullOrEmpty(password))
            {
                throw new ArgumentException("El valor no puede ser NULL ni estar vacío.", "password");
            }
            if (String.IsNullOrEmpty(email))
            {
                throw new ArgumentException("El valor no puede ser NULL ni estar vacío.", "email");
            }

            MembershipCreateStatus status;

            _provider.CreateUser(userName, password, email, null, null, true, null, out status);
            return(status);
        }
Ejemplo n.º 2
0
        public MembershipCreateStatus CreateUser(string userName, string password, string email)
        {
            if (String.IsNullOrEmpty(userName))
            {
                throw new ArgumentException("Значение не может быть неопределенным (null) или пустым.", "userName");
            }
            if (String.IsNullOrEmpty(password))
            {
                throw new ArgumentException("Значение не может быть неопределенным (null) или пустым.", "password");
            }
            if (String.IsNullOrEmpty(email))
            {
                throw new ArgumentException("Значение не может быть неопределенным (null) или пустым.", "email");
            }

            MembershipCreateStatus status;

            _provider.CreateUser(userName, password, email, null, null, true, null, out status);
            return(status);
        }
Ejemplo n.º 3
0
        public MembershipCreateStatus CreateUser(string userName, string password, string email)
        {
            if (String.IsNullOrEmpty(userName))
            {
                throw new ArgumentException(Resources.Account.NotEmptyFieldValidation /*"Поле не может быть пустым."*/, "userName");
            }
            if (String.IsNullOrEmpty(password))
            {
                throw new ArgumentException(Resources.Account.NotEmptyFieldValidation /*"Поле не может быть пустым."*/, "password");
            }
            if (String.IsNullOrEmpty(email))
            {
                throw new ArgumentException(Resources.Account.NotEmptyFieldValidation /*"Поле не может быть пустым."*/, "email");
            }

            MembershipCreateStatus status;

            _provider.CreateUser(userName, password, email, null, null, true, null, out status);
            return(status);
        }
Ejemplo n.º 4
0
        public MembershipCreateStatus CreateUser(string userName, string password, string email)
        {
            if (String.IsNullOrEmpty(userName))
            {
                throw new ArgumentException("Value cannot be null or empty.", "userName");
            }
            if (String.IsNullOrEmpty(password))
            {
                throw new ArgumentException("Value cannot be null or empty.", "password");
            }
            if (String.IsNullOrEmpty(email))
            {
                throw new ArgumentException("Value cannot be null or empty.", "email");
            }

            MembershipCreateStatus status;

            _provider.CreateUser(userName, password, email, null, null, true, null, out status);
            return(status);
        }
Ejemplo n.º 5
0
        public MembershipCreateStatus CreateUser(string userName, string password, string email)
        {
            if (String.IsNullOrEmpty(userName))
            {
                throw new ArgumentException("Der Wert darf nicht NULL oder leer sein.", "userName");
            }
            if (String.IsNullOrEmpty(password))
            {
                throw new ArgumentException("Der Wert darf nicht NULL oder leer sein.", "password");
            }
            if (String.IsNullOrEmpty(email))
            {
                throw new ArgumentException("Der Wert darf nicht NULL oder leer sein.", "email");
            }

            MembershipCreateStatus status;

            _provider.CreateUser(userName, password, email, null, null, true, null, out status);
            return(status);
        }
Ejemplo n.º 6
0
        public void Register_ValidUser_ShouldTrackRegistraionEvents(FakeMembershipUser user, [Substitute] MembershipProvider membershipProvider, [Substitute] AuthenticationProvider authenticationProvider, RegistrationInfo registrationInfo, [Frozen] IAccountTrackerService accountTrackerService, AccountRepository repository, string profileId)
        {
            user.UserName.Returns("name");
            MembershipCreateStatus status;

            membershipProvider.CreateUser(Arg.Any <string>(), Arg.Any <string>(), Arg.Any <string>(), Arg.Any <string>(), Arg.Any <string>(), Arg.Any <bool>(), Arg.Any <object>(), out status).Returns(user);
            membershipProvider.GetUser(Arg.Any <string>(), Arg.Any <bool>()).Returns(user);

            using (new Switcher <Domain, Domain>(new Domain("somedomain")))
            {
                using (new MembershipSwitcher(membershipProvider))
                {
                    using (new AuthenticationSwitcher(authenticationProvider))
                    {
                        repository.RegisterUser(registrationInfo.Email, registrationInfo.Password, profileId);
                        accountTrackerService.Received(1).TrackRegistration();
                    }
                }
            }
        }
Ejemplo n.º 7
0
        private void GetPasswordHelper(bool requireQA, bool enablePasswordRetrieval, string answer)
        {
            MembershipCreateStatus status;

            provider = new MembershipProvider();
            NameValueCollection config = new NameValueCollection();

            config.Add("connectionStringName", _connStrName);
            config.Add("requiresQuestionAndAnswer", requireQA ? "true" : "false");
            config.Add("enablePasswordRetrieval", enablePasswordRetrieval ? "true" : "false");
            config.Add("passwordFormat", "clear");
            config.Add("applicationName", _applicationName);
            config.Add("writeExceptionsToEventLog", "false");
            provider.Initialize(null, config);

            provider.CreateUser("foo", "barbar!", "*****@*****.**", "color", "blue", true, null, out status);

            try
            {
                string password = provider.GetPassword("foo", answer);
                if (!enablePasswordRetrieval)
                {
                    Assert.Fail("This should have thrown an exception");
                }
                Assert.AreEqual("barbar!", password);
            }
            catch (MembershipPasswordException)
            {
                if (requireQA && answer != null)
                {
                    Assert.Fail("This should not have thrown an exception");
                }
            }
            catch (ProviderException)
            {
                if (requireQA && answer != null)
                {
                    Assert.Fail("This should not have thrown an exception");
                }
            }
        }
Ejemplo n.º 8
0
        public ActionResult Register(RegisterModel model)
        {
            try
            {
                if (ModelState.IsValid && CheckUser(model.UserName))
                {
                    // 注册
                    var user = InitUser(model);
                    _memberProvider.CreateUser(user);

                    // 生成头像
                    new UserService().SaveAvatar(user.UserName);

                    // 登录
                    var loginModel = new LoginModel
                    {
                        UserName = model.UserName,
                        Password = model.Password
                    };

                    var loginSuccess = Login(loginModel);

                    if (loginSuccess)
                    {
                        return(Redirect("/"));
                    }
                    else
                    {
                        return(RedirectToAction("Login", "Account"));
                    }
                }
            }
            catch (Exception ex)
            {
                ModelState.AddModelError("", MessageConst.System_Error);

                _logger.Info(ex);
            }

            return(View(model));
        }
        public void RegisterUser_ValidData_ShouldCreateLoginUser(FakeMembershipUser user, [Substitute] MembershipProvider membershipProvider, [Substitute] AuthenticationProvider authenticationProvider, RegistrationInfo registrationInfo, AccountRepository repository, string profileId)
        {
            user.ProviderName.Returns("fake");
            user.UserName.Returns("name");
            MembershipCreateStatus status;

            membershipProvider.CreateUser(Arg.Any <string>(), Arg.Any <string>(), Arg.Any <string>(), Arg.Any <string>(), Arg.Any <string>(), Arg.Any <bool>(), Arg.Any <object>(), out status).Returns(user);
            membershipProvider.GetUser(Arg.Any <string>(), Arg.Any <bool>()).Returns(user);

            using (new Switcher <Domain, Domain>(new Domain("somedomain")))
            {
                using (new MembershipSwitcher(membershipProvider))
                {
                    using (new AuthenticationSwitcher(authenticationProvider))
                    {
                        repository.RegisterUser(registrationInfo.Email, registrationInfo.Password, profileId);
                        authenticationProvider.Received(1).Login(Arg.Is <string>(u => u == $@"somedomain\{registrationInfo.Email}"), Arg.Is <string>(p => p == registrationInfo.Password), Arg.Any <bool>());
                    }
                }
            }
        }
Ejemplo n.º 10
0
        internal static void CreateUserRecords(MembershipProvider provider)
        {
            Users = new List <UserCreateStub>();
            int totalRecords;
            MembershipUserCollection users = provider.GetAllUsers(0, int.MaxValue - 1, out totalRecords);

            foreach (MembershipUser user in users)
            {
                if (
                    (user.UserName != null && user.UserName.ToLower().Contains("test_")) ||
                    (user.Email != null && user.Email.ToLower().Contains("test_")) ||
                    (user.PasswordQuestion != null && user.PasswordQuestion.ToLower().Contains("test_")))
                {
                    provider.DeleteUser(user.UserName, true);
                }
            }

            for (int x = 0; x < 50; x++)
            {
                string username    = "******" + x.ToString("000");
                string email       = "TEST_EMAIL_" + x.ToString("000") + "@test.com";
                string question    = "TEST_QUESTION:" + x.ToString("000");
                string answer      = "TEST_ANSWER:" + x.ToString("000");
                string password    = "******" + x.ToString("000");
                bool   isActive    = (x % 2) == 0; //only even numbers are active
                Guid   providerKey = Guid.NewGuid();
                MembershipCreateStatus status;

                var response = provider.CreateUser(username, password, email, question, answer, isActive, providerKey, out status);
                response.IsApproved = x != 19;
                response.Comment    = "";
                provider.UpdateUser(response);
                if (x != 19)
                {
                    provider.UnlockUser(username);  //record 19 is in 'Locked' status
                }
                Assert.AreEqual <MembershipCreateStatus>(MembershipCreateStatus.Success, status);
                Users.Add(new UserCreateStub(username, email, password, question, answer, response.IsApproved, providerKey, provider.Name));
            }
        }
Ejemplo n.º 11
0
        public ActionResult Register(RegisterModel model)
        {
            try
            {
                if (ModelState.IsValid && CheckUser(model.UserName))
                {
                    var user = InitUser(model);
                    _memberProvider.CreateUser(user);
                    System.Web.Security.FormsAuthentication.SetAuthCookie(user.UserName, false);

                    return(RedirectToAction("Index", "Home"));
                }
            }
            catch (Exception ex)
            {
                ModelState.AddModelError("", MessageConst.System_Error);

                _logger.Info(ex.Message);
            }

            return(View(model));
        }
        public MembershipCreateStatus CreateUser(string userName, string password, string email, string role)
        {
            if (String.IsNullOrEmpty(userName))
            {
                throw new ArgumentException(LanguageResource.NoNulls, "userName");
            }
            if (String.IsNullOrEmpty(password))
            {
                throw new ArgumentException(LanguageResource.NoNulls, "password");
            }
            //           if (String.IsNullOrEmpty(email)) throw new ArgumentException(LanguageResource.NoNulls, "email");
            if (String.IsNullOrEmpty(role))
            {
                throw new ArgumentException(LanguageResource.NoNulls, "role");
            }

            MembershipCreateStatus status;

            _provider.CreateUser(userName, password, email, null, null, true, null, out status);
            Roles.AddUserToRole(userName, role);
            return(status);
        }
        public MembershipCreateStatus CreateUser(string userName, string password, string email)
        {
            if (String.IsNullOrEmpty(userName))
            {
                throw new ArgumentException(Resources.Resource.SharedExeptionNullOrEmpty, "userName");
            }

            if (String.IsNullOrEmpty(password))
            {
                throw new ArgumentException(Resources.Resource.SharedExeptionNullOrEmpty, "password");
            }

            if (String.IsNullOrEmpty(email))
            {
                throw new ArgumentException(Resources.Resource.SharedExeptionNullOrEmpty, "email");
            }

            MembershipCreateStatus status;

            _provider.CreateUser(userName, password, email, null, null, true, null, out status);
            return(status);
        }
Ejemplo n.º 14
0
        public MembershipCreateStatus CreateUser(string userName, string password, string email, String empname)
        {
            if (String.IsNullOrEmpty(userName))
            {
                throw new ArgumentException("Value cannot be null or empty.", "userName");
            }
            if (String.IsNullOrEmpty(password))
            {
                throw new ArgumentException("Value cannot be null or empty.", "password");
            }
            if (String.IsNullOrEmpty(email))
            {
                throw new ArgumentException("Value cannot be null or empty.", "email");
            }

            MembershipCreateStatus status = new MembershipCreateStatus();

            try
            {
                using (TransactionScope scope = new TransactionScope())
                {
                    _provider.CreateUser(userName, password, email, null, null, true, null, out status);
                    var emp = new tbEmp();
                    emp.EmpID   = userName;
                    emp.Email   = email;
                    emp.EmpName = empname;
                    _dataContext.tbEmps.InsertOnSubmit(emp);
                    _dataContext.SubmitChanges();
                    scope.Complete();
                }
            }
            catch (Exception e)
            {
            }
            finally
            {
            }
            return(status);
        }
Ejemplo n.º 15
0
        public void CreateUser(UserSignUpInfo signUpInfo)
        {
            MembershipCreateStatus status;
            var user = provider.CreateUser(
                signUpInfo.Credentials.UserName,
                signUpInfo.Credentials.Password,
                signUpInfo.Info.Email,
                signUpInfo.Question.DisplayName,
                signUpInfo.Answer, true, null, out status);

            if (status != MembershipCreateStatus.Success)
            {
                throw new RepositoryFailureException(MembershipCreateStatusHelper.ErrorCodeToString(status));
            }

            var staff = new Entities.Staff()
            {
                DisplayName = signUpInfo.Info.DisplayName,
                UserId      = (Guid)user.ProviderUserKey,
                StaffType   = 'T'
            };

            context.Staffs.InsertOnSubmit(staff);
        }
Ejemplo n.º 16
0
        public string Process(string[] args)
        {
            var sb = new StringBuilder();

            var p = new OptionSet()
            {
                { "c|create", "create a user\nUSAGE: user --create username password email",
                  v => _command = Command.Create },
                { "d|delete", "delete a user\nUSAGE: user --delete username",
                  v => _command = Command.Delete },
                { "l|list", "return a list of users",
                  v => _command = Command.List },
                { "r|reset", "reset a password\nUSAGE: user --reset username [answer]",
                  v => _command = Command.Reset },
                { "f|find=", "find a user by username or email\nUSAGE: user --find=[name|email] query",
                  v => { if (v == "email")
                         {
                             _command = Command.FindEmail;
                         }
                         else
                         {
                             _command = Command.FindName;
                         } } },
                { "u|unlock", "unlock a user\nUSAGE: user --unlock username",
                  v => _command = Command.Unlock },
                { "o|online", "get number of online users\n USAGE:user --online",
                  v => _command = Command.Online },
                { "i|install", "applies the sql membership schema to the given database",
                  v => _command = Command.Install },
                { "h|help", "show this list of options",
                  v => _command = null }
            };

            List <string> extras;

            try
            {
                extras = p.Parse(args);
            }
            catch (OptionException e)
            {
                sb.Append("user: "******"Try `user --help' for more information.");
                return(sb.ToString());
            }

            // perform the selected command
            if (_command == Command.Create)
            {
                if (extras.Count == 3)
                {
                    MembershipCreateStatus status;
                    _provider.CreateUser(extras[0], extras[1], extras[2], "question", "anthony_rulz_da_skool", true, Guid.NewGuid(), out status);

                    if (status == MembershipCreateStatus.Success)
                    {
                        sb.AppendFormat("User successfully created: {0}", extras[0]);
                        sb.AppendLine();
                    }
                    else
                    {
                        throw new ApplicationException(string.Format("Error: {0}", status.ToString()));
                    }
                }
                else
                {
                    sb.AppendLine("USAGE: user --create username password email");
                }
            }
            else if (_command == Command.Delete)
            {
                if (extras.Count == 1)
                {
                    var success = _provider.DeleteUser(extras[0], true);

                    if (success)
                    {
                        sb.AppendLine("User successfully deleted");
                    }
                    else
                    {
                        throw new ApplicationException(string.Format("Could not delete user: {0}", extras[0]));
                    }
                }
                else
                {
                    sb.AppendLine("USAGE: user --delete username");
                }
            }
            else if (_command == Command.List)
            {
                var users = System.Web.Security.Membership.GetAllUsers();

                if (users.Count > 0)
                {
                    foreach (System.Web.Security.MembershipUser u in users)
                    {
                        sb.AppendFormat("{0} {1}", u.UserName.PadRight(20, ' '), u.Email);
                        sb.AppendLine();
                    }
                }
                else
                {
                    sb.AppendLine("No users found");
                }
            }
            else if (_command == Command.FindEmail)
            {
                if (extras.Count == 1)
                {
                    int totalRecords;
                    var users = _provider.FindUsersByEmail("%" + extras[0] + "%", 0, 100, out totalRecords);

                    if (users.Count > 0)
                    {
                        sb.AppendFormat("{0} users found. query: {1}", totalRecords, extras[0]);
                        sb.AppendLine();

                        foreach (System.Web.Security.MembershipUser u in users)
                        {
                            sb.AppendFormat("{0} {1}", u.UserName.PadRight(20, ' '), u.Email);
                            sb.AppendLine();
                        }
                    }
                    else
                    {
                        sb.AppendFormat("No users found. query: {0}", extras[0]);
                        sb.AppendLine();
                    }
                }
                else
                {
                    sb.AppendLine("USAGE: user --find=email emailaddress");
                }
            }
            else if (_command == Command.FindName)
            {
                if (extras.Count == 1)
                {
                    int totalRecords;
                    var users = _provider.FindUsersByName("%" + extras[0] + "%", 0, 100, out totalRecords);

                    if (users.Count > 0)
                    {
                        sb.AppendFormat("{0} users found. query: {1}", totalRecords, extras[0]);
                        sb.AppendLine();

                        foreach (System.Web.Security.MembershipUser u in users)
                        {
                            sb.AppendFormat("{0} {1}", u.UserName.PadRight(20, ' '), u.Email);
                            sb.AppendLine();
                        }
                    }
                    else
                    {
                        sb.AppendFormat("No users found. query: {0}", extras[0]);
                        sb.AppendLine();
                    }
                }
                else
                {
                    sb.AppendLine("USAGE: user --find=name");
                }
            }
            else if (_command == Command.Online)
            {
                int online = _provider.GetNumberOfUsersOnline();
                if (online == 1)
                {
                    sb.Append("There is currently 1 user online");
                }
                else
                {
                    sb.AppendFormat("There are currently {0} users online", online);
                }
                sb.AppendLine();
            }
            else if (_command == Command.Reset)
            {
                if (extras.Count >= 1 && extras.Count <= 2)
                {
                    string answer = "";
                    if (extras.Count == 2)
                    {
                        answer = extras[1];
                    }

                    var result = _provider.ResetPassword(extras[0], answer);
                    if (!string.IsNullOrEmpty(result))
                    {
                        sb.AppendFormat("Password successfully reset.\nNew Password: {0}", result);
                        sb.AppendLine();
                    }
                }
                else
                {
                    sb.AppendLine("USAGE: user --reset username [answer]");
                }
            }
            else if (_command == Command.Unlock)
            {
                if (extras.Count == 1)
                {
                    var success = _provider.UnlockUser(extras[0]);
                    if (success)
                    {
                        sb.AppendLine("User successfully unlocked");
                    }
                    else
                    {
                        sb.AppendFormat("Could not unlock user: {0}", extras[0]);
                        sb.AppendLine();
                    }
                }
                else
                {
                    sb.AppendLine("USAGE: user --unlock username");
                }
            }
            else if (_command == Command.Install)
            {
                if (extras.Count == 1)
                {
                    try
                    {
                        sb.AppendLine(InstallMembershipSchema(extras[0]));
                    }
                    catch (Exception ex)
                    {
                        throw new ApplicationException(string.Format("Error: {0}", ex.Message));
                    }
                }
                else
                {
                    sb.AppendLine("USAGE: user --install connectionStringName");
                }
            }
            else
            {
                sb.AppendLine(ShowHelp(p));
            }

            return(sb.ToString());
        }
Ejemplo n.º 17
0
        public TUserType Create(TUserType user, out MembershipCreateStatus status)
        {
            //TODO: Could do with making this transactional somehow?

            // Create the uer
            var membershipUser = MembershipProvider.CreateUser(user.Username,
                                                               user.Password,
                                                               user.Email,
                                                               user.PasswordQuestion,
                                                               user.PasswordAnswer,
                                                               user.IsApproved,
                                                               user.ProviderUserKey,
                                                               out status);

            if (status != MembershipCreateStatus.Success)
            {
                return(user);
            }

            user.ProviderUserKey = membershipUser.ProviderUserKey;

            // Create the profile
            var profile = new TProfileType();

            // Set up the new profile with the same schema as the user so it has any inherited properties
            profile.SetupFromSchema(user.EntitySchema);

            if (MembershipProviderConfig != null)
            {
                profile.SetProviderUserKeyType(MembershipProviderConfig.ProviderUserKeyType);
            }

            // Map the user to the profile now
            _frameworkContext.TypeMappers.Map(user, profile);

            var hive = _hiveManager.GetWriter <ISecurityStore>(new Uri(_profileProviderMappingRoot));

            using (var uow = hive.Create())
            {
                uow.Repositories.AddOrUpdate(profile);

                uow.Repositories.AddRelation(_profileVirtualRootId, profile.Id, FixedRelationTypes.DefaultRelationType, 0);

                uow.Complete();
            }

            // Assign user to groups
            var groupHive = _hiveManager.GetWriter <ISecurityStore>(new Uri(_groupsProviderMappingRoot));

            using (var uow = groupHive.Create())
            {
                if (user.Groups != null)
                {
                    foreach (var groupId in user.Groups)
                    {
                        uow.Repositories.AddRelation(new Relation(FixedRelationTypes.UserGroupRelationType, groupId, profile.Id));
                    }
                }

                uow.Complete();
            }

            //NOTE: This causes another hit to the db but I do it to ensure all profile props are set
            return(ConvertToMergedEntity(membershipUser));
        }
Ejemplo n.º 18
0
        private void CreateUser(string userName, string psw, string email, bool approved)
        {
            MembershipCreateStatus mcp;

            mp.CreateUser(userName, psw, email, "", "", true, "", out mcp);
        }
 public override MembershipUser CreateUser(string username, string password, string email, string passwordQuestion, string passwordAnswer, bool isApproved, object providerUserKey, out MembershipCreateStatus status)
 {
     IsValidOperation(false);
     return(_prevProvider.CreateUser(username, password, email, passwordQuestion, passwordAnswer, isApproved, providerUserKey, out status));
 }
Ejemplo n.º 20
0
 /// <summary>
 /// Adds a new membership user to the data source.
 /// </summary>
 /// <returns>
 /// A <see cref="T:System.Web.Security.MembershipUser"/> object populated with the information for the newly created user.
 /// </returns>
 /// <param name="username">The user name for the new user. </param><param name="password">The password for the new user. </param><param name="email">The e-mail address for the new user.</param><param name="passwordQuestion">The password question for the new user.</param><param name="passwordAnswer">The password answer for the new user</param><param name="isApproved">Whether or not the new user is approved to be validated.</param><param name="providerUserKey">The unique identifier from the membership data source for the user.</param><param name="status">A <see cref="T:System.Web.Security.MembershipCreateStatus"/> enumeration value indicating whether the user was created successfully.</param>
 public MembershipUser CreateUser(string username, string password, string email, string passwordQuestion, string passwordAnswer, bool isApproved, object providerUserKey, out MembershipCreateStatus status)
 {
     return(_provider.CreateUser(username, password, email, passwordQuestion, passwordAnswer, isApproved, providerUserKey, out status));
 }
Ejemplo n.º 21
0
        public string Signup(AccountSignup data)
        {
            if (string.IsNullOrWhiteSpace(data.Firstname))
            {
                return("First name is required");
            }
            if (string.IsNullOrWhiteSpace(data.Lastname))
            {
                return("Last name is required");
            }

            if (string.IsNullOrWhiteSpace(data.Email))
            {
                return("Email is required");
            }
            if (!Regex.IsMatch(data.Email, @"^\S+@\S+\.\S+$"))
            {
                return("Unrecognized email address");
            }

            if (data.BirthDate > DateTime.Today.AddYears(-14))
            {
                return("Applicants must be 14 years or older");
            }
            if (data.BirthDate < DateTime.Today.AddYears(-120))
            {
                return("Invalid birthdate");
            }

            if (!(new[] { "m", "f", null }.Contains(data.Gender)))
            {
                return("Invalid gender");
            }

            if (data.Units.Length == 0)
            {
                return("Must select at least one unit");
            }

            if (string.IsNullOrWhiteSpace(data.Username))
            {
                return("Username is required");
            }
            if (data.Username.Length < 3)
            {
                return("Username must be 3 or more characters");
            }
            if (data.Username.Length > 200)
            {
                return("Username must be less than 200 characters");
            }
            if (!Regex.IsMatch(data.Username, @"^[a-zA-Z0-9\.\-_]+$"))
            {
                return("Username can only contain numbers, letters, and the characters '.', '-', and '_'");
            }
            if (membership.GetUser(data.Username, false) != null)
            {
                return("Username is already taken");
            }


            if (string.IsNullOrWhiteSpace(data.Password))
            {
                return("Password is required");
            }
            if (data.Password.Length < 6)
            {
                return("Password must be at least 6 characters");
            }
            if (data.Password.Length > 64)
            {
                return("Password must be less than 64 characters");
            }


            MembershipCreateStatus status;
            var user = membership.CreateUser(data.Username, data.Password, data.Email, null, null, false, null, out status);

            if (status != MembershipCreateStatus.Success)
            {
                return("Could not create user");
            }

            try
            {
                System.Web.Security.FormsAuthenticationTicket ticket = new System.Web.Security.FormsAuthenticationTicket(data.Username, false, 5);
                Thread.CurrentPrincipal = new System.Web.Security.RolePrincipal(new System.Web.Security.FormsIdentity(ticket));

                Member newMember = new Member
                {
                    FirstName      = data.Firstname,
                    MiddleName     = data.Middlename,
                    LastName       = data.Lastname,
                    BirthDate      = data.BirthDate,
                    InternalGender = data.Gender,
                    Status         = MemberStatus.Applicant,
                    Username       = data.Username
                };
                db.Members.Add(newMember);

                PersonContact email = new PersonContact
                {
                    Person   = newMember,
                    Type     = "email",
                    Value    = data.Email,
                    Priority = 0
                };
                db.PersonContact.Add(email);

                foreach (Guid unitId in data.Units)
                {
                    UnitsController.RegisterApplication(db, unitId, newMember);
                }

                SarMembership.KcsarUserProfile profile = ProfileBase.Create(data.Username) as SarMembership.KcsarUserProfile;
                if (profile != null)
                {
                    profile.FirstName = data.Firstname;
                    profile.LastName  = data.Lastname;
                    profile.LinkKey   = newMember.Id.ToString();
                    profile.Save();
                }

                if (!System.Web.Security.Roles.RoleExists(APPLICANT_ROLE))
                {
                    System.Web.Security.Roles.CreateRole(APPLICANT_ROLE);
                }
                System.Web.Security.Roles.AddUserToRole(data.Username, APPLICANT_ROLE);

                string mailSubject  = string.Format("{0} account verification", ConfigurationManager.AppSettings["dbNameShort"] ?? "KCSARA");
                string mailTemplate = File.ReadAllText(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Templates", "Email", "new-account-verification.html"));
                string mailBody     = mailTemplate
                                      .Replace("%Username%", data.Username)
                                      .Replace("%VerifyLink%", new Uri(this.Request.RequestUri, Url.Route("Default", new { httproute = "", controller = "Account", action = "Verify", id = data.Username })).AbsoluteUri + "?key=" + user.ProviderUserKey.ToString())
                                      .Replace("%WebsiteContact%", "*****@*****.**");

                db.SaveChanges();
                EmailService.SendMail(data.Email, mailSubject, mailBody);
            }
            catch (Exception ex)
            {
                log.Error(ex.ToString());
                membership.DeleteUser(data.Username, true);
                return("An error occured while creating your user account");
            }

            return("OK");
        }
Ejemplo n.º 22
0
        private string AddNewMember(AccountRegistration data, Func <Member> memberCallback, string noticeTemplate)
        {
            if (string.IsNullOrWhiteSpace(data.Email))
            {
                return("Email is required");
            }
            if (!Regex.IsMatch(data.Email, @"^\S+@\S+\.\S+$"))
            {
                return("Unrecognized email address");
            }


            if (string.IsNullOrWhiteSpace(data.Username))
            {
                return("Username is required");
            }
            if (data.Username.Length < 3)
            {
                return("Username must be 3 or more characters");
            }
            if (data.Username.Length > 200)
            {
                return("Username must be less than 200 characters");
            }
            if (!Regex.IsMatch(data.Username, @"^[a-zA-Z0-9\.\-_]+$"))
            {
                return("Username can only contain numbers, letters, and the characters '.', '-', and '_'");
            }
            if (membership.GetUser(data.Username, false) != null)
            {
                return("Username is already taken");
            }


            if (string.IsNullOrWhiteSpace(data.Password))
            {
                return("Password is required");
            }
            if (data.Password.Length < 6)
            {
                return("Password must be at least 6 characters");
            }
            if (data.Password.Length > 64)
            {
                return("Password must be less than 64 characters");
            }


            MembershipCreateStatus status;
            var user = membership.CreateUser(data.Username, data.Password, data.Email, null, null, false, null, out status);

            if (status != MembershipCreateStatus.Success)
            {
                return("Could not create user");
            }

            try
            {
                System.Web.Security.FormsAuthenticationTicket ticket = new System.Web.Security.FormsAuthenticationTicket(data.Username, false, 5);
                Thread.CurrentPrincipal = new System.Web.Security.RolePrincipal(new System.Web.Security.FormsIdentity(ticket));

                var member = memberCallback();

                SarMembership.KcsarUserProfile profile = ProfileBase.Create(data.Username) as SarMembership.KcsarUserProfile;
                if (profile != null)
                {
                    profile.FirstName = member.FirstName;
                    profile.LastName  = member.LastName;
                    profile.LinkKey   = member.Id.ToString();
                    profile.Save();
                }

                string mailSubject  = string.Format("{0} account verification", ConfigurationManager.AppSettings["dbNameShort"] ?? "KCSARA");
                string mailTemplate = File.ReadAllText(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Templates", "Email", noticeTemplate));
                string mailBody     = mailTemplate
                                      .Replace("%Username%", data.Username)
                                      .Replace("%VerifyLink%", new Uri(this.Request.RequestUri, Url.Route("Default", new { httproute = "", controller = "Account", action = "Verify", id = data.Username })).AbsoluteUri + "?key=" + user.ProviderUserKey.ToString())
                                      .Replace("%WebsiteContact%", ConfigurationManager.AppSettings["MailFrom"] ?? "*****@*****.**");

                db.SaveChanges();
                EmailService.SendMail(data.Email, mailSubject, mailBody);
            }
            catch (Exception ex)
            {
                log.Error(ex.ToString());
                membership.DeleteUser(data.Username, true);
                return("An error occured while creating your user account");
            }

            return("OK");
        }
Ejemplo n.º 23
0
        private void CreateUserWithFormat(MembershipPasswordFormat format)
        {
            NameValueCollection config = new NameValueCollection();

            config.Add("connectionStringName", _connStrName);
            config.Add("applicationName", _applicationName);
            config.Add("passwordStrengthRegularExpression", "bar.*");
            config.Add("passwordFormat", format.ToString());
            provider.Initialize(null, config);

            // create the user
            MembershipCreateStatus status;

            provider.CreateUser("foo", "barbar!", "*****@*****.**", null, null, true, null, out status);
            Assert.AreEqual(MembershipCreateStatus.Success, status);

            // verify that the password format was saved
            var user = _db.GetCollection <User>(provider.CollectionName).FindOne(Query.EQ(provider.ElementNames.LowercaseUsername, "foo"));
            MembershipPasswordFormat rowFormat = user.PasswordFormat;

            Assert.AreEqual(format, rowFormat);

            //  then attempt to verify the user
            Assert.IsTrue(provider.ValidateUser("foo", "barbar!"));
        }
Ejemplo n.º 24
0
 /// <summary>
 /// Creates the user.
 /// </summary>
 /// <param name="userName">Name of the user.</param>
 /// <param name="password">The password.</param>
 /// <param name="email">The email.</param>
 /// <param name="status">The status.</param>
 /// <returns></returns>
 public MembershipUser CreateUser(string userName, string password, string email, out MembershipCreateStatus status)
 {
     return(_Provider.CreateUser(userName, password, email, null, null, true, null, out status));
 }
Ejemplo n.º 25
0
        //
        // MembershipProvider.CreateCardHolder
        //

        public MembershipUser CreateCardHolder(
            CreateCardHolderModel WebData,
            out MembershipCreateStatus status)
        {
            MembershipUser user = null;

            // generate this user's username

            WebData.UserName = GenerateUserName(WebData.FirstName, WebData.LastName);

            // insure uniqueness by email address

            if (GetCardHolderByEmail(WebData.email) != "")
            {
                status = MembershipCreateStatus.DuplicateEmail;
                return(null);
            }

            // verify unique cardholder phone number

            ICardHolderRepository CardHolderRepositoryI = new CardHolderRepository();
            CardHolder            CH = CardHolderRepositoryI.GetCardHolderByPhoneNumber(WebData.CellPhoneNumber);

            if (CH != null)
            {
                status = MembershipCreateStatus.DuplicateProviderUserKey;
                return(null);
            }

            using (GiftEntities GiftEntity = new GiftEntities())
            {
                ICardHolderRepository CardHolderRepository = new CardHolderRepository(GiftEntity);
                ICardRepository       CardService          = new CardRepository(GiftEntity);


                // get the information for each card to be registered

                if (WebData.Card1 != null)
                {
                    Card tCard = CardService.GetCard(WebData.Card1);
                    if (tCard != null)
                    {
                        WebData.Card1GUID = tCard.CardGUID;
                    }
                }
                if (WebData.Card2 != null)
                {
                    Card tCard = CardService.GetCard(WebData.Card2);
                    if (tCard != null)
                    {
                        WebData.Card2GUID = tCard.CardGUID;
                    }
                }
                if (WebData.Card3 != null)
                {
                    Card tCard = CardService.GetCard(WebData.Card3);
                    if (tCard != null)
                    {
                        WebData.Card3GUID = tCard.CardGUID;
                    }
                }
                if (WebData.Card4 != null)
                {
                    Card tCard = CardService.GetCard(WebData.Card4);
                    if (tCard != null)
                    {
                        WebData.Card4GUID = tCard.CardGUID;
                    }
                }
                if (WebData.Card5 != null)
                {
                    Card tCard = CardService.GetCard(WebData.Card5);
                    if (tCard != null)
                    {
                        WebData.Card5GUID = tCard.CardGUID;
                    }
                }



                // create the cardholder record

                if (!CardHolderRepository.CreateCardHolder(WebData))
                {
                    status = MembershipCreateStatus.UserRejected;
                }
                else
                {
                    status = MembershipCreateStatus.Success;

                    user = _provider.CreateUser(WebData.UserName, WebData.Password, WebData.email, WebData.passwordQuestion, WebData.passwordAnswer, WebData.isApproved, WebData.providerUserKey, out status);
                    AddUserToCardHolderRole(WebData.UserName);

                    if (WebData.Card1 != null)
                    {
                        if (WebData.Card1.Length > 0)
                        {
                            CardService.RegisterCard(WebData.ID, WebData.CardHolderGUID, WebData.Card1);
                        }
                    }
                    if (WebData.Card2 != null)
                    {
                        if (WebData.Card2.Length > 0)
                        {
                            CardService.RegisterCard(WebData.ID, WebData.CardHolderGUID, WebData.Card2);
                        }
                    }
                    if (WebData.Card3 != null)
                    {
                        if (WebData.Card3.Length > 0)
                        {
                            CardService.RegisterCard(WebData.ID, WebData.CardHolderGUID, WebData.Card3);
                        }
                    }
                    if (WebData.Card4 != null)
                    {
                        if (WebData.Card4.Length > 0)
                        {
                            CardService.RegisterCard(WebData.ID, WebData.CardHolderGUID, WebData.Card4);
                        }
                    }
                    if (WebData.Card5 != null)
                    {
                        if (WebData.Card5.Length > 0)
                        {
                            CardService.RegisterCard(WebData.ID, WebData.CardHolderGUID, WebData.Card5);
                        }
                    }
                }
            }

            return(user);
        }
        public static void ApproveMembership(MembershipRequest request, SPWeb web)
        {
            Hashtable xsltValues;
            MembershipCreateStatus createStatus;
            SPListItem             debuggingInfoItem = null;
            MembershipSettings     settings          = new MembershipSettings(web);
            MembershipProvider     membership        = Utils.BaseMembershipProvider(web.Site);

            /* This is just for debugging */
            try
            {
                SPList memberlist = web.GetList(Utils.GetAbsoluteURL(web, MembershipList.MEMBERSHIPREVIEWLIST));

                if (memberlist.Fields.ContainsField("LastError"))
                {
                    foreach (SPListItem addItem in memberlist.Items)
                    {
                        if (addItem["User Name"].ToString() == request.UserName)
                        {
                            debuggingInfoItem = addItem;
                            /* bms added break to only loop through items needed */
                            break;
                        }
                    }
                }
            }
            catch
            {
            }
            /* Above is for debugging */

            try
            {
                if (string.IsNullOrEmpty(request.UserName))
                {
                    throw new Exception("User name must not be null or empty.");
                }

                /* rdcpro: Allows providers that don't have password and question */
                if (membership.RequiresQuestionAndAnswer && string.IsNullOrEmpty(request.PasswordQuestion))
                {
                    throw new Exception("You must specify a password question.");
                }

                if (membership.RequiresQuestionAndAnswer && string.IsNullOrEmpty(request.PasswordAnswer))
                {
                    throw new Exception("You must specify a password answer.");
                }

                if (string.IsNullOrEmpty(request.UserEmail))
                {
                    throw new Exception("Email address must not be null or empty.");
                }
                //create account
                /* bms Create password at a minimum of 7 characters or Min from provider if greater */
                int passwordLength = 14;
                if (passwordLength < membership.MinRequiredPasswordLength)
                {
                    passwordLength = membership.MinRequiredPasswordLength;
                }
                if (passwordLength < membership.MinRequiredNonAlphanumericCharacters)
                {
                    passwordLength = membership.MinRequiredNonAlphanumericCharacters;
                }
                if (String.IsNullOrEmpty(request.Password))
                {
                    request.Password = System.Web.Security.Membership.GeneratePassword(passwordLength, membership.MinRequiredNonAlphanumericCharacters);
                }
                MembershipUser existingUser = Utils.BaseMembershipProvider(web.Site).GetUser(request.UserName, false);
                if (existingUser != null)
                {
                    membership.DeleteUser(request.UserName, true);
                }
                MembershipUser newUser;
                //This section is to transaction Creating the user and sending the email
                try
                {
                    // rdcpro: Changes to support providers that don't require question and answer.
                    if (membership.RequiresQuestionAndAnswer)
                    {
                        //membership.CreateUser(request.UserName, tempPassword, request.UserEmail, request.PasswordQuestion, request.PasswordAnswer, true, out createStatus);
                        newUser = membership.CreateUser(request.UserName, request.Password, request.UserEmail, request.PasswordQuestion, request.PasswordAnswer, true, null, out createStatus);
                    }
                    else
                    {
                        //  With this method the MembershipCreateUserException will take care of things if the user can't be created, so no worry that createStatus is set to success
                        //membership.CreateUser(.CreateUser(request.UserName, tempPassword, request.UserEmail);
                        newUser      = membership.CreateUser(request.UserName, request.Password, request.UserEmail, null, null, true, null, out createStatus);
                        createStatus = MembershipCreateStatus.Success;
                    }

                    if (debuggingInfoItem != null)
                    {
                        if (debuggingInfoItem.Fields.ContainsField("LastError"))
                        {
                            debuggingInfoItem["LastError"] = "Created User";
                            debuggingInfoItem.SystemUpdate();
                        }
                    }

                    if (createStatus == MembershipCreateStatus.Success)
                    {
                        newUser.IsApproved = true;
                        membership.UpdateUser(newUser);

                        //Add the user to the default group
                        if (!String.IsNullOrEmpty(request.DefaultGroup))
                        {
                            web.SiteGroups[request.DefaultGroup].AddUser(Utils.EncodeUsername(request.UserName.ToLower(), web.Site), request.UserEmail, request.FirstName + " " + request.LastName, "Self Registration");

                            //Login the user if selected
                            if (request.LoginCreatedUser)
                            {
                                Microsoft.SharePoint.IdentityModel.SPClaimsUtility.AuthenticateFormsUser(new Uri(web.Url), request.UserName, request.Password);
                            }
                        }
                        if (debuggingInfoItem != null)
                        {
                            if (debuggingInfoItem.Fields.ContainsField("LastError"))
                            {
                                if (!String.IsNullOrEmpty(request.DefaultGroup))
                                {
                                    debuggingInfoItem["LastError"] = "Add User Has No Groups";
                                }
                                else
                                {
                                    debuggingInfoItem["LastError"] = "Add User To Groups";
                                }
                                debuggingInfoItem.SystemUpdate();
                            }
                        }

                        //email user to confirm that request is approved
                        xsltValues = new Hashtable(1);
                        xsltValues.Add("fba:MembershipRequest", request);
                        bool bSentMail = Email.SendEmail(web, request.UserEmail, settings.MembershipApprovedEmail, xsltValues);

                        if (!bSentMail)
                        {
                            Utils.LogError("SendEmail failed");
                            throw new Exception("Error sending mail notification");
                        }
                        if (debuggingInfoItem != null)
                        {
                            if (debuggingInfoItem.Fields.ContainsField("LastError"))
                            {
                                debuggingInfoItem["LastError"] = "Sent Email To New User: "******"Error creating user: "******"LastError"))
                        {
                            foreach (SPListItem addItem in memberlist.Items)
                            {
                                if (addItem["User Name"].ToString() == request.UserName)
                                {
                                    addItem["LastError"] = AdduserExp.Message.ToString();
                                    addItem.SystemUpdate();
                                    break;
                                }
                            }
                        }
                    }
                    catch
                    {
                    }

                    // TODO: if CreateUser fails, the user in the MemberShipRequest list needs to be marked somehow so that the approver knows what the problem is.
                    // Maybe the list should always have the "LastError" field, or else the status can have an extra error value in addition to pending | approved | rejected
                    // Then in the calling code, we must not delete the item from the list!
                    // Also, if we're handling an exception, we should set the status back to "Pending".
                    // For now, we rethrow the exception which will cause the caller to fail, and prevent the delete.
                    throw new Exception(AdduserExp.Message);
                }
            }
            catch (Exception ex)
            {
                //Add error information to list
                try
                {
                    SPList memberlist = web.GetList(Utils.GetAbsoluteURL(web, MembershipList.MEMBERSHIPREVIEWLIST));
                    if (memberlist.Fields.ContainsField("LastError"))
                    {
                        foreach (SPListItem addItem in memberlist.Items)
                        {
                            if (addItem["User Name"].ToString() == request.UserName)
                            {
                                // This overwrites anything already in the LastError field.
                                addItem["LastError"] = ex.Message.ToString();
                                addItem.SystemUpdate();
                            }
                        }
                    }
                }
                catch
                {
                }

                Utils.LogError(ex);
                throw new Exception(ex.Message);
            }
        }
Ejemplo n.º 27
0
        public System.Web.Security.MembershipUser CreateUser(string username, string password)
        {
            MembershipCreateStatus status;

            return(membershipProvider.CreateUser(username, password, null, null, null, true, null, out status));
        }
Ejemplo n.º 28
0
        /// <summary>
        /// This is going to create the user with the membership provider and check for validation
        /// </summary>
        /// <param name="contentItem"></param>
        /// <param name="status"></param>
        /// <returns></returns>
        /// <remarks>
        /// Depending on if the Umbraco membership provider is active or not, the process differs slightly:
        ///
        /// * If the umbraco membership provider is used - we create the membership user first with the membership provider, since
        ///     it's the umbraco membership provider, this writes to the umbraco tables. When that is complete we re-fetch the IMember
        ///     model data from the db. In this case we don't care what the provider user key is.
        /// * If we're using a non-umbraco membership provider - we check if there is a 'Member' member type - if so
        ///     we create an empty IMember instance first (of type 'Member'), this gives us a unique ID (GUID)
        ///     that we then use to create the member in the custom membership provider. This acts as the link between Umbraco data and
        ///     the custom membership provider data. This gives us the ability to eventually have custom membership properties but still use
        ///     a custom membership provider. If there is no 'Member' member type, then we will simply just create the membership provider member
        ///     with no link to our data.
        ///
        /// If this is successful, it will go and re-fetch the IMember from the db because it will now have an ID because the Umbraco provider
        /// uses the umbraco data store - then of course we need to re-map it to the saved property values.
        /// </remarks>
        private MembershipUser CreateWithMembershipProvider(MemberSave contentItem, out MembershipCreateStatus status)
        {
            MembershipUser membershipUser;

            switch (MembershipScenario)
            {
            case MembershipScenario.NativeUmbraco:
                //We are using the umbraco membership provider, create the member using the membership provider first.
                var umbracoMembershipProvider = (UmbracoMembershipProviderBase)_provider;
                // TODO: We are not supporting q/a - passing in empty here
                membershipUser = umbracoMembershipProvider.CreateUser(
                    contentItem.ContentTypeAlias, contentItem.Username,
                    contentItem.Password.NewPassword,
                    contentItem.Email, "", "",
                    contentItem.IsApproved,
                    Guid.NewGuid(),     //since it's the umbraco provider, the user key here doesn't make any difference
                    out status);

                break;

            case MembershipScenario.CustomProviderWithUmbracoLink:
                //We are using a custom membership provider, we'll create an empty IMember first to get the unique id to use
                // as the provider user key.
                //create it - this persisted item has already been set in the MemberBinder based on the 'Member' member type:
                Services.MemberService.Save(contentItem.PersistedContent);

                // TODO: We are not supporting q/a - passing in empty here
                membershipUser = _provider.CreateUser(
                    contentItem.Username,
                    contentItem.Password.NewPassword,
                    contentItem.Email,
                    "TEMP",                           //some membership provider's require something here even if q/a is disabled!
                    "TEMP",                           //some membership provider's require something here even if q/a is disabled!
                    contentItem.IsApproved,
                    contentItem.PersistedContent.Key, //custom membership provider, we'll link that based on the IMember unique id (GUID)
                    out status);

                break;

            case MembershipScenario.StandaloneCustomProvider:
                // we don't have a member type to use so we will just create the basic membership user with the provider with no
                // link back to the umbraco data

                var newKey = Guid.NewGuid();
                // TODO: We are not supporting q/a - passing in empty here
                membershipUser = _provider.CreateUser(
                    contentItem.Username,
                    contentItem.Password.NewPassword,
                    contentItem.Email,
                    "TEMP",     //some membership provider's require something here even if q/a is disabled!
                    "TEMP",     //some membership provider's require something here even if q/a is disabled!
                    contentItem.IsApproved,
                    newKey,
                    out status);

                break;

            default:
                throw new ArgumentOutOfRangeException();
            }

            // TODO: Localize these!
            switch (status)
            {
            case MembershipCreateStatus.Success:

                //map the key back
                contentItem.Key = membershipUser.ProviderUserKey.TryConvertTo <Guid>().Result;
                contentItem.PersistedContent.Key = contentItem.Key;

                //if the comments are there then we need to save them
                if (contentItem.Comments.IsNullOrWhiteSpace() == false)
                {
                    membershipUser.Comment = contentItem.Comments;
                    _provider.UpdateUser(membershipUser);
                }

                RefetchMemberData(contentItem, LookupType.ByUserName);

                break;

            case MembershipCreateStatus.InvalidUserName:
                ModelState.AddPropertyError(
                    new ValidationResult("Invalid user name", new[] { "value" }),
                    string.Format("{0}login", Constants.PropertyEditors.InternalGenericPropertiesPrefix));
                break;

            case MembershipCreateStatus.InvalidPassword:
                ModelState.AddPropertyError(
                    new ValidationResult("Invalid password", new[] { "value" }),
                    string.Format("{0}password", Constants.PropertyEditors.InternalGenericPropertiesPrefix));
                break;

            case MembershipCreateStatus.InvalidQuestion:
            case MembershipCreateStatus.InvalidAnswer:
                throw new NotSupportedException("Currently the member editor does not support providers that have RequiresQuestionAndAnswer specified");

            case MembershipCreateStatus.InvalidEmail:
                ModelState.AddPropertyError(
                    new ValidationResult("Invalid email", new[] { "value" }),
                    string.Format("{0}email", Constants.PropertyEditors.InternalGenericPropertiesPrefix));
                break;

            case MembershipCreateStatus.DuplicateUserName:
                ModelState.AddPropertyError(
                    new ValidationResult("Username is already in use", new[] { "value" }),
                    string.Format("{0}login", Constants.PropertyEditors.InternalGenericPropertiesPrefix));
                break;

            case MembershipCreateStatus.DuplicateEmail:
                ModelState.AddPropertyError(
                    new ValidationResult("Email address is already in use", new[] { "value" }),
                    string.Format("{0}email", Constants.PropertyEditors.InternalGenericPropertiesPrefix));
                break;

            case MembershipCreateStatus.InvalidProviderUserKey:
                ModelState.AddPropertyError(
                    //specify 'default' just so that it shows up as a notification - is not assigned to a property
                    new ValidationResult("Invalid provider user key"), "default");
                break;

            case MembershipCreateStatus.DuplicateProviderUserKey:
                ModelState.AddPropertyError(
                    //specify 'default' just so that it shows up as a notification - is not assigned to a property
                    new ValidationResult("Duplicate provider user key"), "default");
                break;

            case MembershipCreateStatus.ProviderError:
            case MembershipCreateStatus.UserRejected:
                ModelState.AddPropertyError(
                    //specify 'default' just so that it shows up as a notification - is not assigned to a property
                    new ValidationResult("User could not be created (rejected by provider)"), "default");
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }

            return(membershipUser);
        }
 public MembershipUser CreateUser(string username, string password, string email, out MembershipCreateStatus createStatus)
 {
     return(_membership.CreateUser(username, password, email, null, null, true, null, out createStatus));
 }