Example #1
0
 protected override void OnLoad(EventArgs e)
 {
     if (SPContext.Current.Web.CurrentUser.LoginName.Equals("i:0#.f|fbamember|guest", StringComparison.InvariantCultureIgnoreCase))
     {
         SPUtility.TransferToErrorPage(LocalizedString.GetGlobalString("MyResource", "CannotChangePasswordForBuiltInAccount"));
     }
 }
Example #2
0
        public static void ResetUserPassword(string username, string newPassword, bool sendEmail, SPWeb web)
        {
            if (Utils.BaseMembershipProvider().RequiresQuestionAndAnswer || !Utils.BaseMembershipProvider().EnablePasswordReset)
            {
                throw new Exception(LocalizedString.GetGlobalString("FBAPackWebPages", "ResetPasswordUnavailable"));
            }

            MembershipUser user     = Utils.BaseMembershipProvider().GetUser(username, false);
            string         password = user.ResetPassword();

            //Change the password to the specified password
            if (!String.IsNullOrEmpty(newPassword))
            {
                if (user.ChangePassword(password, newPassword))
                {
                    password = newPassword;
                }
                else
                {
                    throw new Exception(LocalizedString.GetGlobalString("FBAPackWebPages", "ResetPasswordChangePasswordError"));
                }
            }

            if (sendEmail)
            {
                MembershipRequest request = MembershipRequest.GetMembershipRequest(user, web);
                request.Password = password;

                MembershipRequest.SendResetPasswordEmail(request, web);
            }
        }
