File modules/cms/action/user/UserPropAction.class.php

Last commit: Wed Mar 9 13:28:52 2022 +0100	dankert	Refactoring: Checkbox values are always sent to the server. In the actions we must test the value with 'isTrue()'
1 <?php 2 namespace cms\action\user; 3 use cms\action\Method; 4 use cms\action\UserAction; 5 use cms\base\Configuration; 6 use cms\base\Startup; 7 use language\Messages; 8 use security\Base2n; 9 use security\OTP; 10 use security\Password; 11 12 13 class UserPropAction extends UserAction implements Method { 14 public function view() { 15 $issuer = urlencode(Configuration::subset('application')->get('operator',Startup::TITLE)); 16 $account = $this->user->name.'@'.$_SERVER['SERVER_NAME']; 17 18 $base32 = new Base2n(5, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567', FALSE, TRUE, TRUE); 19 $secret = $base32->encode(@hex2bin($this->user->otpSecret)); 20 21 $counter = $this->user->hotpCount; 22 23 $this->setTemplateVars( 24 $this->user->getProperties() + 25 array('totpSecretUrl' => "otpauth://totp/{$issuer}:{$account}?secret={$secret}&issuer={$issuer}", 26 'hotpSecretUrl' => "otpauth://hotp/{$issuer}:{$account}?secret={$secret}&issuer={$issuer}&counter={$counter}" 27 ) 28 + array('totpToken'=> OTP::getTOTPCode($this->user->otpSecret)) 29 ); 30 31 $this->setTemplateVar( 'allstyles',$this->user->getAvailableStyles() ); 32 33 $this->setTemplateVar('timezone_list',array_combine(timezone_identifiers_list(),timezone_identifiers_list() )); 34 35 $languages = Messages::$AVAILABLE_LANGUAGES; 36 foreach($languages as $id=>$name) 37 { 38 unset($languages[$id]); 39 $languages[$name] = $name; 40 } 41 $this->setTemplateVar('language_list',$languages); 42 43 } 44 45 46 /** 47 * Save the user properties. 48 */ 49 public function post() { 50 51 $this->request->handleText('name', function($name) { 52 $this->user->name = $name; 53 } ); 54 55 $this->request->handleText('fullname', function($fullname) { 56 $this->user->fullname = $fullname; 57 }); 58 59 $this->request->handleBool('is_admin', function($isAdmin) { 60 $this->user->isAdmin = $isAdmin; 61 }); 62 63 $this->request->handleText( 'tel',function($tel) { 64 $this->user->tel = $tel; 65 }); 66 67 $this->request->handleText( 'desc',function($desc) { 68 $this->user->desc = $desc; 69 }); 70 71 $this->request->handleText( 'language',function($language) { 72 $this->user->language = $language; 73 }); 74 75 $this->request->handleText( 'timezone',function($timezone) { 76 $this->user->timezone = $timezone; 77 }); 78 79 $this->request->handleText( 'hotp',function($hotp) { 80 $this->user->hotp = $hotp; 81 }); 82 83 $this->request->handleText( 'totp',function($value) { 84 $this->user->totp = $value; 85 }); 86 87 if ( Configuration::get(['security','user','show_admin_mail']) ) 88 $this->request->handleText( 'mail',function($value) { 89 $this->user->mail = $value; 90 }); 91 92 $this->request->handleText( 'style',function($value) { 93 $this->user->style = $value; 94 }); 95 96 $this->user->persist(); 97 $this->addNoticeFor($this->user,Messages::SAVED); 98 } 99 }
Download modules/cms/action/user/UserPropAction.class.php
History Wed, 9 Mar 2022 13:28:52 +0100 dankert Refactoring: Checkbox values are always sent to the server. In the actions we must test the value with 'isTrue()' Wed, 9 Mar 2022 00:53:10 +0100 dankert Fix: Setting the correct timezone from the user property. Wed, 9 Mar 2022 00:52:23 +0100 dankert 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. Wed, 23 Feb 2022 00:38:24 +0100 dankert New: Enable HOTP with counter synchronization; New: TOTP of the last period are valid too. Fri, 26 Feb 2021 01:06:01 +0100 Jan Dankert Refactoring accessing the request parameter values. Thu, 19 Nov 2020 14:49:58 +0100 Jan Dankert Fix: Action::addNotice() is replaced by Action::addNoticeFor() Wed, 18 Nov 2020 01:46:36 +0100 Jan Dankert Refactoring of model classes: New method persist() and some other cleanups. Tue, 17 Nov 2020 23:51:00 +0100 Jan Dankert Refactoring: Every Actionmethod has now its own class.