Русскоязычный форум, посвященный фреймворку Kohana
http://forum.kohanaframework.su/

Auth (ORM)
http://forum.kohanaframework.su/viewtopic.php?f=33&t=149
Страница 1 из 7

Автор:  Sch_Den [ 02 май 2012, 14:24 ]
Заголовок сообщения:  Auth (ORM)

Не могу что то разобраться с модулем Auth, через ORM.
Раскомментил модуль ORM, auth в bootstrap.php, скопировал файл конфигурации auth.php в папку application/config/ сделал след настройки в нём:

Код:
return array(

‘driver’ => ‘orm’,
‘hash_method’ => ‘sha256′,
‘hash_key’ => ’11415′,
‘lifetime’ => 1209600,
‘session_type’ => Session::$default,
‘session_key’ => ‘auth_user’,

// Username/password combinations for the Auth File driver
‘users’ => array(
// ‘admin’ => ‘b3154acf3a344170077d11bdb5fff31532f679a1919e716a02′,
),

);

пробую регистрацию в произвольном модуле (articles — action_index)

Код:
$user_data = array(‘username’ => ‘Kolya’, ‘email’ => ‘mail@mail.ru’, ‘password’ => ’11sdf51′);
$user = ORM::factory(‘user’)
->create_user($user_data, array(‘username’, ‘email’, ‘password’)) // Регистрируем пользователя
->add(‘roles’, ORM::factory(‘role’, array(‘name’ => ‘login’))); // Добавляем роль login

лезет куча ошибок, регистрации нет((

В чём беда?

Автор:  Sch_Den [ 02 май 2012, 14:30 ]
Заголовок сообщения:  Re: Auth (ORM)

Самая первая ошибка (из списка):

ORM_Validation_Exception [ 0 ]: Failed to validate array
MODPATH\orm\classes\kohana\orm.php [ 1174 ]
1169
1170 $array = $this->_validation;
1171
1172 if (($this->_valid = $array->check()) === FALSE OR $extra_errors)
1173 {
1174 $exception = new ORM_Validation_Exception($this->errors_filename(), $array);
1175
1176 if ($extra_errors)
1177 {
1178 // Merge any possible errors from the external object
1179 $exception->add_object('_external', $extra_validation);

Автор:  Sch_Den [ 02 май 2012, 14:33 ]
Заголовок сообщения:  Re: Auth (ORM)

sql запрос для начала работы с ORM тоже выполнил, таблицы созданы.

Автор:  admin [ 02 май 2012, 14:38 ]
Заголовок сообщения:  Re: Auth (ORM)

Попробуйте вот почитать
http://jdstraughan.com/post/auth-module-for-kohana-31-using-orm-driver
Там для 3.1, но не должно сильно отличаться. Если не разберетесь, я потом посмотрю. Сейчас на работе.
Просто с ОРМ я мало работал :roll:

Автор:  Sch_Den [ 02 май 2012, 14:49 ]
Заголовок сообщения:  Re: Auth (ORM)

admin писал(а):
Попробуйте вот почитать
http://jdstraughan.com/post/auth-module-for-kohana-31-using-orm-driver
Там для 3.1, но не должно сильно отличаться. Если не разберетесь, я потом посмотрю. Сейчас на работе.
Просто с ОРМ я мало работал :roll:


А как вы реализуете регистрацию на сайте?

Автор:  admin [ 02 май 2012, 15:07 ]
Заголовок сообщения:  Re: Auth (ORM)

Сам написал.

Автор:  Sch_Den [ 02 май 2012, 15:49 ]
Заголовок сообщения:  Re: Auth (ORM)

Спасибо за статью)) Всё работает, думаю Вам можно включить её в модули, сделав перевод))
Но вот тоже думаю, использовать ли регистрацию коханы или свою, учился писать сам, но механизм ролей не осваивал правда ещё..

Автор:  admin [ 02 май 2012, 16:04 ]
Заголовок сообщения:  Re: Auth (ORM)

Ну я так и планировал отдельно сделать уроки по модулям. Модули Auth и image надо будет рассмотреть обязательно.
Да может возьму за основу ту статью. Распишу и сам все проверю. Просто это видимо лучше сделать после уроков по orm.

А насчет использования...там можно расширить модуль, если вам, например, понадобятся какие-то еще поля для пользователя, кроме стандартных.

Автор:  demyan112rv [ 24 июн 2012, 15:18 ]
Заголовок сообщения:  Re: Auth (ORM)

Добрый день! Реализую вход в админку. Но почему то при редиректе на site/login получаю пустую страницу
Вот КОНТРОЛЛЕР
Код:
class Controller_Admin extends Controller_Base {

    public $template = 'admin/va_base';        //Базовый шаблон
   protected $user;
   protected $auth;
   
    public function  before() {
       
      parent::before();
      
      $this->auth = Auth::instance();
      $this->user = $this->auth->get_user();
      if(!$this->auth->logged_in('admin'))
      {
         $this->request->redirect('login');   
      }
    }
}


Вот КОНТРОЛЛЕР наследник
Код:
class Controller_Admin_Admauth extends Controller_Admin {

   public function action_index() {
        $this->action_login();
    }

   public function action_login() {
      if(Auth::instance()->logged_in())
        {
            $this->request->redirect('admin');
        }

        if (isset($_POST['submit']))
        {
            $data = Arr::extract($_POST, array('username', 'password', 'remember'));
            $status = Auth::instance()->login($data['username'], $data['password'], (bool) $data['remember']);

            if ($status)
            {
                $this->request->redirect('admin');
            }
            else
            {
                $errors = array(Kohana::message('auth/user', 'no_user'));
            }
        }

        $content = View::factory('admin/a_auth/va_auth_login')
                    ->bind('errors', $errors)
                    ->bind('data', $data);

        // Выводим в шаблон
        $this->template->block_center = array($content);
   }


Когда вот это условие убираю из Controller_Admin, то при переходе по адресу site/login отображается форма входа. Но теперь же нет редиректа и проверки, что пользователь авторизирован
Код:
if(!$this->auth->logged_in('admin'))
      {
         $this->request->redirect('login');   
      }

Автор:  qed [ 24 июн 2012, 17:28 ]
Заголовок сообщения:  Re: Auth (ORM)

Похоже что ваш скрипт начинает рекурсивно редиректить сам на себя, правда в таких случаях браузеры обычно говорят об этом, а не выдают пустую страницу.
После первого редиректа на /login, должен выполниться action_login из Controller_Admin_Admauth (если я правильно понял структуру), но перед ним выполняется before(), унаследованный из родительского Controller_Admin, где снова происходит редирект на /login.

Страница 1 из 7 Часовой пояс: UTC + 4 часа [ Летнее время ]
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/