Example #3
0
        private void SendActivationEmailAndRedirect(MembershipUser user, string emailInLower)
        {
            string linkExpireTime = DateTime.UtcNow.AddMinutes(30).Ticks.ToString();
            //string token = string.Concat(user.UserName.ToLower(), user.Email.ToLower(), MyCustomMessageHandler.SecretGuid, linkExpireTime).GetHashCode().ToString();
            string token = string.Concat(user.UserName.ToLower(), emailInLower, MyCustomMessageHandler.SecretGuid, linkExpireTime).GetHashCode().ToString();

            string SignInUrl = Encoding.Default.GetString(Convert.FromBase64String(Request.QueryString["SignInUrl"]));

            string activationLink = SPUtility.ConcatUrls(HttpContext.Current.Request.Url.GetLeftPart(UriPartial.Authority), string.Concat("/_layouts/FBA/UserActivate.aspx?USERNAME="******"&email=", emailInLower, "&token=", token, "&linkExpireTime=", linkExpireTime, "&Source=", System.Uri.EscapeDataString(SignInUrl)));

            Email.SendEmail(this.Web, emailInLower, LocalizedString.GetGlobalString("MyResource", "activateYourAccount"), activationLink);

            string source = Request.QueryString["source"];

            if (string.IsNullOrEmpty(source))
            {
                //FBADiagnosticsService.Local.WriteTrace(0, FBADiagnosticsService.FBADiagnosticsCategory.General, Microsoft.SharePoint.Administration.TraceSeverity.High, string.Concat("Activate Email sent to ", user.Email, ". Url:", activationLink));

                //SPUtility.Redirect("FBA/Management/UsersDisp.aspx", SPRedirectFlags.RelativeToLayoutsPage | SPRedirectFlags.UseSource | SPRedirectFlags.DoNotEndResponse, this.Context);
                MyFBADiagnosticsService.Local.WriteTrace(0, MyFBADiagnosticsService.FBADiagnosticsCategory.General, Microsoft.SharePoint.Administration.TraceSeverity.Verbose, string.Concat("RedirectTo:", SignInUrl));
                SPUtility.Redirect(SignInUrl, SPRedirectFlags.DoNotEndResponse, this.Context);
            }
            else
            {
                MyFBADiagnosticsService.Local.WriteTrace(0, MyFBADiagnosticsService.FBADiagnosticsCategory.General, Microsoft.SharePoint.Administration.TraceSeverity.Verbose, string.Concat("RedirectTo:", source));
                SPUtility.Redirect(Request.RawUrl, SPRedirectFlags.UseSource | SPRedirectFlags.DoNotEndResponse, this.Context);
            }
        }
        protected void SetErrorMessage(MembershipCreateStatus status)
        {
            switch (status)
            {
            case MembershipCreateStatus.DuplicateUserName:
                lblMessage.Text = LocalizedString.GetGlobalString("FBAPackWebPages", "DuplicateUserName");
                break;

            case MembershipCreateStatus.DuplicateEmail:
                lblEmailMessage.Text = LocalizedString.GetGlobalString("FBAPackWebPages", "DuplicateEmail");
                break;

            //case MembershipCreateStatus.InvalidPassword:
            //    string message = "";
            //    if (string.IsNullOrEmpty(Utils.BaseMembershipProvider().PasswordStrengthRegularExpression))
            //    {
            //        message = string.Format(LocalizedString.GetGlobalString("FBAPackWebPages", "InvalidPasswordChars"), Utils.BaseMembershipProvider().MinRequiredPasswordLength,  Utils.BaseMembershipProvider().MinRequiredNonAlphanumericCharacters);
            //    }
            //    else
            //    {
            //        message = string.Format(LocalizedString.GetGlobalString("FBAPackWebPages", "InvalidPasswordCharsRegex"), Utils.BaseMembershipProvider().MinRequiredPasswordLength,  Utils.BaseMembershipProvider().MinRequiredNonAlphanumericCharacters, Utils.BaseMembershipProvider().PasswordStrengthRegularExpression);
            //    }
            //    //LocalizedString.GetGlobalString("FBAPackWebPages", "InvalidPassword")
            //    // TODO: use resource files
            //    lblPasswordMessage.Text = message;
            //    break;

            case MembershipCreateStatus.InvalidEmail:
                lblEmailMessage.Text = LocalizedString.GetGlobalString("FBAPackWebPages", "InvalidEmail");
                break;

            //case MembershipCreateStatus.InvalidAnswer:
            //    lblAnswerMessage.Text = LocalizedString.GetGlobalString("FBAPackWebPages", "InvalidAnswer");
            //    break;

            //case MembershipCreateStatus.InvalidQuestion:
            //    lblQuestionMessage.Text = LocalizedString.GetGlobalString("FBAPackWebPages", "InvalidQuestion");
            //    break;

            case MembershipCreateStatus.InvalidUserName:
                lblMessage.Text = LocalizedString.GetGlobalString("FBAPackWebPages", "InvalidUserName");
                break;

            case MembershipCreateStatus.ProviderError:
                lblMessage.Text = LocalizedString.GetGlobalString("FBAPackWebPages", "ProviderError");
                break;

            case MembershipCreateStatus.UserRejected:
                lblMessage.Text = LocalizedString.GetGlobalString("FBAPackWebPages", "UserRejected");
                break;

            default:
                lblMessage.Text = LocalizedString.GetGlobalString("FBAPackWebPages", "UnknownError");
                break;
            }
        }
