Commits

Sachirou Inoue  committed 3a292e4

Reset password.

  • Participants
  • Parent commits 7e8dc40

Comments (0)

Files changed (4)

File UserControl/User.cs

             }
         }
 
+        public static readonly string DefaultPass = "000";
         private string _Pass;
         public string Pass
         {
             Pass = pass;
             Age = DefaultAge;
         }
+
+        public void ResetPass()
+        {
+            Pass = DefaultPass;
+        }
     }
 }

File UserControl/update.aspx

             <div class="userFormItem">
                 <div class="userFormItemName">Pass</div>
                 <div class="userFormItemInput">
-                    <asp:TextBox ID="TextBoxPass" runat="server"></asp:TextBox>
+                    <asp:Label ID="LabelPass" runat="server" Text="********"></asp:Label>
+                    <asp:LinkButton ID="LinkButtonResetPassword" runat="server" 
+                        onclick="LinkButtonResetPassword_Click">Reset Password</asp:LinkButton>
                 </div>
             </div>
             <div class="userFormItem">
                 <asp:RegularExpressionValidator ID="RegularExpressionValidatorName" 
                     runat="server" ErrorMessage="名前の書式が違います。" ControlToValidate="TextBoxName" 
                     ValidationExpression=".{1,20}" CssClass="error"></asp:RegularExpressionValidator>
-                <asp:RequiredFieldValidator ID="RequiredFieldValidatorPass" runat="server" 
-                    ErrorMessage="パスワードは必須です。" ControlToValidate="TextBoxPass" 
-                    CssClass="error"></asp:RequiredFieldValidator>
-                <asp:RegularExpressionValidator ID="RegularExpressionValidatorPass" 
-                    runat="server" ErrorMessage="パスワードの書式が違います。" 
-                    ControlToValidate="TextBoxPass" CssClass="error" 
-                    ValidationExpression="[A-Za-z0-9]{1,3}"></asp:RegularExpressionValidator>
                 <asp:RegularExpressionValidator ID="RegularExpressionValidatorAge" 
                     runat="server" ErrorMessage="年齢の書式が違います。" ControlToValidate="TextBoxAge" 
                     ValidationExpression="[1-9][0-9]*" CssClass="error"></asp:RegularExpressionValidator>

File UserControl/update.aspx.cs

     {
         private static string MainPageUrl = "view.aspx";
 
+        private User _TargetUser;
+        private User TargetUser
+        {
+            get
+            {
+                if (_TargetUser == null)
+                {
+                    string userID = HttpUtility.UrlDecode(Request.QueryString["id"]);
+                    if (userID != null) _TargetUser = new Users().FindUserByID(userID);
+                }
+                return _TargetUser;
+            }
+        }
+
         private void ShowError(string message)
         {
             LabelError.Text = HttpUtility.HtmlEncode(message);
         {
             if (new Login(Session).LoginID == null) Response.Redirect(Login.LoginUrl);
 
+            if (TargetUser == null) Response.Redirect(MainPageUrl);
             if (!IsPostBack)
             {
-                string userID = HttpUtility.UrlDecode(Request.QueryString["id"]);
-                if (userID == null) Response.Redirect(MainPageUrl);
-                User user = new Users().FindUserByID(userID);
-                if (user == null) Response.Redirect(MainPageUrl);
-                LabelUserID.Text = HttpUtility.HtmlEncode(userID);
-                TextBoxName.Text = user.Name;
-                TextBoxPass.Text = user.Pass;
-                TextBoxAge.Text = user.Age.ToString();
+                LabelUserID.Text = HttpUtility.HtmlEncode(TargetUser.ID);
+                TextBoxName.Text = TargetUser.Name;
+                TextBoxAge.Text = TargetUser.Age.ToString();
             }
         }
 
         {
             uint age;
             if (!uint.TryParse(TextBoxAge.Text, out age)) age = 0;
-            User user;
             try
             {
-                user = new User(Request.QueryString["id"],
-                    TextBoxName.Text,
-                    TextBoxPass.Text,
-                    age);
+                TargetUser.Name = TextBoxName.Text;
+                TargetUser.Age = age;
+                if (!LinkButtonResetPassword.Enabled) TargetUser.ResetPass();
             }
             catch (FormatException err)
             {
                 ShowError(err.Message);
                 return;
             }
-            Session["TargetUser"] = user;
+            Session["TargetUser"] = TargetUser;
             Response.Redirect("confirm.aspx");
         }
+
+        protected void LinkButtonResetPassword_Click(object sender, EventArgs e)
+        {
+            TargetUser.ResetPass();
+            LabelPass.Text = TargetUser.Pass;
+            LinkButtonResetPassword.Enabled = false;
+        }
     }
 }

