summaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
authoremkael <emkael@tlen.pl>2016-03-10 16:36:52 +0100
committeremkael <emkael@tlen.pl>2016-03-10 16:36:52 +0100
commit8a4afbcfefb283d8217ae6be0f96d7e01bbbd21d (patch)
tree34056cdd9c0fbab1919fb11dfd07079a0c9a2741 /app
parentf2cdce29953391437018fcc69d08451d4b4a17f2 (diff)
* password change form in profile page
Diffstat (limited to 'app')
-rw-r--r--app/php/components/HeaderMenu.tpl4
-rw-r--r--app/php/pages/Profile.page53
-rw-r--r--app/php/pages/Profile.php17
3 files changed, 73 insertions, 1 deletions
diff --git a/app/php/components/HeaderMenu.tpl b/app/php/components/HeaderMenu.tpl
index eceea1b..ff1d417 100644
--- a/app/php/components/HeaderMenu.tpl
+++ b/app/php/components/HeaderMenu.tpl
@@ -3,6 +3,10 @@
<prop:NavigateUrl><%= $this->Service->constructUrl('Login') %></prop:NavigateUrl>
<prop:Visible><%= $this->User->IsGuest %></prop:Visible>
</com:THyperLink>
+ <com:THyperLink Text="Profile">
+ <prop:NavigateUrl><%= $this->Service->constructUrl('Profile') %></prop:NavigateUrl>
+ <prop:Visible><%= !$this->User->IsGuest %></prop:Visible>
+ </com:THyperLink>
<com:TActiveLinkButton OnCommand="logoutUser">
<prop:Text>Logout (<%= $this->User->Name %>)</prop:Text>
<prop:Visible><%= !$this->User->IsGuest %></prop:Visible>
diff --git a/app/php/pages/Profile.page b/app/php/pages/Profile.page
index b5dcf37..71ed112 100644
--- a/app/php/pages/Profile.page
+++ b/app/php/pages/Profile.page
@@ -1,3 +1,54 @@
<com:TContent ID="Content">
- Profile
+ Change password<br />
+ Current password:
+ <com:TTextBox ID="Password"
+ TextMode="Password"
+ ValidationGroup="ChangePasswordGroup" />
+ <com:TRequiredFieldValidator
+ ControlToValidate="Password"
+ Display="Dynamic"
+ ErrorMessage="Current password cannot be empty"
+ ValidationGroup="ChangePasswordGroup" />
+ <com:TCustomValidator
+ ControlToValidate="Password"
+ OnServerValidate="checkPassword"
+ Display="Dynamic"
+ ErrorMessage="Password is incorrect"
+ ValidationGroup="ChangePasswordGroup" />
+ <br />
+ New password:
+ <com:TTextBox ID="NewPassword"
+ TextMode="Password"
+ ValidationGroup="ChangePasswordGroup" />
+ <com:TRequiredFieldValidator
+ ControlToValidate="NewPassword"
+ Display="Dynamic"
+ ErrorMessage="New password cannot be empty"
+ ValidationGroup="ChangePasswordGroup" />
+ <br />
+ Repeat password:
+ <com:TTextBox ID="ReNewPassword"
+ TextMode="Password"
+ ValidationGroup="ChangePasswordGroup" />
+ <com:TRequiredFieldValidator
+ ControlToValidate="ReNewPassword"
+ Display="Dynamic"
+ ErrorMessage="New password cannot be empty"
+ ValidationGroup="ChangePasswordGroup" />
+ <com:TCompareValidator
+ ControlToValidate="ReNewPassword"
+ ControlToCompare="NewPassword"
+ DataType="String"
+ Operator="Equal"
+ Display="Dynamic"
+ ErrorMessage="Passwords don't match"
+ ValidationGroup="ChangePasswordGroup" />
+ <br />
+ <com:TButton
+ Text="Change password"
+ OnCommand="changePassword"
+ ValidationGroup="ChangePasswordGroup" />
+ <com:TLabel ID="SuccessMessage"
+ Text="Your password has been changed"
+ Visible="false" />
</com:TContent>
diff --git a/app/php/pages/Profile.php b/app/php/pages/Profile.php
index fb2c89f..6df87bc 100644
--- a/app/php/pages/Profile.php
+++ b/app/php/pages/Profile.php
@@ -2,6 +2,23 @@
class Profile extends TPage {
+ public function checkPassword($sender, $param) {
+ $param->IsValid = DbUser::verifyPassword(
+ $this->Password->Text, $this->User->DbRecord->Password
+ );
+ }
+
+ public function changePassword($sender, $param) {
+ $this->SuccessMessage->Visible = FALSE;
+ if ($this->Page->IsValid) {
+ $this->User->DbRecord->Password = DbUser::generatePassword(
+ $this->NewPassword->Text
+ );
+ $this->User->DbRecord->save();
+ $this->SuccessMessage->Visible = TRUE;
+ }
+ }
+
}
?>