Example #5
0
        //protected void Search_Click(object sender, System.EventArgs e)
        //{
        //    UserDataSource.SearchText = SearchText.Text;
        //    MemberGrid.DataBind();
        //}

        //protected override bool RequireSiteAdministrator
        //{
        //    get { return true; }
        //}

        // ModifiedBySolvion
        // bhi - 20.12.2011
        // remember sort and search settings
        protected override void OnLoad(System.EventArgs e)
        {
            base.OnLoad(e);

            if (!Page.IsPostBack)
            {
                email          = Request.QueryString["Email"];
                linkExpireTime = Request.QueryString["linkExpireTime"];
                string token = string.Concat(email.ToLower(), MyCustomMessageHandler.SecretGuid, linkExpireTime).GetHashCode().ToString();
                if (token != Request.QueryString["token"])
                {
                    //Invalid Token
                    SPUtility.TransferToErrorPage(LocalizedString.GetGlobalString("MyResource", "InvalidToken"));
                }
                else if (DateTime.UtcNow.Ticks > long.Parse(linkExpireTime))
                {
                    //link expired
                    SPUtility.TransferToErrorPage(LocalizedString.GetGlobalString("MyResource", "LinkExpired"));
                }

                this.UserDataSource.ResetCache = true;

                if (!string.IsNullOrEmpty(Request.QueryString["SortField"]))
                {
                    SortDirection dir = SortDirection.Ascending;
                    if (!string.IsNullOrEmpty(Request.QueryString["SortDir"]))
                    {
                        if (Request.QueryString["SortDir"].ToLower() == "desc")
                        {
                            dir = SortDirection.Descending;
                        }
                    }
                    MemberGrid.Sort(Request.QueryString["SortField"], dir);
                }

                if (!string.IsNullOrEmpty(Request.QueryString["PageIndex"]))
                {
                    int pageIndex = 0;
                    if (int.TryParse(Request.QueryString["PageIndex"], out pageIndex))
                    {
                        MemberGrid.PageIndex = pageIndex;
                    }
                }

                //if (!string.IsNullOrEmpty(Request.QueryString["k"]))
                //{
                //    SearchText.Text = Request.QueryString["k"];
                //    UserDataSource.SearchText = SearchText.Text;
                //}

                UserDataSource.IncludeSPSiteHiddenUserInfor = false;
                UserDataSource.MandatoryRowFilter           = string.Format("Email LIKE '{0}'", email);
                UserDataSource.linkExpireTime = linkExpireTime;
            }
        }
