Вам предстоит создать свой сайт аукциона "вслепую". Участники торгов не видят цены, которые предлагают другие. Пользователи смогут регистрироваться на сайте, выводить список товаров аукциона, делать ставки на товары, и тд. Старайтесь применять изученные конвенции, стандарты и различные best practices по максимуму.
Важно:
git push
должен быть вызван только один раз(в 16.00), в течение экзамена делать git push
не нужно.
Убедитесь, что в вашем проекте установленны все необходмые вам библиотеки, создайте базу данных.
Первое, что нужно сделать - это регистрация пользователей. Не забудьте про шифрование паролей, называйте ваши routings по стандартам REST API, CRUD. REST API Best Practices
Добавьте ссылку на регистрацию на домашнюю страницу. Реализуйте регистрацию. email/username у пользователей должны быть уникальны. Если регистрация неуспешная - пользователь должен быть оповещен об этом. Если она прошла успешно - пользователь входит в систему и перенаправляется на домашнюю страницу. Ссылка на регистрацию заменяется именем пользователя. Примерно как на Рисунке 1:
Рисунок 1. Успешная и неуспешная регистрация.
Добавьте "login". Не забудьте обрабатывать ошибки: если у пользователя не получается залогиниться - ему хотелось бы знать причину. При успешном входе - вместо кнопки "login" должна появляться "logout". При нажатии на logout пользователь выходит из системы и оказывается на домашней странице приложения.
Рисунок 2. Login, logout.
Теперь добавьте личный кабинет(ЛК) пользователя. Чтобы перейти в личный кабинет, пользователь будет нажимать на свое имя на главной странице. На текущем этапе в ЛК оставим персональное приветствия для пользователей.
Рисунок 3. Login, переход в Личный Кабинет.
Сделайте возможность добавления товара на аукцион. Используйте ЛК пользователей, чтобы добавлять свои товары. Пользователь нажимает на ссылку в ЛК ->
заполняет форму (в том числе даты начала и конца торгов) ->
В случае успеха - пользователя перенаправляет в его ЛК, где он может посмотреть свои товары. Это все продемонстрированно на рисунке 4:
В дальнейшем пользователи захотят изменить свои предложенные товары. Может быть захотят переименовать их, изменить описание и тд. Давайте добавим метод, который позволит пользователям это делать.
Добавьте в ЛК ссылки edit
к каждому элементу. Дальнейшие действия должны соответствовать примеру на рисунке:
Рисунок 5. Успешное редактирование элемента.
Добавьте ссылку "delete" к каждому элементу.
Проанализируйте код, который вы уже сделали. Все ли сделано верно с точки зрения логики, распределения ролей, удобства пользователя, безопасности?
- У кого есть доступ на добавление нового товара?
- Кто может редактировать товары? И какие именно?
- Кто может удалять их?
- Кто может просматривать профиль какого-либо определенного пользователя?
Настало время дать пользователям возможность просматривать детально товары на нашем сайте. У нас должен быть метод, который выводит список всех активных товаров (торги уже начались, но еще не закрыты). Затем надо реализовать возможность просматривать детали по каждому товару как на рисунке ниже.
Рисунок 7. Просмотр деталей элемента.
Добавить возможность делать ставки на элементы(товары). Делать ставки нужно на странице, где отбражены детали по товару. На этой странице должна отображаться форма, в которой можно ввести свою ставку. Не забывайте обрабатывать ошибки. Ориентируйтесь на вариант, приведенный на рисунке:
Усовершенствуйте работу со ставками. Убедитесь, что они работают правильно. Все ли верно с точки зрения доступа?
- Каждый ли пользователь может делать ставки, или только те, кто вошли в систему?
- Могут ли пользователи делать ставки на собственные товары?
- Могут ли они редактировать и удалять свои ставки?
- Можно ли принимать ставки до начала аукциона? После завершения?
Добавьте возможность просматривать товары пользователя, которые сейчас находятся на аукционе, и те, которые пользователь уже выиграл. Добавьте для этого 2 раздела в ЛК:
- Текущие
- Выигранные
То есть сделайте по аналогии с рисунком 9:
Рисунок 9. Страница профиля с ссылками на отображение товаров, на которые пользователь делал ставки, и на те, которые пользователь выиграл.
Если вы не успели выполнить задание полностью, в любом случае залейте свой проект на github. Сделать это необходимо в 16.00.