コード例 #1
0
ファイル: Information.php プロジェクト: penSecIT/PHProjekt
 /**
  * Sets a fields definitions for each field.
  *
  * @return void
  */
 public function setFields()
 {
     // username
     $this->fillField('username', 'Username', 'text', 1, 1, array('required' => true, 'length' => 255));
     // password
     $this->fillField('password', 'Password', 'password', 0, 2, array('length' => 50));
     // firstname
     $this->fillField('firstname', 'First name', 'text', 2, 3, array('required' => true, 'length' => 255));
     // lastname
     $this->fillField('lastname', 'Last name', 'text', 3, 4, array('required' => true, 'length' => 255));
     // email
     $this->fillField('email', 'Email', 'text', 0, 5, array('length' => 255));
     // language
     $range = array();
     $languageRange = Phprojekt_LanguageAdapter::getLanguageList();
     foreach ($languageRange as $key => $value) {
         $range[] = $this->getRangeValues($key, $value);
     }
     $this->fillField('language', 'Language', 'selectbox', 0, 6, array('range' => $range, 'required' => true, 'default' => 'en'));
     // timeZone
     $range = array();
     $timeZoneRange = Phprojekt_Converter_Time::getTimeZones();
     foreach ($timeZoneRange as $key => $value) {
         $range[] = $this->getRangeValues($key, $value);
     }
     $this->fillField('timeZone', 'Time zone', 'selectbox', 0, 7, array('range' => $range, 'required' => true, 'default' => '000'));
     // status
     $this->fillField('status', 'Status', 'selectbox', 4, 8, array('range' => array($this->getFullRangeValues('A', 'Active'), $this->getFullRangeValues('I', 'Inactive')), 'default' => 'A'));
     // admin
     $this->fillField('admin', 'Admin', 'selectbox', 5, 9, array('range' => array($this->getFullRangeValues(0, 'No'), $this->getFullRangeValues(1, 'Yes')), 'integer' => true, 'default' => 0));
 }
コード例 #2
0
 /**
  * Test name of the class
  */
 public function testToString()
 {
     $lang = new Phprojekt_LanguageAdapter(array('locale' => 'es', 'content' => '-'));
     $string = $lang->toString();
     $this->assertEquals('Phprojekt', $string);
 }
コード例 #3
0
ファイル: Setting.php プロジェクト: penSecIT/PHProjekt
 /**
  * Constructor.
  *
  * @return void
  */
 public function __construct()
 {
     $this->_languageRange = Phprojekt_LanguageAdapter::getLanguageList();
     $this->_timeZoneRange = Phprojekt_Converter_Time::getTimeZones();
 }
