コード例 #1
0
ファイル: Login.php プロジェクト: Killerfun/galette
 /**
  * Logs in user.
  *
  * @param string $user  user's login
  * @param string $passe user's password
  *
  * @return boolean
  */
 public function logIn($user, $passe)
 {
     global $zdb, $i18n, $session;
     try {
         $select = $zdb->select(self::TABLE, 'a');
         $select->columns(array('id_adh', 'bool_admin_adh', 'nom_adh', 'prenom_adh', 'mdp_adh', 'pref_lang', 'activite_adh', 'bool_exempt_adh', 'date_echeance'))->join(array('b' => PREFIX_DB . Status::TABLE), 'a.' . Status::PK . '=b.' . Status::PK, array('priorite_statut'));
         $select->where(array(self::PK => $user));
         $results = $zdb->execute($select);
         if ($results->count() == 0) {
             Analog::log('No entry found for login `' . $user . '`', Analog::WARNING);
             return false;
         } else {
             $row = $results->current();
             //check if pawwsord matches
             $pw_checked = password_verify($passe, $row->mdp_adh);
             if (!$pw_checked) {
                 //if password did not match, we try old md5 method
                 $pw_checked = md5($passe) === $row->mdp_adh;
             }
             if ($pw_checked === false) {
                 //Passwords mismatch. Log and return.
                 Analog::log('Passwords mismatch for login `' . $user . '`', Analog::WARNING);
                 return false;
             }
             Analog::log('User `' . $user . '` logged in.', Analog::INFO);
             $this->id = $row->id_adh;
             $this->login = $user;
             $this->passe = $row->mdp_adh;
             $this->admin = $row->bool_admin_adh;
             $this->name = $row->nom_adh;
             $this->surname = $row->prenom_adh;
             $this->lang = $row->pref_lang;
             $i18n->changeLanguage($this->lang);
             $session['lang'] = serialize($i18n);
             $this->active = $row->activite_adh;
             $this->logged = true;
             if ($row->priorite_statut < Members::NON_STAFF_MEMBERS) {
                 $this->staff = true;
             }
             //check if member is up to date
             if ($row->bool_exempt_adh == true) {
                 //member is due free, he's up to date.
                 $this->uptodate = true;
             } else {
                 //let's check from end date, if present
                 if ($row->date_echeance == null) {
                     $this->uptodate = false;
                 } else {
                     $ech = new \DateTime($row->date_echeance);
                     $now = new \DateTime();
                     $now->setTime(0, 0, 0);
                     $this->uptodate = $ech >= $now;
                 }
             }
             //staff members and admins are de facto groups managers. For all
             //others, get managed groups
             if (!$this->isSuperAdmin() && !$this->isAdmin() && !$this->isStaff()) {
                 $this->managed_groups = Groups::loadManagedGroups($this->id, false);
             }
             return true;
         }
     } catch (AdapterException $e) {
         Analog::log('An error occured: ' . $e->getChainedException()->getMessage(), Analog::WARNING);
         Analog::log($e->getTrace(), Analog::ERROR);
         return false;
     } catch (\Exception $e) {
         Analog::log('An error occured: ' . $e->getMessage(), Analog::WARNING);
         Analog::log($e->getTrace(), Analog::ERROR);
         return false;
     }
 }
コード例 #2
0
ファイル: Adherent.php プロジェクト: Killerfun/galette
 /**
  * Load member groups
  *
  * @return void
  */
 public function loadGroups()
 {
     $this->_groups = Groups::loadGroups($this->_id);
     $this->_managed_groups = Groups::loadManagedGroups($this->_id);
 }