Example #6
0
 protected override void OnInit(System.EventArgs e)
 {
     // display error if membership provider not configured
     if (!Utils.IsProviderConfigured())
     {
         lblMessage.Text    = LocalizedString.GetGlobalString("FBAPackWebPages", "MembershipNotConfigured");
         MemberGrid.Visible = false;
         //ToolBarPlaceHolder.Visible = false;
         //onetidNavNodesTB.Visible = false;
         //SearchControls.Visible = false;
     }
     base.OnInit(e);
 }
        //protected override bool RequireSiteAdministrator
        //{
        //    get { return true; }
        //}

        protected override void OnLoad(EventArgs e)
        {
            //this.CheckRights();

            // display error confirmation message
            string userName = Request.QueryString["USERNAME"];

            if (string.IsNullOrEmpty(userName))
            {
                SPUtility.TransferToErrorPage(LocalizedString.GetGlobalString("FBAPackWebPages", "UserNotFound"));
                return;
            }


            string linkExpireTime = Request.QueryString["linkExpireTime"];
            string token          = string.Concat(userName.ToLower(), MyCustomMessageHandler.SecretGuid, linkExpireTime).GetHashCode().ToString();

            if (token != Request.QueryString["token"])
            {
                //Invalid Token
                SPUtility.TransferToErrorPage(LocalizedString.GetGlobalString("MyResource", "InvalidToken"));
            }
            else if (DateTime.UtcNow.Ticks > long.Parse(linkExpireTime))
            {
                //link expired
                SPUtility.TransferToErrorPage(LocalizedString.GetGlobalString("MyResource", "LinkExpired"));
            }



            //if (Utils.BaseMembershipProvider().RequiresQuestionAndAnswer || !Utils.BaseMembershipProvider().EnablePasswordReset)
            //{
            //    SPUtility.TransferToErrorPage(LocalizedString.GetGlobalString("FBAPackWebPages", "ResetPasswordUnavailable"));
            //    return;
            //}

            resetPasswordMsg.Text = string.Format(LocalizedString.GetGlobalString("FBAPackWebPages", "ResetPasswordMsg"), userName);

            lblNewPasswordError.Text = "";

            if (!this.Page.IsPostBack)
            {
                resetAutoPassword.Checked   = true;
                resetSelectPassword.Checked = false;
                chkSendEmail.Checked        = true;
            }
        }
        protected void OnResetPassword(object sender, EventArgs e)
        {
            string username = Request.QueryString["USERNAME"];

            bool sendEmail = true;

            string newPassword = null;

            if (resetSelectPassword.Checked)
            {
                newPassword = txtNewPassword.Text;
                sendEmail   = chkSendEmail.Checked;
            }

            try
            {
                Utils.ResetUserPassword(username, newPassword, sendEmail, Web);
                MembershipUser user = Utils.BaseMembershipProvider().GetUser(username, false);
                if (!user.IsApproved)
                {
                    user.IsApproved = true;
                    Utils.BaseMembershipProvider().UpdateUser(user);
                }
            }
            catch (ArgumentException ex)
            {
                lblNewPasswordError.Text = ex.Message;
                return;
            }
            catch (Exception ex)
            {
                Utils.LogError(ex, true);
                SPUtility.TransferToErrorPage(LocalizedString.GetGlobalString("FBAPackWebPages", "UnexpectedError"));
                return;
            }

            SPUtility.Redirect("FBA/GetBackAccountsByEmail.aspx", SPRedirectFlags.RelativeToLayoutsPage | SPRedirectFlags.UseSource | SPRedirectFlags.DoNotEndResponse, this.Context);
        }
        protected void OnSubmit(object sender, EventArgs e)
        {
            // ModifiedBySolvion
            // bhi - 09.01.2012
            // Reset message labels
            //lblMessage.Text = lblAnswerMessage.Text = lblEmailMessage.Text = lblPasswordMessage.Text = lblQuestionMessage.Text = "";
            // EndModifiedBySolvion

            //bool _showRoles = (new MembershipSettings(SPContext.Current.Web)).EnableRoles;

            // check to see if username already in use
            //MembershipUser user = Utils.BaseMembershipProvider().GetUser(txtUsername.Text,false);

            //if (user == null)
            //{
            try
            {
                // get site reference
                string provider = Utils.GetMembershipProvider(this.Site);

                // create FBA database user
                //MembershipCreateStatus createStatus;

                //if (Utils.BaseMembershipProvider().RequiresQuestionAndAnswer)
                //{
                //    user = Utils.BaseMembershipProvider().CreateUser(txtUsername.Text, txtPassword.Text, txtEmail.Text, txtQuestion.Text, txtAnswer.Text, isActive.Checked, null, out createStatus);
                //}
                //else
                //{
                //user = Utils.BaseMembershipProvider().CreateUser(txtUsername.Text, txtPassword.Text, txtEmail.Text, null, null, false, null, out createStatus);
                //}


                //if (createStatus != MembershipCreateStatus.Success)
                //{
                //    SetErrorMessage(createStatus);
                //    return;
                //}
                int    userscount;
                string email = txtEmail.Text;
                MembershipUserCollection users = Utils.BaseMembershipProvider().FindUsersByEmail(email, 0, 1, out userscount);
                if (userscount <= 0)
                {
                    lblMessage.Text = LocalizedString.GetGlobalString("MyResource", "NoUserRegisteredByThisEmail");
                    return;
                }


                //bool groupAdded = false;

                //if (_showRoles)
                //{
                //    for (int i = 0; i < rolesList.Items.Count; i++)
                //    {
                //        if (rolesList.Items[i].Selected)
                //        {
                //            Utils.BaseRoleProvider().AddUsersToRoles(new string[] {user.UserName}, new string[] {rolesList.Items[i].Value});
                //Utils.BaseRoleProvider().AddUsersToRoles(new string[] { user.UserName }, new string[] { "Registered" });
                //        }
                //    }

                //    // add user to SharePoint whether a role was selected or not
                //    AddUserToSite(Utils.EncodeUsername(user.UserName), user.Email, txtFullName.Text);
                //}
                //else
                //{
                //    // add user to each group that was selected
                //    for (int i = 0; i < groupList.Items.Count; i++)
                //    {
                //        if (groupList.Items[i].Selected)
                //        {
                //            // add user to group
                //            SPGroup group = this.Web.SiteGroups[groupList.Items[i].Value];
                //            group.AddUser(
                //                Utils.EncodeUsername(user.UserName),
                //                user.Email,
                //                txtFullName.Text,
                //                "");

                //            // update
                //            group.Update();
                //            groupAdded = true;
                //        }
                //    }

                //    // if no group selected, add to site with no permissions
                //    if (!groupAdded)
                //    {
                //        AddUserToSite(Utils.EncodeUsername(user.UserName), user.Email, txtFullName.Text);
                //    }
                //}

                // Email User
                //if ((emailUser.Checked == true))
                //{
                //InputFormTextBox txtEmailSubject = (InputFormTextBox)emailUser.FindControl("txtEmailSubject");
                //InputFormTextBox txtEmailBody = (InputFormTextBox)emailUser.FindControl("txtEmailBody");
                //    if ((!string.IsNullOrEmpty(txtEmailSubject.Text)) && (!string.IsNullOrEmpty(txtEmailBody.Text)))


                string linkExpireTime = DateTime.UtcNow.AddMinutes(30).Ticks.ToString();


                string token = string.Concat(email.ToLower(), MyCustomMessageHandler.SecretGuid, linkExpireTime).GetHashCode().ToString();
                string getBackAccountsLink = SPUtility.ConcatUrls(HttpContext.Current.Request.Url.GetLeftPart(UriPartial.Authority), string.Concat("/_layouts/FBA/GetBackAccountsByEmail.aspx?Email=", email, "&token=", token, "&linkExpireTime=", linkExpireTime, "&SignInUrl=", Request.QueryString["SignInUrl"]));
                Email.SendEmail(this.Web, email, LocalizedString.GetGlobalString("MyResource", "getBackAccountsLink"), getBackAccountsLink);
                //}
                //FBADiagnosticsService.Local.WriteTrace(0, FBADiagnosticsService.FBADiagnosticsCategory.General, Microsoft.SharePoint.Administration.TraceSeverity.High, string.Concat("Activate Email sent to ", user.Email, ". Url:", activationLink));

                //SPUtility.Redirect("FBA/Management/UsersDisp.aspx", SPRedirectFlags.RelativeToLayoutsPage | SPRedirectFlags.UseSource| SPRedirectFlags.DoNotEndResponse, this.Context);

                string source = Request.QueryString["source"];
                if (string.IsNullOrEmpty(source))
                {
                    string SignInUrl = Encoding.Default.GetString(Convert.FromBase64String(Request.QueryString["SignInUrl"]));
                    //SPUtility.Redirect("FBA/Management/UsersDisp.aspx", SPRedirectFlags.RelativeToLayoutsPage | SPRedirectFlags.UseSource | SPRedirectFlags.DoNotEndResponse, this.Context);
                    MyFBADiagnosticsService.Local.WriteTrace(0, MyFBADiagnosticsService.FBADiagnosticsCategory.General, Microsoft.SharePoint.Administration.TraceSeverity.Verbose, string.Concat("RedirectTo:", SignInUrl));
                    SPUtility.Redirect(SignInUrl, SPRedirectFlags.DoNotEndResponse, this.Context);
                }
                else
                {
                    MyFBADiagnosticsService.Local.WriteTrace(0, MyFBADiagnosticsService.FBADiagnosticsCategory.General, Microsoft.SharePoint.Administration.TraceSeverity.Verbose, string.Concat("RedirectTo:", source));
                    SPUtility.Redirect(Request.RawUrl, SPRedirectFlags.UseSource | SPRedirectFlags.DoNotEndResponse, this.Context);
                }
            }
            catch (Exception ex)
            {
                Utils.LogError(ex, true);
            }
            //}
            //else
            //{
            //    lblMessage.Text = LocalizedString.GetGlobalString("FBAPackWebPages", "DuplicateUserName"); ;
            //}
        }
        //protected override bool RequireSiteAdministrator
        //{
        //    get { return true; }
        //}

        protected override void OnLoad(EventArgs e)
        {
            // get user info
            string userName       = this.Request.QueryString["USERNAME"];
            string token          = this.Request.QueryString["token"];
            string linkExpireTime = Request.QueryString["linkExpireTime"];
            string emailInLower   = Request.QueryString["email"].Trim().ToLower();
            //SPUser spuser = null;
            //try
            //{
            //    spuser = this.Web.AllUsers[Utils.EncodeUsername(userName)];
            //}
            //catch
            //{

            //}
            MembershipUser user = Utils.BaseMembershipProvider().GetUser(userName, false);

            if (user != null)
            {
                if (!Page.IsPostBack)
                {
                    // load user props
                    //if (spuser != null)
                    //{
                    //    txtEmail.Text = spuser.Email;
                    //    txtFullName.Text = spuser.Name;
                    //}
                    //else
                    //{
                    txtEmail.Text    = user.Email;
                    txtFullName.Text = user.UserName;
                    //}
                    txtUsername.Text = user.UserName;
                    isActive.Checked = user.IsApproved;
                    isLocked.Checked = user.IsLockedOut;
                    isLocked.Enabled = user.IsLockedOut;

                    //if (string.Concat(user.UserName.ToLower(), user.Email.ToLower(), MyCustomMessageHandler.SecretGuid,linkExpireTime).GetHashCode().ToString().Equals(token))
                    if (string.Concat(user.UserName.ToLower(), emailInLower, MyCustomMessageHandler.SecretGuid, linkExpireTime).GetHashCode().ToString().Equals(token))
                    {
                        if (DateTime.UtcNow.Ticks > long.Parse(linkExpireTime))
                        {
                            SPUtility.TransferToErrorPage(LocalizedString.GetGlobalString("MyResource", "LinkExpired"));
                        }

                        user.Email      = emailInLower;
                        user.Comment    = MyCustomMessageHandler.OneTimeDynamicPassword(user.UserName);
                        user.IsApproved = true;
                        Utils.BaseMembershipProvider().UpdateUser(user);
                        //TODO:这里还要加个WorkItemTimerJob, 用来同步membership Email 变化到SharePoint UserInfoList

                        //SPUtility.Redirect("FBA/Management/UsersDisp.aspx", SPRedirectFlags.RelativeToLayoutsPage | SPRedirectFlags.UseSource | SPRedirectFlags.DoNotEndResponse, this.Context);
                        //string SignInUrl = Encoding.Default.GetString(Convert.FromBase64String(Request.QueryString["SignInUrl"]));

                        //SPUtility.Redirect(SignInUrl, SPRedirectFlags.DoNotEndResponse, this.Context); ;
                        //Uri SignIn = new Uri(SignInUrl, UriKind.RelativeOrAbsolute);
                        //string path;
                        //string query;
                        //if (SignIn.IsAbsoluteUri)
                        //{
                        //    path = SignIn.GetLeftPart(UriPartial.Path);
                        //    query = SignIn.Query;
                        //}
                        //else
                        //{
                        //    int num = SignInUrl.IndexOf('?');
                        //    path = num < 0 ? SignInUrl : SignInUrl.Substring(0, num);
                        //    query = num < 0 ? string.Empty : SignInUrl.Substring(num + 1, SignInUrl.Length - num - 1);
                        //}

                        //FBADiagnosticsService.Local.WriteTrace(0, FBADiagnosticsService.FBADiagnosticsCategory.General, Microsoft.SharePoint.Administration.TraceSeverity.Verbose, string.Concat("RedirectTo:", SignInUrl, ";   Path:", path, ";   QueryString:", query));
                        SPUtility.Redirect(this.Context.Request.RawUrl, SPRedirectFlags.UseSource | SPRedirectFlags.DoNotEndResponse, this.Context);

                        //Response.Redirect(SignInUrl);
                    }
                    else
                    {
                        SPUtility.TransferToErrorPage(LocalizedString.GetGlobalString("MyResource", "InvalidToken"));
                    }
                }
            }
            else
            {
                SPUtility.TransferToErrorPage(LocalizedString.GetGlobalString("FBAPackWebPages", "UserNotFound"));
            }
        }
        //这个没用,可以注释掉,Onload 成功后直接就 Redirect 掉了 ,除非以后成功后还容许在这个界面上设置一些用户属性
        protected void OnSubmit(object sender, EventArgs e)
        {
            // get user info
            string userName = this.Request.QueryString["USERNAME"];
            SPUser spuser   = null;

            // This could be done with EnsureUsers, which won't throw an exception if the user hasn't logged on to the site.
            try
            {
                spuser = this.Web.AllUsers[Utils.EncodeUsername(userName)];
            }
            catch
            {
            }
            MembershipUser user = Utils.BaseMembershipProvider().GetUser(userName, false);

            // check user exists
            if (user != null)
            {
                try
                {
                    // TODO: If we want the Email to be used for the user account, we need to delete the user and create a new one with the new email address.
                    // This will mean we need to iterate over the groups that the user is a member of, in all site collections in all web apps, and add the new user
                    // to those groups.  In the meantime, we allow the email to be changed, but this won't update the account username.

                    // update membership provider info
                    user.Email      = txtEmail.Text;
                    user.IsApproved = isActive.Checked;

                    //Unlock Account
                    if (user.IsLockedOut && !isLocked.Checked)
                    {
                        user.UnlockUser();
                    }
                    try
                    {
                        Utils.BaseMembershipProvider().UpdateUser(user);
                    }
                    catch (System.Configuration.Provider.ProviderException ex)
                    {
                        lblMessage.Text = ex.Message;
                        return;
                    }


                    // update sharepoint user info
                    if (spuser != null)
                    {
                        spuser.Email = txtEmail.Text;
                        spuser.Name  = txtFullName.Text;
                        spuser.Update();
                    }

                    SPUtility.Redirect("FBA/Management/UsersDisp.aspx", SPRedirectFlags.RelativeToLayoutsPage | SPRedirectFlags.UseSource, this.Context);
                }
                catch (Exception ex)
                {
                    Utils.LogError(ex, true);
                }
            }
            else
            {
                SPUtility.TransferToErrorPage(LocalizedString.GetGlobalString("FBAPackWebPages", "UserNotFound"));
            }
        }
