openrat-cms

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

ProfileEditAction.class.php (2676B)


      1 <?php
      2 namespace cms\action\profile;
      3 use cms\action\Method;
      4 use cms\action\ProfileAction;
      5 use cms\base\Configuration;
      6 use cms\base\Startup;
      7 use language\Language;
      8 use language\Messages;
      9 use security\Base2n;
     10 use util\Request;
     11 use util\Session;
     12 
     13 class ProfileEditAction extends ProfileAction 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 	    $counter = $this->user->hotpCount;
     21 	    
     22 	    $this->setTemplateVars( $this->user->getProperties() );
     23 
     24 		$this->setTemplateVar( 'allstyles',$this->user->getAvailableStyles() );
     25 		
     26 		$this->setTemplateVar('timezone_list',array_combine(timezone_identifiers_list(),timezone_identifiers_list()) );
     27 		
     28 		$languageList = [];
     29 
     30 		foreach( Messages::$AVAILABLE_LANGUAGES as $languageIsoCode)
     31 		{
     32 			$language = (new Language)->getLanguage($languageIsoCode);
     33 			$label    = $language[ Messages::SELF_NAME ];
     34 		    $languageList[ $languageIsoCode ] = $label;
     35 		}
     36 		$this->setTemplateVar('language_list',$languageList );
     37 		
     38 		$this->setTemplateVars(
     39 		    $this->user->getProperties() +
     40 		    array('totpSecretUrl' => "otpauth://totp/{$issuer}:{$account}?secret={$secret}&issuer={$issuer}",
     41 		    'hotpSecretUrl' => "otpauth://hotp/{$issuer}:{$account}?secret={$secret}&issuer={$issuer}&counter={$counter}"
     42 		    )
     43 		);
     44 		
     45 		
     46     }
     47 
     48 
     49 	/**
     50 	 * Saving the user profile.
     51 	 *
     52 	 * @return void
     53 	 */
     54     public function post() {
     55 
     56 		$this->request->handleText('fullname',function($value) {
     57 			$this->user->fullname = $value;
     58 		});
     59 
     60 		$this->request->handleText('tel',function($value) {
     61 			$this->user->tel = $value;
     62 		});
     63 
     64 		$this->request->handleText('desc',function($value) {
     65 			$this->user->desc = $value;
     66 		});
     67 
     68 		$this->request->handleText('style',function($value) {
     69 			$this->user->style = $value;
     70 		});
     71 
     72 		$this->request->handleText('language',function($value) {
     73 			$this->user->language = $value;
     74 			$this->setLanguage($value); // Change language immediately
     75 		});
     76 
     77 		$this->request->handleText('timezone',function($value) {
     78 			$this->user->timezone = $value;
     79 		});
     80 
     81 		$this->request->handleBool('hotp',function($value) {
     82 			$this->user->hotp = $value;
     83 		});
     84 
     85 		$this->request->handleBool('totp',function($value) {
     86 			$this->user->totp = $value;
     87 		});
     88 
     89 		// Overwrite user in session with new settings.
     90 		Request::setUser( $this->user );
     91 		
     92 		$this->user->persist();
     93 		$this->addNoticeFor( $this->user,Messages::SAVED);
     94     }
     95 }