コード例 #1
0
    /// <summary>
    /// OnBeforeSave handler.
    /// </summary>
    private void editProfileForm_OnBeforeSave(object sender, EventArgs e)
    {
        // If avatarUser id column is set
        if (editProfileForm.Data.GetValue("UserAvatarID") != DBNull.Value)
        {
            // If Avatar not set, rewrite to null value
            if (ValidationHelper.GetInteger(editProfileForm.Data.GetValue("UserAvatarID"), 0) == 0)
            {
                editProfileForm.Data.SetValue("UserAvatarID", DBNull.Value);
            }
        }

        // Set full name as first name + last name
        if (MembershipContext.AuthenticatedUser != null)
        {
            string firstName  = ValidationHelper.GetString(editProfileForm.Data.GetValue("FirstName"), "");
            string lastName   = ValidationHelper.GetString(editProfileForm.Data.GetValue("LastName"), "");
            string middleName = ValidationHelper.GetString(editProfileForm.Data.GetValue("MiddleName"), "");

            String fullName = ValidationHelper.GetString(editProfileForm.Data.GetValue("FullName"), "");
            var    cui      = MembershipContext.AuthenticatedUser;

            // Change full name only if it was automatically generated (= is equals to first + middle + last name)
            if (fullName == UserInfoProvider.GetFullName(cui.FirstName, cui.MiddleName, cui.LastName))
            {
                editProfileForm.Data.SetValue("FullName", UserInfoProvider.GetFullName(firstName, middleName, lastName));
            }
        }

        // Ensure unique user email
        string email = ValidationHelper.GetString(editProfileForm.Data.GetValue("Email"), "").Trim();

        // Get current user info
        UserInfo ui = editProfileForm.Info as UserInfo;

        // Check if user email is unique in all sites where he belongs
        if (!UserInfoProvider.IsEmailUnique(email, ui))
        {
            ShowError(GetString("UserInfo.EmailAlreadyExist"));
            editProfileForm.StopProcessing = true;
        }

        #region "Reserved names - nickname"

        // Don't check reserved names for global administrator
        if (!MembershipContext.AuthenticatedUser.CheckPrivilegeLevel(UserPrivilegeLevelEnum.Admin))
        {
            // Check for reserved user names like administrator, sysadmin, ...
            string nickName = ValidationHelper.GetString(editProfileForm.Data.GetValue("UserNickName"), "");

            if (UserInfoProvider.NameIsReserved(SiteContext.CurrentSiteName, nickName))
            {
                ShowError(GetString("Webparts_Membership_RegistrationForm.UserNameReserved").Replace("%%name%%", HTMLHelper.HTMLEncode(nickName)));
                editProfileForm.StopProcessing = true;
            }
        }

        #endregion
    }