コード例 #4
0
ファイル: Auth.php プロジェクト: RainyBlueSky/PHProjekt
 private static function _ldapIntegration($userId, $username, $password, $loginServer = null)
 {
     $userId = intval($userId);
     $conf = Phprojekt::getInstance()->getConfig();
     $ldapOptions = $conf->authentication->ldap->toArray();
     // Zend library does not allow determining from which server the user was found from
     // That's why we need to request the server from the user during login.
     $account = null;
     if ($loginServer !== null && array_key_exists($loginServer, $ldapOptions)) {
         $searchOpts = $ldapOptions[$loginServer];
         try {
             $ldap = new Zend_Ldap($searchOpts);
             $ldap->connect();
             $ldap->bind($username, $password);
             $filter = sprintf("(\n                        &(\n                           |(objectclass=posixAccount)\n                            (objectclass=Person)\n                        )\n                        (\n                            |(uid=%s)\n                             (samAccountName=%s)\n                         )\n                    )", $username, $username);
             $result = $ldap->search($filter, $searchOpts['baseDn']);
             $account = $result->getFirst();
             $ldap->disconnect();
         } catch (Exception $e) {
             throw new Phprojekt_Auth_Exception('Failed to establish a search connection to the LDAP server:' . ' ' . $server . ' ' . 'Please check your configuration for that server.', 8);
         }
     } else {
         throw new Phprojekt_Auth_Exception('Server not specified during login! "
             . "Please check that your login screen contains the login domain selection.', 9);
     }
     if ($account !== null) {
         // User found
         $integration = isset($conf->authentication->integration) ? $conf->authentication->integration->toArray() : array();
         $firstname = "";
         $lastname = "";
         $email = "";
         if (isset($account['givenname'])) {
             $firstname = $account['givenname'][0];
         }
         if (isset($account['sn'])) {
             $lastname = $account['sn'][0];
         }
         if (isset($account['mail'])) {
             $email = $account['mail'][0];
         }
         // Set user params
         $params = array();
         $params['id'] = intval($userId);
         // New user has id = 0
         $params['username'] = $username;
         $params['password'] = $password;
         $admins = array();
         if (isset($integration['systemAdmins'])) {
             $admins = split(",", $integration['systemAdmins']);
             foreach ($admins as $key => $admin) {
                 $admins[$key] = trim($admin);
             }
         }
         $params['admin'] = in_array($username, $admins) ? 1 : 0;
         // Default to non-admin (0)
         if ($userId > 0) {
             $user = self::_getUser($userId);
             $params['admin'] = intval($user->admin);
         }
         // Integrate with parameters found from LDAP server
         $params['firstname'] = $firstname;
         $params['lastname'] = $lastname;
         $params['email'] = $email;
         if ($userId > 0) {
             // Update user parameters with those found from LDAP server
             $user->find($userId);
             $params['id'] = $userId;
             if (!self::_saveUser($params)) {
                 throw new Phprojekt_Auth_Exception('User update failed for LDAP parameters', 10);
             }
         } else {
             // Add new user to PHProjekt
             // TODO: Default conf could be defined in configuration
             // Lists needed for checks ?
             // Set default parameters for users
             $params['status'] = "A";
             // Active user
             $params['language'] = isset($conf->language) ? $conf->language : "en";
             // Conf language / English
             $params['timeZone'] = "0000";
             // (GMT) Greenwich Mean Time: Dublin, Edinburgh, Lisbon, London
             // Default integration vals from config
             if (isset($integration['admin']) && $params['admin'] == 0) {
                 $val = intval($integration['admin']);
                 if ($val == 1 || $val == 0) {
                     $params['admin'] = $val;
                 }
             }
             if (isset($integration['status'])) {
                 $val = trim(strtoupper($integration['status']));
                 if (in_array($val, array("A", "I"))) {
                     $params['status'] = $val;
                 }
             }
             if (isset($integration['language'])) {
                 $val = trim(strtolower($integration['language']));
                 $languages = Phprojekt_LanguageAdapter::getLanguageList();
                 if (array_key_exists($val, $languages)) {
                     $params['language'] = $val;
                 } else {
                     if (($val = array_search('(' . $val . ')', $languages)) !== false) {
                         $params['language'] = $val;
                     }
                 }
             }
             if (isset($integration['timeZone'])) {
                 $val = trim(strtolower($integration['timeZone']));
                 $timezones = Phprojekt_Converter_Time::getTimeZones();
                 if (array_key_exists($val, $timezones)) {
                     $params['timeZone'] = $val;
                 } else {
                     if (($val = array_search($val, $timezones)) !== false) {
                         $params['timeZone'] = $val;
                     }
                 }
             }
             if (!self::_saveUser($params)) {
                 throw new Phprojekt_Auth_Exception('User creation failed after LDAP authentication', 10);
             }
         }
     } else {
         throw new Phprojekt_Auth_Exception('Failed to find the LDAP user with the given username', 11);
     }
 }
コード例 #5
0
 /**
  * Test name of the class
  */
 public function testToString()
 {
     $lang = new Phprojekt_LanguageAdapter('es');
     $string = $lang->toString();
     $this->assertEquals('Phprojekt', $string);
 }