/// <summary>
        /// Adds a user in the signup stage
        /// If the user is in the removed state, move the user back to the signed up state
        /// </summary>
        /// <param name="user">The user to signup for the event</param>
        /// <returns></returns>
        public bool RegisterUser(User user)
        {
            if (user == null)
            {
                throw new ArgumentNullException("user", "user cant be null");
            }
            var eventArgs = new RegisterUserEventArgs()
            {
                EventItem = this,
                User      = user
            };

            Event.RaiseEvent("eventmanager:registeruser", this, eventArgs);

            return(!eventArgs.Error);
        }
示例#2
0
        /// <summary>
        ///     Create new user
        /// </summary>
        /// <param name="newUser"></param>
        /// <returns></returns>
        public MembershipCreateStatus CreateUser(MembershipUser newUser)
        {
            newUser = SanitizeUser(newUser);
            var settings = _settingsService.GetSettings(false);


            var status = MembershipCreateStatus.Success;

            var e = new RegisterUserEventArgs {
                User = newUser
            };

            EventManager.Instance.FireBeforeRegisterUser(this, e);

            if (e.Cancel)
            {
                status = e.CreateStatus;
            }
            else
            {
                if (string.IsNullOrWhiteSpace(newUser.UserName))
                {
                    status = MembershipCreateStatus.InvalidUserName;
                }

                // get by username
                if (GetUser(newUser.UserName, true) != null)
                {
                    status = MembershipCreateStatus.DuplicateUserName;
                }

                // Add get by email address
                if (GetUserByEmail(newUser.Email, true) != null)
                {
                    status = MembershipCreateStatus.DuplicateEmail;
                }

                if (string.IsNullOrWhiteSpace(newUser.Password))
                {
                    status = MembershipCreateStatus.InvalidPassword;
                }

                if (status == MembershipCreateStatus.Success)
                {
                    // Hash the password
                    var salt = StringUtils.CreateSalt(AppConstants.SaltSize);
                    var hash = StringUtils.GenerateSaltedHash(newUser.Password, salt);
                    newUser.Password     = hash;
                    newUser.PasswordSalt = salt;

                    newUser.Roles = new List <MembershipRole> {
                        settings.NewMemberStartingRole
                    };

                    // Set dates
                    newUser.CreateDate      = newUser.LastPasswordChangedDate = DateTime.UtcNow;
                    newUser.LastLockoutDate = (DateTime)SqlDateTime.MinValue;
                    newUser.LastLoginDate   = DateTime.UtcNow;
                    newUser.IsLockedOut     = false;

                    var manuallyAuthoriseMembers       = settings.ManuallyAuthoriseNewMembers;
                    var memberEmailAuthorisationNeeded = settings.NewMemberEmailConfirmation == true;
                    if (manuallyAuthoriseMembers || memberEmailAuthorisationNeeded)
                    {
                        newUser.IsApproved = false;
                    }
                    else
                    {
                        newUser.IsApproved = true;
                    }

                    // url generator
                    newUser.Slug = ServiceHelpers.GenerateSlug(newUser.UserName,
                                                               GetUserBySlugLike(ServiceHelpers.CreateUrl(newUser.UserName)), null);

                    try
                    {
                        Add(newUser);

                        if (settings.EmailAdminOnNewMemberSignUp)
                        {
                            var sb = new StringBuilder();
                            sb.Append(
                                $"<p>{string.Format(_localizationService.GetResourceString("Members.NewMemberRegistered"), settings.ForumName, settings.ForumUrl)}</p>");
                            sb.Append($"<p>{newUser.UserName} - {newUser.Email}</p>");
                            var email = new Email
                            {
                                EmailTo = settings.AdminEmailAddress,
                                NameTo  = _localizationService.GetResourceString("Members.Admin"),
                                Subject = _localizationService.GetResourceString("Members.NewMemberSubject")
                            };
                            email.Body = _emailService.EmailTemplate(email.NameTo, sb.ToString());
                            _emailService.SendMail(email);
                        }

                        _activityService.MemberJoined(newUser);
                        EventManager.Instance.FireAfterRegisterUser(this,
                                                                    new RegisterUserEventArgs {
                            User = newUser
                        });
                    }
                    catch (Exception)
                    {
                        status = MembershipCreateStatus.UserRejected;
                    }
                }
            }

            return(status);
        }
 private void EventManagerInstance_BeforeRegisterUserAllow(object sender, RegisterUserEventArgs args)
 {
     args.User.Email = TestString;
     args.Cancel     = false;
 }
 private void EventManagerInstance_AfterRegisterUser(object sender, RegisterUserEventArgs args)
 {
     args.User.Email = TestString;
 }
 private void EventManagerInstance_BeforeRegisterUserCancel(object sender, RegisterUserEventArgs args)
 {
     args.Cancel = true;
 }
