Тестовое задание
Написать laravel-приложение (только back-end), которое работает с новостями.
Приложение должно предоставлять методы:
- Создания новости
- Изменения новости*
- Получения новости (в ответе должно быть: имя создателя новости и кол-во просмотров)
- Получения списка новостей
- Удаления новости*
Методы со звёздочкой доступны только пользователю, который создал новость, или администратору. Остальные не защищены и доступны всем. Способ аутентификации любой.
Новость состоит из заголовка и тела, а также количества просмотров (прибавляется при каждом просмотре новости). Пользователь имеет имя и признак администратора. Пользователь может создать множество новостей.
База данных - postgreSQL.
Дополнительное задание: разрешить прикрепление файла к новости. Обеспечить возможность скачивания файла.
Update (не тестовые дополнения функционала)
Решена проблема деплоя Laravel + Postgresql на heroku http://vernews.herokuapp.com/ .
Основные шаги:
- Правильный Procfile: web: heroku-php-apache2 public/
- Добавить нужный Buildpack
- Добавить в heroku-окружение APP_KEY, APP_URL приложения
- Настроить в приложении config/database.php подключение к базе данных (распарсить переменную-строку из окружения и отредактировать настройки подключения)
Решена проблема авторизации через соц. сети в частности github при помощи пакета socialite. Переменные github_client_id, github_client_secret, github_callback хранятся в переменных окружениях.
Update 20/02/19
- Отрефакторено Posts->Post
- Применен binding роутера - моделей через DI
- Добавлен контроллер RestController
- Добавлены Post/PostCollection, Post/PostResource
- Реализован функционал rest api: показать все посты, показать один пост
TO DO:
- Binding model router
- Middleware
- Pipeline