Форум города N
Реализуйте форум для определенного города. Выберите один из областных городов любой страны либо возьмите свой родной город. Сайт должен поддерживать регистрацию с разделением по ролям: пользователь, модератор, администратор.
Основные возможности проекта
- Главная страница со списком всех тем с пагинацией.
- Страница темы с постами пользователей.
- Три роли: пользователь, модератор, администратор.
- Пользователи могут создавать темы и отвечать в них.
- Возможность редактировать и удалять свои посты в течение N минут.
- Модераторы могут управлять постами и банить пользователей.
- Администраторы могут назначать модераторов, закреплять и закрывать темы.
- Регистрация и профили пользователей.
- Админ-панель для управления пользователями, темами и постами.
Регистрация и роли
На сайте должна быть реализована система регистрации и авторизации с разделением по ролям:
- При регистрации пользователь должен указать: email, логин, пароль, ФИО, дату рождения.
- Авторизация по логину и паролю.
- Восстановление пароля через email.
- Валидация всех полей на стороне сервера.
- Три роли пользователей:
- Пользователь - может создавать темы, отвечать в темах, редактировать и удалять свои посты в течение N минут.
- Модератор - может редактировать и удалять любые посты, банить пользователей на время или навсегда.
- Администратор - назначает модераторов, закрепляет и закрывает темы, управляет пользователями.
- При регистрации все пользователи получают роль "пользователь".
- Назначить модератором или администратором может только администратор.
Главная страница
На главной странице форума должен быть выведен список всех тем с пагинацией (по 20 тем). Для каждой темы должно быть указано:
- Название темы (ссылка на страницу темы).
- Автор темы.
- Количество постов в теме.
- Дата последнего поста.
- Если тема закреплена - она всегда на первом месте.
- Если тема закрыта - отображается специальная метка "Закрыта".
Темы должны быть отсортированы по дате последнего поста (сначала новые). Закрепленные темы выводятся в самом верху независимо от даты.
Страница темы
На странице темы пользователи размещают свои посты. Каждая тема начинается с заголовка и первого поста автора темы:
- Заголовок темы.
- Первый пост автора (вопрос).
- Все последующие посты (ответы).
Каждый пост должен содержать:
- Текст поста.
- Дата и время публикации.
- Имя автора (ссылка на профиль).
Возможности для автора поста:
- Редактировать свой пост в течение N минут после публикации (например, 15 минут).
- Удалить свой пост в течение N минут после публикации.
- По истечении N минут редактирование и удаление недоступны.
Возможности для модератора:
- Редактировать любой пост.
- Удалять любой пост.
- Отправлять пользователя в бан (на время или навсегда).
Возможности для администратора:
- Закрыть тему (запретить новые сообщения).
- Открыть тему (разрешить новые сообщения).
- Закрепить тему (всегда на первом месте).
- Открепить тему.
Страница профиля
На странице профиля пользователь может просматривать и редактировать свои данные:
- Просмотр: логин, ФИО, email, дата рождения, дата регистрации.
- Редактирование: ФИО, email, пароль (с подтверждением старого).
- Количество созданных тем.
- Количество написанных постов.
- Дата последнего визита.
Пользователи могут просматривать профили других пользователей (только просмотр, без редактирования).
Личный кабинет пользователя
В личном кабинете пользователь может управлять своими темами и постами:
- Список всех своих тем с пагинацией.
- Список всех своих постов с пагинацией.
- Фильтр по темам (показать только мои темы).
- Статистика: общее количество тем и постов.
Админ-панель
В админ-панели администратор может управлять пользователями, темами и постами:
- Список всех пользователей с пагинацией (по 20 пользователей).
- Для каждого пользователя: логин, email, роль, статус (активен, забанен), дата регистрации.
- Действия: назначить модератором, разжаловать из модераторов, назначить администратором, разжаловать из администраторов, забанить, разбанить, удалить.
- При бане указать срок (на время или навсегда).
- Фильтр по роли (показать только пользователей, модераторов, администраторов).
Дополнительные возможности
- Поиск по темам (по названию).
- Поиск по постам (по тексту).
- Количество просмотров темы.
- Уведомления о новых ответах в теме (на email).