示例#6
0
        /// <summary>
        /// Create new user
        /// </summary>
        /// <param name="newUser"></param>
        /// <returns></returns>
        public MembershipCreateStatus CreateUser(MembershipUser newUser)
        {
            newUser = SanitizeUser(newUser);

            var status = MembershipCreateStatus.Success;

            var e = new RegisterUserEventArgs {
                User = newUser
            };

            EventManager.Instance.FireBeforeRegisterUser(this, e);

            if (e.Cancel)
            {
                status = e.CreateStatus;
            }
            else
            {
                if (string.IsNullOrEmpty(newUser.UserName))
                {
                    status = MembershipCreateStatus.InvalidUserName;
                }

                // get by username
                if (_membershipRepository.GetUser(newUser.UserName) != null)
                {
                    status = MembershipCreateStatus.DuplicateUserName;
                }

                // Add get by email address
                if (_membershipRepository.GetUserByEmail(newUser.Email) != null)
                {
                    status = MembershipCreateStatus.DuplicateEmail;
                }

                if (string.IsNullOrEmpty(newUser.Password))
                {
                    status = MembershipCreateStatus.InvalidPassword;
                }

                if (status == MembershipCreateStatus.Success)
                {
                    // Hash the password
                    var salt = CreateSalt(SaltSize);
                    var hash = GenerateSaltedHash(newUser.Password, salt);
                    newUser.Password     = hash;
                    newUser.PasswordSalt = salt;

                    newUser.Roles = new List <MembershipRole> {
                        _settingsRepository.GetSettings().NewMemberStartingRole
                    };

                    // Set dates
                    newUser.CreateDate      = newUser.LastPasswordChangedDate = DateTime.UtcNow;
                    newUser.LastLockoutDate = (DateTime)SqlDateTime.MinValue;
                    newUser.LastLoginDate   = DateTime.UtcNow;

                    newUser.IsApproved  = !_settingsRepository.GetSettings().ManuallyAuthoriseNewMembers;
                    newUser.IsLockedOut = false;

                    // url generator
                    newUser.Slug = ServiceHelpers.GenerateSlug(newUser.UserName, _membershipRepository.GetUserBySlugLike(ServiceHelpers.CreateUrl(newUser.UserName)), null);

                    try
                    {
                        _membershipRepository.Add(newUser);

                        if (_settingsRepository.GetSettings().EmailAdminOnNewMemberSignUp)
                        {
                            var sb = new StringBuilder();
                            sb.AppendFormat("<p>{0}</p>", string.Format(_localizationService.GetResourceString("Members.NewMemberRegistered"), _settingsRepository.GetSettings().ForumName, _settingsRepository.GetSettings().ForumUrl));
                            sb.AppendFormat("<p>{0} - {1}</p>", newUser.UserName, newUser.Email);
                            var email = new Email
                            {
                                EmailTo   = _settingsRepository.GetSettings().AdminEmailAddress,
                                EmailFrom = _settingsRepository.GetSettings().NotificationReplyEmail,
                                NameTo    = _localizationService.GetResourceString("Members.Admin"),
                                Subject   = _localizationService.GetResourceString("Members.NewMemberSubject")
                            };
                            email.Body = _emailService.EmailTemplate(email.NameTo, sb.ToString());
                            _emailService.SendMail(email);
                        }

                        _activityService.MemberJoined(newUser);
                        EventManager.Instance.FireAfterRegisterUser(this,
                                                                    new RegisterUserEventArgs {
                            User = newUser
                        });
                    }
                    catch (Exception)
                    {
                        status = MembershipCreateStatus.UserRejected;
                    }
                }
            }

            return(status);
        }
