An open API service indexing awesome lists of open source software.

https://github.com/jackblackjack/yii2-basic-articles-example

yii2-basic-articles-example
https://github.com/jackblackjack/yii2-basic-articles-example

news-reader php yii2 yii2-application-template yii2-framework

Last synced: 2 months ago
JSON representation

yii2-basic-articles-example

Awesome Lists containing this project

README

        


Простейший новостной сайт с авторизацией и оповещением пользователей о событиях



На основе базового шаблона yii2

## Функциональные требования
----------------------------------
**1.** Требования к ролевому распределению пользователей.
* Функционал приложения должен обеспечивать 4 пользовательских роли:
* Неавторизованный пользователь;
* Авторизованный пользователь;
* Редактор новостей;
* Администратор сайта.

**2.** Требования к регистрации новых пользователей.
* При регистрации на указанный электронный адрес пользователя (email) должна высылаться ссылка для подтверждения email и активации пользовательского профиля;
* При подтверждении и активации пользовательской записи пользователю должна назначаться роль по-умолчанию (*Авторизованный пользователь*);
* При создании пользователя путем, отличным от самостоятельной регистрации, на указанный пользовательский электронный адрес (email) должна высылаться ссылка для подтверждения email и указания пользовательского пароля.

**3.** Требования к управлению пользователями.
* Управление пользователями должно быть реализовано с использованием парадигмы CRUD;
* Создание нового пользователя должно быть реализовано в модальном окне;
* Редактирование существующего пользователя должно быть реализовано в модальном окне;
* Изменение статуса активности пользователя (активен/неактивен) должно быть реализовано без перезагрузки страницы.
* Должен быть реализован список пользователей с возможностью фильтрации по:
* порядковому номеру пользователя;
* логину пользователя;
* email пользователя;
* дате регистрации пользователя;
* дате последней авторизации пользователя;
* по статусу пользователя (активен/неактивен).

* **Права доступа:** Все, вышеописанные операции должны быть доступны только пользователям с назначенной ролью *Администратор сайта*.

**4.** Требования к управлению новостями.
* Управление новостями должно быть реализовано с использованием парадигмы CRUD;
* Требуется реализовать хранение медиафайлов при создании текста новости (изображения);
* Создание новой новости должно быть реализовано в модальном окне;
* Редактирование существующей новости должно быть реализовано в модальном окне;
* Изменение статуса активности новости (активна/неактивна) должно быть реализовано без перезагрузки страницы.
* Должен быть реализован список новостей с возможностью фильтрации по:
* дате добавления новости;
* названию новости;
* краткому описанию новости;
* полному описанию новости;
* по статусу новости (активна/неактивна).
* **Права доступа:**
* *Неавторизованный пользователь* может просматривать только краткий текст новости;
* *Авторизованный пользователь* может просматривать полный текст новости;
* *Редактор новостей* может добавлять новости и редактировать (удалять) только свои новости;
* *Администратор сайта* - все выше описанное.

**5.** Требования к главной странице сайта.
* На главной странице сайта должен быть реализован постраничный вывод (без перезагрузки страницы) превью новостей с возможностью перехода на страницу детального просмотра.
* На главной странице сайта должна быть реализована возможность пользовательского выбора количества выводимых новостей без перезагрузки страницы.

**6.** Требования к пользовательским настройкам.
* Нужно реализовать функционал, обеспечивающий настройку пользовательских уведомлений (получать уведомления о новых новостях только на *email* и/или *в браузер*)

**7.** Требования к пользовательским уведомлениям.
* При добавлении новости на сайт, оповещать зарегистрированных пользователей по email и всплывающим уведомлением (в соответствии с настройками п.6.) с возможностью отметить уведомление как прочитанное.

## Создание базового образа
----------------------------------
**1.** Разверните окружение для разработки.
Установите [VirtualBox](https://www.virtualbox.org/) и [Vagrant](https://www.vagrantup.com/).

**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
```