Example #12
0
        //protected override bool RequireSiteAdministrator
        //{
        //    get { return true; }
        //}

        protected void OnSubmit(object sender, EventArgs e)
        {
            // check to see if username already in use
            MembershipUser user = Utils.BaseMembershipProvider().GetUser(txtUsername.Text, false);

            if (user == null)
            {
                try
                {
                    // get site reference
                    string provider = Utils.GetMembershipProvider(this.Site);

                    // create FBA database user
                    MembershipCreateStatus createStatus;

                    //user = Utils.BaseMembershipProvider().CreateUser(txtUsername.Text, txtPassword.Text, txtEmail.Text, null, null, false, null, out createStatus);
                    //这里不应该写入邮箱,邮箱应该在激活成功后更新进去
                    //如果激活邮件用户没收到,之前的设计是希望用户使用通过邮件找回账号的方式重置密码,同时激活账号
                    //但没考到到如果之前输入了错误的邮箱号,或者这个邮箱本身打不开了怎么办,这样这个用户名就“死”了
                    //现在改成在激活后写入邮箱属性,就没有这个问题

                    user = Utils.BaseMembershipProvider().CreateUser(txtUsername.Text, txtPassword.Text, null, null, null, false, null, out createStatus);

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

                    if (user == null)
                    {
                        lblMessage.Text = LocalizedString.GetGlobalString("FBAPackWebPages", "UnknownError");
                        return;
                    }


                    //Utils.BaseRoleProvider().AddUsersToRoles(new string[] { user.UserName }, new string[] { "Registered" });
                    //不能这个时候加Role,应该是在邮件激活后加入一个EmailValidated Role
                    SendActivationEmailAndRedirect(user, txtEmail.Text.Trim().ToLower());
                }
                catch (Exception ex)
                {
                    Utils.LogError(ex, true);
                }
            }
            //else if (!string.IsNullOrEmpty(user.Email) && user.IsApproved)
            //{
            //    lblMessage.Text = LocalizedString.GetGlobalString("MyResource", "DuplicateUserNameWithEmail"); ;
            //}
            else
            {
                //这里 还得先验证下用户名密码
                if (Utils.BaseMembershipProvider().ValidateUser(txtUsername.Text, txtPassword.Text))
                {
                    //绑定邮箱到Weixin自动生成的账户
                    SendActivationEmailAndRedirect(user, txtEmail.Text.Trim().ToLower());
                }
                else
                {
                    lblMessage.Text = LocalizedString.GetGlobalString("MyResource", "PasswordIncorrect");
                }
            }
        }