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); }
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); }
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); }
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); }
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); }
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(); } } } }
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"); } } }
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>()); } } } }
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)); } }
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); }
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); }
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); }
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()); }
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)); }
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)); }
/// <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)); }
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"); }
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"); }
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!")); }
/// <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)); }
// // 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); } }
public System.Web.Security.MembershipUser CreateUser(string username, string password) { MembershipCreateStatus status; return(membershipProvider.CreateUser(username, password, null, null, null, true, null, out status)); }
/// <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)); }