Kohana Драйвер для ldap

shit_happens

Новичок
Добрый день. Нужно сделать авторизацию по ldap
Подключаю в vendor библиотеку adLDAP, создаю свой драйвер:

PHP:
class Auth_Ldap extends Auth {

    protected function _login($username, $password, $remember) {
        $adldap = new adLDAP();
       
        $authUser = $adldap->user()->authenticate($username, $password);
        if ($authUser == true) {
            //проверим есть ли такой юзер в таблице, если нет, занесем в таблицу
            $user = ORM::factory('User')->where('username', '=', $username)->find();

            if (!$user->id) {
                    $user = ORM::factory('user');
                    $user->username = $username;
                    $user->password = NULL;
                    $user->date = date('Y-m-d');
                    $user->save();
                    $user->add('roles', ORM::factory('role', array('name' => 'login')));
            }
            return true;
        }
        else {
            return false;
        }       
    }
   
    public function password($username) {       
    }
   
    public function check_password($password) {   
    }
   
}
Но что-то не авторизовывает(( Если неправильно ввожу логин с паролем, то сообщает что неправильно, а если правильно, перебрасывает на пустую форму авторизации.
Подскажите что еще нужно сделать.
 

Здыхлик

Kohaner
Команда форума
Для начала - убедиться, что метод login() возвращает TRUE. Если возвращает - значит с модулем все ок. Надо проверять работу сессии и тд.
 

shit_happens

Новичок
Спасибо за ответ. Метод login() возвращает true. Только почему-то объект user не создается. Видимо из-за того что пароля то нет. Заработало вот так:

PHP:
class Auth_Ldap extends Auth {

    protected function _login($username, $password, $remember) {
        $adldap = new adLDAP();
   
        $authUser = $adldap->user()->authenticate($username, $password);
        if ($authUser == true) {
            //проверим есть ли такой юзер в таблице, если нет, занесем в таблицу
            $user = ORM::factory('User')->where('username', '=', $username)->find();

            if (!$user->id) {
                    $user = ORM::factory('user');

                    $user->username = $username;
                    $user->password = NULL;
                    $user->date = date('Y-m-d');
                    $user->save();
                    $user->add('roles', ORM::factory('role', array('name' => 'login')));
            }
            $this->complete_login($user);
            return true;
        }
        else {
            return false;
        }   
    }

    public function password($username) {   
    }

    public function check_password($password) {  
    }

}
 
Последнее редактирование:
Сверху