commit 364522041885bd23c8c03033a10c854b985ac4f9
parent ef4e68395be724ca65805d10e52cc261f9b5b09a
Author: dankert <openrat@jandankert.de>
Date: Wed, 9 Mar 2022 02:12:03 +0100
New: Only save a property if it is send by the client. This is useful using a API, so not sent properties will not be deleted.
Diffstat:
1 file changed, 41 insertions(+), 16 deletions(-)
diff --git a/modules/cms/action/profile/ProfileEditAction.class.php b/modules/cms/action/profile/ProfileEditAction.class.php
@@ -43,27 +43,52 @@ class ProfileEditAction extends ProfileAction implements Method {
}
+
+
+ /**
+ * Saving the user profile.
+ *
+ * @return void
+ */
public function post() {
- $this->user->fullname = $this->request->getRequiredText('fullname');
- $this->user->tel = $this->request->getText('tel' );
- $this->user->desc = $this->request->getText('desc' );
- $this->user->style = $this->request->getText('style' );
- $this->user->language = $this->request->getText('language');
- $this->user->timezone = $this->request->getText('timezone');
- $this->user->hotp = $this->request->has('hotp' );
- $this->user->totp = $this->request->has('totp' );
-
+
+ $this->request->handleText('fullname',function($value) {
+ $this->user->fullname = $value;
+ });
+
+ $this->request->handleText('tel',function($value) {
+ $this->user->tel = $value;
+ });
+
+ $this->request->handleText('desc',function($value) {
+ $this->user->desc = $value;
+ });
+
+ $this->request->handleText('style',function($value) {
+ $this->user->style = $value;
+ });
+
+ $this->request->handleText('language',function($value) {
+ $this->user->language = $value;
+ $this->setLanguage($value); // Change language immediately
+ });
+
+ $this->request->handleText('timezone',function($value) {
+ $this->user->timezone = $value;
+ });
+
+ $this->request->handleBoolDefaultFalse('hotp',function($value) {
+ $this->user->hotp = $value;
+ });
+
+ $this->request->handleBoolDefaultFalse('totp',function($value) {
+ $this->user->totp = $value;
+ });
+
// Overwrite user in session with new settings.
Session::setUser( $this->user );
$this->user->persist();
$this->addNoticeFor( $this->user,Messages::SAVED);
-
-
- // Ausgewählte Sprache sofort verwenden.
- $l = $this->request->getText('language');
-
- if ( $l )
- $this->setLanguage($l);
}
}