示例#7
0
        public MembershipCreateStatus CreateUser(MembershipUser newUser)
        {
            newUser = SanitizeUser(newUser);
            var settings = _settingsService.GetSettings(false);

            var status = MembershipCreateStatus.Success;

            var e = new RegisterUserEventArgs {
                User = newUser
            };                                                        //fire event....left off here.  Admin 5/5/2016

            EventManager.Instance.FireBeforeRegisterUser(this, e);

            if (e.Cancel)
            {
                status = e.CreateStatus;
            }
            else
            {
                // Add get by email address
                if (GetUserByEmail(newUser.Email, true) != null)
                {
                    status = MembershipCreateStatus.DuplicateEmail;
                }

                if (string.IsNullOrEmpty(newUser.Password))
                {
                    status = MembershipCreateStatus.InvalidPassword;
                }

                if (status == MembershipCreateStatus.Success)
                {
                    // Hash the password
                    var salt = StringUtils.CreateSalt(AppConstants.SaltSize);
                    var hash = StringUtils.GenerateSaltedHash(newUser.Password, salt);
                    newUser.Password     = hash;
                    newUser.PasswordSalt = salt;

                    newUser.Roles = new List <MembershipRole> {
                        settings.NewMemberStartingRole
                    };
                    // Set dates
                    newUser.CreateDate    = DateTime.UtcNow;
                    newUser.LastLoginDate = DateTime.UtcNow;

                    //we will need this!.....(I think)
                    //-------------------------------
                    //var manuallyAuthoriseMembers = settings.ManuallyAuthoriseNewMembers;
                    //var memberEmailAuthorisationNeeded = settings.NewMemberEmailConfirmation == true;
                    //if (manuallyAuthoriseMembers || memberEmailAuthorisationNeeded)
                    //{
                    //    newUser.IsApproved = false;
                    //}
                    //else
                    //{
                    //    newUser.IsApproved = true;
                    //}

                    // url generator
                    newUser.Slug = ServiceHelpers.GenerateSlug(newUser.Email, GetUserBySlugLike(ServiceHelpers.CreateUrl(newUser.Email)), null);

                    try
                    {
                        Add(newUser);

                        //if (settings.EmailAdminOnNewMemberSignUp)
                        //{
                        //    var sb = new StringBuilder();
                        //    sb.AppendFormat("<p>{0}</p>", string.Format(_localizationService.GetResourceString("Members.NewMemberRegistered"), settings.ForumName, settings.ForumUrl));
                        //    sb.AppendFormat("<p>{0} - {1}</p>", newUser.UserName, newUser.Email);
                        //    var email = new Email
                        //    {
                        //        EmailTo = settings.AdminEmailAddress,
                        //        NameTo = _localizationService.GetResourceString("Members.Admin"),
                        //        Subject = _localizationService.GetResourceString("Members.NewMemberSubject")
                        //    };
                        //    email.Body = _emailService.EmailTemplate(email.NameTo, sb.ToString());
                        //    _emailService.SendMail(email);
                        //}

                        _activityService.MemberJoined(newUser);
                        EventManager.Instance.FireAfterRegisterUser(this,
                                                                    new RegisterUserEventArgs {
                            User = newUser
                        });
                    }
                    catch (Exception)
                    {
                        status = MembershipCreateStatus.UserRejected;
                    }
                }
            }

            return(status);
        }