Создание ролей и профилей пользователей в Codeigniter с использованием Ion Auth

#php #codeigniter #crud

#php #codeigniter #crud

Вопрос:

Я использую Codeigniter с Ion Auth для управления пользователями. Я хотел бы создать две разные пользовательские роли — одну для добровольцев и одну для организаций. Я знаю, что могу использовать Ion Auth groups для таких вещей, как контроль доступа, но какой был бы хороший способ добавить поля для разных типов пользователей (например, у пользователя-добровольца будет поле «языки, на которых говорят», в то время как у организации будет поле «миссия»)? Должен ли я расширять класс Ion Auth для каждого нового типа пользователя и обрабатывать CRUD отдельно для каждого типа или использовать поле «группы» и идентификатор пользователя для ссылки на поля в другой таблице? Есть идеи относительно подхода к этой распространенной проблеме?

Ответ №1:

Я бы рекомендовал просто добавить все необходимые поля в мета-таблицу и обновлять только те, которые вам нужны для каждой группы пользователей. Если вам нужно несколько групп для каждого пользователя, ознакомьтесь с Ion Auth v2.

Комментарии:

1. Как бы вы предложили мне хранить информацию для пользователей, которые принадлежат к нескольким группам? Не могли бы вы создать две отдельные мета-таблицы для каждой группы, согласно предложению add tpae выше, или одну мета-таблицу со столбцом «group_id», как вы сказали ранее? Например, у меня может быть пользователь в качестве «покупателя», «продавца» или обоих. В мета-таблице могут быть id , user_id , group_id field_key , field_value и, ,,. Я чувствую, что последний метод был бы неэффективным и неорганизованным, а первый метод лучше. Что вы думаете? Есть ли еще лучшее решение?

Ответ №2:

У меня была такая же проблема раньше, в итоге я создавал таблицы отношений для обработки разных групп с разными полями. Затем я немного изменил код profile (), чтобы присоединиться к дополнительной таблице отношений в соответствии с настройками группы пользователя.

Я бы начал с создания реляционной базы данных.

пример:

 **volunteers table**
id
user_id
languages

**organizations table**
id
user_id
mission
  

Затем, в зависимости от группы пользователей, присоединитесь к таблице в функции profile().

Надеюсь, это поможет!