1. Требования к ролевому распределению пользователей.
- Функционал приложения должен обеспечивать 4 пользовательских роли:
- Неавторизованный пользователь;
- Авторизованный пользователь;
- Редактор новостей;
- Администратор сайта.
2. Требования к регистрации новых пользователей.
- При регистрации на указанный электронный адрес пользователя (email) должна высылаться ссылка для подтверждения email и активации пользовательского профиля;
- При подтверждении и активации пользовательской записи пользователю должна назначаться роль по-умолчанию (Авторизованный пользователь);
- При создании пользователя путем, отличным от самостоятельной регистрации, на указанный пользовательский электронный адрес (email) должна высылаться ссылка для подтверждения email и указания пользовательского пароля.
3. Требования к управлению пользователями.
-
Управление пользователями должно быть реализовано с использованием парадигмы CRUD;
-
Создание нового пользователя должно быть реализовано в модальном окне;
-
Редактирование существующего пользователя должно быть реализовано в модальном окне;
-
Изменение статуса активности пользователя (активен/неактивен) должно быть реализовано без перезагрузки страницы.
-
Должен быть реализован список пользователей с возможностью фильтрации по:
- порядковому номеру пользователя;
- логину пользователя;
- email пользователя;
- дате регистрации пользователя;
- дате последней авторизации пользователя;
- по статусу пользователя (активен/неактивен).
-
Права доступа: Все, вышеописанные операции должны быть доступны только пользователям с назначенной ролью Администратор сайта.
4. Требования к управлению новостями.
- Управление новостями должно быть реализовано с использованием парадигмы CRUD;
- Требуется реализовать хранение медиафайлов при создании текста новости (изображения);
- Создание новой новости должно быть реализовано в модальном окне;
- Редактирование существующей новости должно быть реализовано в модальном окне;
- Изменение статуса активности новости (активна/неактивна) должно быть реализовано без перезагрузки страницы.
- Должен быть реализован список новостей с возможностью фильтрации по:
- дате добавления новости;
- названию новости;
- краткому описанию новости;
- полному описанию новости;
- по статусу новости (активна/неактивна).
- Права доступа:
- Неавторизованный пользователь может просматривать только краткий текст новости;
- Авторизованный пользователь может просматривать полный текст новости;
- Редактор новостей может добавлять новости и редактировать (удалять) только свои новости;
- Администратор сайта - все выше описанное.
5. Требования к главной странице сайта.
- На главной странице сайта должен быть реализован постраничный вывод (без перезагрузки страницы) превью новостей с возможностью перехода на страницу детального просмотра.
- На главной странице сайта должна быть реализована возможность пользовательского выбора количества выводимых новостей без перезагрузки страницы.
6. Требования к пользовательским настройкам.
- Нужно реализовать функционал, обеспечивающий настройку пользовательских уведомлений (получать уведомления о новых новостях только на email и/или в браузер)
7. Требования к пользовательским уведомлениям.
- При добавлении новости на сайт, оповещать зарегистрированных пользователей по email и всплывающим уведомлением (в соответствии с настройками п.6.) с возможностью отметить уведомление как прочитанное.
1. Разверните окружение для разработки. Установите VirtualBox и Vagrant.
2. Создайте типовое базовое приложение yii2
composer create-project --prefer-dist yiisoft/yii2-app-basic basic
3. Создайте собственный репозиторий на github.com
git init
git add .
git commin -m "First commit"
git remote add origin remote github/repo/url
git push origin master
4. Запустите виртуальную машину
- Укажите github токен в файле vagrant/config/vagrant-local.yml
cd basic
vagrant up
vagrant ssh
5. Внесите изменения в конфигурацию сервера
- Изменения в php.ini
Найти наименование сервиса php7 можно выполнив комнаду: sudo service --status-all | grep php
sudo sed -i 's/\(;\)\(cgi.fix_pathinfo=\)\([0-9]\+\)/\21/' /etc/php/7.0/fpm/php.ini && sudo service php7.0-fpm restart
- Изменения в конфигурации nginx
sudo rm -f /etc/nginx/sites-enabled/default && sudo service nginx restart
- Внесите изменения в файл config/test_db.php
cd /app && sudo sed -i 's/dbname=yii2_basic_tests/\dbname=yii2basic_test/' config/test_db.php
- Внесите изменения в composer.json
- В секцию "require":
"require": {
"yii2mod/yii2-rbac": "*",
"yiidoc/yii2-redactor": "*",
"nterms/yii2-pagesize-widget": "*"
}
-
- В секцию "require-dev":
"require-dev": {
...
"codeception/codeception": "^2.4",
"codeception/verify": "^1.0",
"codeception/specify": "^1.0"
}
-
- В секцию "extra":
"extra": {
"yii\\composer\\Installer::postCreateProject": {
"setPermission": [
{
...
"migrations": "0755",
"web/upload/article": "0755"
}
]
}
}
- 6. Обновите проект
cd /app && composer update