openrat-cms

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

LoginRegistercodeAction.class.php (1833B)


      1 <?php
      2 namespace cms\action\login;
      3 use cms\action\LoginAction;
      4 use cms\action\Method;
      5 use cms\base\Configuration;
      6 use cms\base\DB;
      7 use cms\model\User;
      8 use language\Messages;
      9 use util\exception\ValidationException;
     10 use util\Session;
     11 
     12 
     13 class LoginRegistercodeAction extends LoginAction implements Method {
     14     public function view() {
     15 		$conf = Configuration::rawConfig();
     16 
     17 		$this->setTemplateVar( 'dbids',$this->getSelectableDatabases() );
     18 		
     19 		$db = DB::get();
     20 		if	( $db )
     21 			$this->setTemplateVar('actdbid',$db->id);
     22 		else
     23 			$this->setTemplateVar('actdbid',$conf['database-defaults']['default-id']);
     24 		
     25 		
     26 		
     27     }
     28 
     29 
     30 
     31     public function post() {
     32 		$conf = Configuration::rawConfig();
     33 
     34 		$origRegisterCode  = Session::get( Session::KEY_REGISTER_CODE );
     35 		$inputRegisterCode = $this->request->getText('code');
     36 		
     37 		if	( $origRegisterCode != $inputRegisterCode )
     38 			throw new ValidationException('code', Messages::CODE_NOT_MATCH ); // Validation code does not match.
     39 
     40 		// Best?tigungscode stimmt ?berein.
     41 		// Neuen Benutzer anlegen.
     42 			
     43 		$user = User::loadWithName( $this->request->getRequiredText('username'),User::AUTH_TYPE_INTERNAL );
     44 		if	( $user )
     45 			throw new ValidationException('username',Messages::USER_ALREADY_IN_DATABASE );
     46 
     47 		if	( strlen($this->request->getText('password')) < $conf['security']['password']['min_length'] )
     48 			throw new ValidationException('password', Messages::PASSWORD_MINLENGTH/*,[
     49 				'minlength'=>$conf['security']['password']['min_length']
     50 			]*/);
     51 
     52 		$newUser = new User();
     53 		$newUser->name = $this->request->getText('username');
     54 		$newUser->fullname = $newUser->name;
     55 		$newUser->mail = Session::get( Session::KEY_REGISTER_MAIL );
     56 
     57 		$newUser->persist();
     58 
     59 		$newUser->setPassword( $this->request->getText('password'),true );
     60 			
     61 		$this->addNoticeFor( $newUser,Messages::USER_ADDED);
     62     }
     63 }