Русскоязычный форум, посвященный фреймворку Kohana

Все о фреймворке Kohana. Обсуждение уроков, документации.
Текущее время: 29 мар 2024, 19:05

Часовой пояс: UTC + 4 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 64 ]  На страницу Пред.  1 ... 3, 4, 5, 6, 7  След.
Автор Сообщение
 Заголовок сообщения: Re: Auth (ORM)
СообщениеДобавлено: 19 авг 2012, 12:17 
Не в сети
Администратор
Аватара пользователя

Зарегистрирован: 24 июл 2012, 18:00
Сообщения: 701
Откуда: Murom, Russia
Sergey писал(а):
А! Так у вас не стандартная модель?
Вам нужна вот эта: /modules/orm/classes/model/auth/user.php. Можете положить сюда /application/classes/model/auth/user.php
Потом, если нужно будет, дополните.


А можно тут /application/classes/model/ создать файл user.php вот с таким содержимым.
Код:
<?php defined('SYSPATH') or die('No direct access allowed.');

class Model_User extends Model_Auth_User {

  // This class can be replaced or extended

} // End User Model


Всё :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Auth (ORM)
СообщениеДобавлено: 06 ноя 2012, 23:47 
Не в сети
Новичок

Зарегистрирован: 06 ноя 2012, 23:36
Сообщения: 10
вот у меня вопрос. есть ли на форуме люди, которые смотрели видеокурс Школы Программирования? Я все по урокам делаю, а на модуле Auth+ORM застрял. Пробовал даже их код, версию ту же скачал что и у них - не работает. Я понимаю, что надо самому делать, но он ошибку выдает "Array" и все.

Помогите пожалуйста если кто знает решение

https://dl.dropbox.com/u/41026123/1.png


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Auth (ORM)
СообщениеДобавлено: 07 ноя 2012, 03:08 
Не в сети
Администратор
Аватара пользователя

Зарегистрирован: 24 июл 2012, 18:00
Сообщения: 701
Откуда: Murom, Russia
код контролёра/модели/представления в студию


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Auth (ORM)
СообщениеДобавлено: 08 ноя 2012, 00:40 
Не в сети
Новичок

Зарегистрирован: 06 ноя 2012, 23:36
Сообщения: 10
Код Контроллера

Код:
<?php defined('SYSPATH') or die('No direct script access.');
/*
 * Авторизация
 */
class Controller_Index_Auth extends Controller_Index {

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

    public function action_login() {

        if(Auth::instance()->logged_in()) {
            $this->request->redirect('account');
        }

        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){
                if(Auth::instance()->logged_in('admin')) {
                    $this->request->redirect('admin');
                }
               
                $this->request->redirect('account');
            }
            else {
                $errors = array(Kohana::message('auth/user', 'no_user'));
            }
        }

        $content = View::factory('index/auth/v_auth_login')
                    ->bind('errors', $errors)
                    ->bind('data', $data);

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

    public function action_register() {

        if (isset($_POST['submit'])){
            $data = Arr::extract($_POST, array('username', 'password', 'first_name', 'password_confirm', 'email'));
            $users = Model::factory('user');

            try {
                $users->create_user($_POST, array(
                    'username',
                    'first_name',
                    'password',
                    'email',
                ));

                $role = ORM::factory('role')->where('name', '=', 'login')->find();
                $users->add('roles', $role);
                $this->action_login();
                $this->request->redirect('account');
            }
            catch (ORM_Validation_Exception $e) {
                $errors = $e->errors('auth');
            }
        }
      
        $content = View::factory('index/auth/v_auth_register')
                            ->bind('errors', $errors)
                            ->bind('data', $data);

        // Выводим в шаблон
        $this->template->title = 'Регистрация';
        $this->template->page_title = 'Регистрация';
        $this->template->block_center = array($content);
    }
   
    public function action_logout() {
        if(Auth::instance()->logout()) {
            $this->request->redirect();
        }
    }

}


Код модели
Код:
<?php defined('SYSPATH') or die('No direct script access.');

class Model_User extends Model_Auth_User {

  public function labels()
    {
        return array(
            'username' => 'Логин',
            'email' => 'E-mail',
            'first_name' => 'ФИО',
            'password' => 'Пароль',
            'password_confirm' => 'Повторить пароль',
        );
    }

    public function rules()
   {
      return array(
         'username' => array(
            array('not_empty'),
            array('min_length', array(':value', 4)),
            array('max_length', array(':value', 32)),
            array('regex', array(':value', '/^[-\pL\pN_.]++$/uD')),
            array(array($this, 'username_available'), array(':validation', ':field')),
         ),
            'first_name' => array(
            array('not_empty'),
            array('min_length', array(':value', 2)),
            array('max_length', array(':value', 32)),
         ),
         'password' => array(
            array('not_empty'),
         ),
         'email' => array(
            array('not_empty'),
            array('min_length', array(':value', 4)),
            array('max_length', array(':value', 127)),
            array('email'),
            array(array($this, 'email_available'), array(':validation', ':field')),
         ),
      );
   }
}