File UserControl/update.aspx.designer.cs

         protected global::System.Web.UI.WebControls.TextBox TextBoxName;
         
         /// <summary>
-        /// TextBoxPass コントロール。
+        /// LabelPass コントロール。
         /// </summary>
         /// <remarks>
         /// 自動生成されたフィールド。
         /// 変更するには、フィールドの宣言をデザイナ ファイルから分離コード ファイルに移動します。
         /// </remarks>
-        protected global::System.Web.UI.WebControls.TextBox TextBoxPass;
+        protected global::System.Web.UI.WebControls.Label LabelPass;
         
         /// <summary>
-        /// TextBoxAge コントロール。
+        /// LinkButtonResetPassword コントロール。
         /// </summary>
         /// <remarks>
         /// 自動生成されたフィールド。
         /// 変更するには、フィールドの宣言をデザイナ ファイルから分離コード ファイルに移動します。
         /// </remarks>
-        protected global::System.Web.UI.WebControls.TextBox TextBoxAge;
+        protected global::System.Web.UI.WebControls.LinkButton LinkButtonResetPassword;
         
         /// <summary>
-        /// LabelError コントロール。
-        /// </summary>
-        /// <remarks>
-        /// 自動生成されたフィールド。
-        /// 変更するには、フィールドの宣言をデザイナ ファイルから分離コード ファイルに移動します。
-        /// </remarks>
-        protected global::System.Web.UI.WebControls.Label LabelError;
-        
-        /// <summary>
-        /// RegularExpressionValidatorName コントロール。
+        /// TextBoxAge コントロール。
         /// </summary>
         /// <remarks>
         /// 自動生成されたフィールド。
         /// 変更するには、フィールドの宣言をデザイナ ファイルから分離コード ファイルに移動します。
         /// </remarks>
-        protected global::System.Web.UI.WebControls.RegularExpressionValidator RegularExpressionValidatorName;
+        protected global::System.Web.UI.WebControls.TextBox TextBoxAge;
         
         /// <summary>
-        /// RequiredFieldValidatorPass コントロール。
+        /// LabelError コントロール。
         /// </summary>
         /// <remarks>
         /// 自動生成されたフィールド。
         /// 変更するには、フィールドの宣言をデザイナ ファイルから分離コード ファイルに移動します。
         /// </remarks>
-        protected global::System.Web.UI.WebControls.RequiredFieldValidator RequiredFieldValidatorPass;
+        protected global::System.Web.UI.WebControls.Label LabelError;
         
         /// <summary>
-        /// RegularExpressionValidatorPass コントロール。
+        /// RegularExpressionValidatorName コントロール。
         /// </summary>
         /// <remarks>
         /// 自動生成されたフィールド。
         /// 変更するには、フィールドの宣言をデザイナ ファイルから分離コード ファイルに移動します。
         /// </remarks>
-        protected global::System.Web.UI.WebControls.RegularExpressionValidator RegularExpressionValidatorPass;
+        protected global::System.Web.UI.WebControls.RegularExpressionValidator RegularExpressionValidatorName;
         
         /// <summary>
         /// RegularExpressionValidatorAge コントロール。