UserPropAction.class.php (2876B)
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 }