예제 #1
0
파일: User.php 프로젝트: uwitec/mgoa
 public static function authentication($username_or_email, $password, $by = 'username')
 {
     import('system/share/network/session');
     Session::start();
     if (self::is_authenticated() && self::$info && $_SESSION[self::SESSION_NAME]) {
         return self::$info;
     }
     if (!in_array($by, array('username', 'email'))) {
         return false;
     }
     try {
         DatabaseBackend::load_model('system/contrib/auth');
         $user = Doctrine_Query::create()->select('*')->from('User u')->leftJoin('u.Group g')->where(sprintf('u.%s="%s"', $by, $username_or_email))->fetchOne();
         if (!$user) {
             return _('Username or email does not exits');
         }
         list($func, $random, $encryped) = explode('$', $user->password);
         if ($user->password && $user->password === self::generate_password($password, $random, $func)) {
             self::$is_authenticated = true;
             self::$info = $_SESSION[self::SESSION_NAME] = array('id' => $user->id, 'username' => $user->username, 'group' => array('id' => $user->Group->id, 'name' => $user->Group->name));
             if ($user->Role) {
                 foreach ($user->Role as $role) {
                     self::$info['role'][] = $_SESSION[self::SESSION_NAME]['role'][] = array('id' => $role->id, 'name' => $role->name, 'alias' => $role->alias);
                 }
             }
         } else {
             return _("Password doesn't match");
         }
     } catch (Doctrine_Query_Exception $e) {
         return _('System error');
     }
     return $user ? $user : _('Username or email does not exits');
 }
예제 #2
0
파일: application.php 프로젝트: uwitec/mgoa
 protected function __load__model__($model, $init_connect = true, $dsn = null)
 {
     import('system/bin/doctrine');
     $tmp = explode('.', $model);
     DatabaseBackend::init($dsn, $init_connect);
     DatabaseBackend::load_model($tmp[0], $tmp[1]);
 }