2013-03-30 5 views
2

Я создаю приложение с использованием модуля Auth, для которого мне нужно как минимум 3 типа аккаунта: работодатель, сотрудник и клиент. Поскольку эти учетные записи имеют разные свойства, функции и отношения (например, работодатели имеют несколько сотрудников), я думаю, мне нужно иметь их на 3 отдельных моделях ORM.Kohana 3.3 расширение модуля Auth

Метод, который, как я думал, заключался в том, чтобы подстроить модуль Auth, чтобы заменить модель «Пользователь» соответствующей подмодеей (работодателем, сотрудником, клиентом), соответствующей типу пользователя в базе данных.

Можно ли это сделать, или это плохая практика?

+0

Используйте ту же таблицу пользователей для всех пользователей и имеет смежные столы для работодателя, сотрудника и клиента. – phazei

ответ

1

Для таких целей вам необходимо создать различные классы моделей для каждого типа учетной записи, которые будут использоваться по умолчанию для класса Auth_ORM Model_User.

Для этого вам необходимо создать новый класс Auth_ORM, расширяющий класс Kohana_Auth_ORM в папке application/classes.

В этом файле вам необходимо переписать метод protected _login(), поэтому его переменная $user указывает на необходимый тип учетной записи.

+0

Но с этим вы бы либо имели различные таблицы в своей базе данных для пользователей, которые могли бы привести к проблемам с ограничением fk в 'role_users', или у вас были бы неиспользуемые/нежелательные строки, если вы делитесь одной таблицей. Также не имеет смысла иметь отдельные классы для ролей вместо пользователей? – kero

+0

Наверное, это так. Возникает вопрос: нужны ли роли в таком случае? Я бы не использовал роли в моем примере. Каждый тип учетной записи будет самой ролью. –

0

Здесь я нашел интересный репозиторий: https://github.com/alexgisby/MAuth. У меня такая же проблема, как у вас, поэтому, возможно, если вам удастся ее решить, вы можете поделиться решением. Я думаю, что репозиторий из этой ссылки может быть решением, но до сих пор мне не удалось его реализовать.

0

У вас может быть 1 модель - Пользователь и 3 разные роли. И в зависимости от роли вы можете загрузить определенный модуль, который будет содержать требуемые классы.

Например, если пользователь имеет роль Сотрудник вы загружать модули/role_employee

 Смежные вопросы

  • Нет связанных вопросов^_^