openrat-cms

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README

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 }