#php #codeigniter
#php #codeigniter
Вопрос:
Я работаю над проектом, в котором разрабатываются следующие:
- общедоступный информационный веб-сайт с защищенными областями ресурсов
- веб-приложение
Оба будут находиться на одном сервере под одним доменом.
Веб-приложение защищено от входа в систему. Если пользователь входит в веб-приложение, он также может получить доступ к защищенным областям ресурсов на общедоступном сайте и наоборот.
В. Оба разрабатываются с использованием CodeIgniter. Поскольку существует необходимость в этом общем входе в систему, целесообразно ли сохранять оба как один проект / одну структуру большого сайта? или 2 отдельных проекта / структуры CI со средством совместного входа.
Один разработчик занимается веб-приложением, а другой (я) занимается общедоступным сайтом — так что, мне кажется, было бы проще сохранить их отдельные структуры с некоторым переходом для управления входом / сеансом.
Ответ №1:
Возможно, вы захотите рассмотреть возможность использования модульной системы и совместного использования ресурсов. Codeigniter не имеет встроенной модульной поддержки, но есть несколько пакетов, которые позволят это. Я годами использую пакет модульных расширений и не могу представить использование CI без него.
https://bitbucket.org/wiredesignz/codeigniter-modular-extensions-hmvc/wiki/Home
Возможно, вы уже знакомы с концепцией: каждый модуль — это, по сути, собственное мини-приложение. Он следует той же структуре, которую вы могли бы видеть в папке приложения Codeigniter. Вы даже можете иметь несколько каталогов модулей, чтобы еще больше разделить структуру вашего приложения.
Любые общие ресурсы (библиотеки, помощники и т.д.) Могут оставаться в каталоге приложения по умолчанию, но при необходимости вы все равно можете перекрестно загрузить их из других модулей. Даже если бы вы работали в одиночку, я все равно рекомендовал бы это, потому что это действительно помогает все организовать.
Используя модули, вы оба можете работать над приложением независимо, не наступая друг другу на пятки и даже не видя никаких файлов, с которыми вы не работаете, имея при этом доступ к одним и тем же общим ресурсам (например, к вашей модели входа / авторизации), сохраняя предельную организованность и без необходимости создавать два отдельных приложения.
Ответ №2:
Я не вижу причин, по которым вы не можете иметь одно общее приложение CI и просто разделить частную и общедоступную части в приложении. Этого можно легко достичь с помощью структуры папок в областях контроллера, модели и представления. И затем, при управлении пользователями, вы можете настроить поле разрешений или таблицу, чтобы предоставить права и привилегии пользователю.
Итак, например, вы могли бы представить, что ваши вложенные папки под контроллером, моделью или представлением являются: общедоступными, частными и административными.
Тогда в вашей таблице пользователей будет поле под названием «разрешение», и у вас могут быть различные уровни (т. е. 1, 2 или 3).
Затем в вашем контроллере для администратора (или что-то еще) вы могли бы иметь:
function index()
{
if (!this->auth->is_logged_in()) {
redirect('/auth/login');
}
else {
if (!this->auth->is_level(1)){
redirect('/user/notallowed);
}
}
Вы поняли идею.