Версия коханы 3.1.2 Пробовал этот код в версии 3.2, 3.3, добавив в bootstrap.php Cookie::$salt. Все равно не работает. Буду рад любой помощи


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Auth (ORM)
СообщениеДобавлено: 08 ноя 2012, 02:25 
Не в сети
Бывалый

Зарегистрирован: 16 апр 2012, 19:44
Сообщения: 113
сделайте вывод массива ошибок посредствам var_dump() и, скорее всего, все встанет на свои места.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Auth (ORM)
СообщениеДобавлено: 08 ноя 2012, 10:22 
Не в сети
Новичок

Зарегистрирован: 06 ноя 2012, 23:36
Сообщения: 10
mamahtehok писал(а):
сделайте вывод массива ошибок посредствам var_dump() и, скорее всего, все встанет на свои места.

спасибо, помогло. благодаря этому нашел ошибку. он ее вывел не одним словом Array, a "password must be at least 8 characters long".


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Auth (ORM)
СообщениеДобавлено: 21 янв 2013, 18:12 
Не в сети
Бывалый

Зарегистрирован: 09 авг 2012, 13:17
Сообщения: 43
Подскажите где ошибка, вот метод из класса Autch
Код:
    public function action_login() {
        /* Проверяем авторизировал ли пользователь*/
        if(Auth::instance()->logged_in()) {
            $this->request->redirect('account');
        }

        if (isset($_POST['submit'])){
            $data = Arr::extract($_POST, array('email', 'password', 'remember'));
            $auth = Auth::instance();
            $status = $auth->login($data['email'], $data['password'], (bool) $data['remember']);
            if ($status){
                if(Auth::instance()->logged_in('admin')) {
                    $this->request->redirect('admin');
                }

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

        $content = View::factory('index/auth/v_auth_login')
                    ->bind('errors', $errors)
                    ->bind('data', $data);

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


При авторизации выдает ошибку
Код:
Database_Exception [ 1054 ]: Unknown column 'username' in 'where clause' [ SELECT `user`.* FROM `users` AS `user` WHERE `username` = '' LIMIT 1 ]


В базе данных действительно такого поля нет, но я ведь его и не использую . Что я делаю не правильно?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Auth (ORM)
СообщениеДобавлено: 21 янв 2013, 20:03 
Не в сети
Бывалый

Зарегистрирован: 09 авг 2012, 13:17
Сообщения: 43
Вопрос снят, разобрался, наконец то вместо логина можно использовать email


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Auth (ORM)
СообщениеДобавлено: 21 янв 2013, 23:09 
Не в сети
Бывалый

Зарегистрирован: 09 авг 2012, 13:17
Сообщения: 43
Вопрос есть 2 класса

Model_Auth_User

Код:
class Model_Auth_User extends ORM {

   /**
    * A user has many tokens and roles
    *
    * @var array Relationhips
    */
   protected $_has_many = array(
      'user_tokens' => array('model' => 'user_token'),
      'roles'       => array('model' => 'role', 'through' => 'roles_users'),
   );
}


и дочерний клас Model_User
Код:
class Model_User extends Model_Auth_User {
   
    //parent::has_many[]=array();
   
}



Вопрос, как добавить к _has_many еще один массив из дочернего класса ??


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Auth (ORM)
СообщениеДобавлено: 22 янв 2013, 22:30 
Не в сети
Администратор
Аватара пользователя

Зарегистрирован: 24 июл 2012, 18:00
Сообщения: 701
Откуда: Murom, Russia
rain2 писал(а):
Вопрос есть 2 класса

Model_Auth_User

Код:
class Model_Auth_User extends ORM {

   /**
    * A user has many tokens and roles
    *
    * @var array Relationhips
    */
   protected $_has_many = array(
      'user_tokens' => array('model' => 'user_token'),
      'roles'       => array('model' => 'role', 'through' => 'roles_users'),
   );
}


и дочерний клас Model_User
Код:
class Model_User extends Model_Auth_User {
   
    //parent::has_many[]=array();
   
}



Вопрос, как добавить к _has_many еще один массив из дочернего класса ??



Код:
  class Model_User extends Model_Auth_User {

    /**
     * A user has many tokens and roles
     *
     * @var array Relationhips
     */
    protected $_has_many = array(
      'user_tokens' => array('model' => 'user_token'),
      'roles'       => array('model' => 'role', 'through' => 'roles_users'),
      'myrels'      => array('model' => 'rels', 'through' => 'rels_users'),
    );

  }


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 64 ]  На страницу Пред.  1 ... 3, 4, 5, 6, 7  След.

Часовой пояс: UTC + 4 часа [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 22


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Все о фреймворке Kohana  | 
Powered by phpBB® Forum Software © phpBB Group