Веб-приложение CodeIgniter общедоступный сайт

#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);
     }
}
  

Вы поняли идею.