GithubHelp home page GithubHelp logo

jackblackjack / yii2-basic-articles-example Goto Github PK

View Code? Open in Web Editor NEW
0.0 2.0 0.0 199 KB

yii2-basic-articles-example

License: Other

PHP 94.27% Batchfile 0.67% Shell 1.97% CSS 1.27% JavaScript 1.82%
yii2 yii2-application-template php news-reader yii2-framework

yii2-basic-articles-example's Introduction

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

Функциональные требования


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

yii2-basic-articles-example's People

Contributors

jackblackjack avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.