Skip to content

egorka001/NeoForum

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

30 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ТЗ, ER-диаграмма

см. task/

Развёртывание приложения

  1. Можно сгенрировать начальную базу данных, использую start_scripts/init_script.py, задав начальный список тем, или можно воспользоваться уже готовой базой данных start_scripts/base.db, в которой есть 9 базовых тем
  2. Надо настроить файл data/config.py
    get_path - надо прописать путь до базы данных
    bump_limit - после скольки постов тред перестанет всплывать вверх
    max_post - сколько символов может быть в посте
    thread_per_page - сколько тредов будет на странице
    root_name - github логин администратора форума
  3. Создание и конфигурация файла tokens.py, который содержит client_id и client_secret от github oAuth
    get_clinet_id() - возвращет client_id
    get_client_secret() - возвращает client_secret
  4. После настроек можно запустить main.py, чтобы развернуть сервер локально, ну либо воспользоваться другим севреным решением, таким как wsgi-приложение, но тут уже будет всё индивидуально

NeoForumAPI

getAPI

  • api/themes - возвращает список всех тем, доступных на форуме
    {"themes": ["Спорт", "Музыка"]}
  • api/themes/<current_theme> - возвращет список тредов, которые были созданы в теме current_theme
    Информация о треде содержит в себе id треда, login его создателя, заголовок треда, количество постов в треда, время и дату создания треда
    {"theme": "Спорт", "threads": [{"id":3,"login":"name","post_body":"sample text","post_count":5,"time":"2022-12-22 21:01:29.756834"}]}
  • api/thread/<thread_id> - возвращает списко постов, которые есть в треде с id thread_id
    Информация о посте содержит в себе id поста, login его создателя, текст поста, время и дата создания поста, и тред, в котором был создан пост
    {"posts":[{"id":1,"login":"name","post_body":"sample text","post_time":"2022-12-22 18:39:47.223987"}],"thread_id":"1"}

postAPI - работает через github oAuth, т.е. выложить что-либо можно отправив login github и токен, который выдаст система после прохождения регистрации, причём токен меняется при каждой новой авторизации

  • api/new_thread - добавляет новый тред в базу данных Надо отпарвить четыре аргумента - login, token из системы oAuth, theme - тему, в которой выкладывается тред, post_body - сам текст поста
    Выложить через это API тред могут все зарегистрированные пользователи
  • api/new_post - добавляет новый пост в тред Надо отпарвить четыре аргумента - login, token из системы oAuth, thread_id - id треда, в которой выкладывается пост, post_body - сам текст поста
    Выложить через это API пост могут все зарегистрированные пользователи
  • api/new_theme - добавляет новую тему Надо отпарвить три аргумента - login, token из системы oAuth, theme - название темы
    Работает только для администраторов

deleteAPI - работает через github oAuth, т.е. удалить что-либо можно отправив login и токен, который выдаст система после прохождения регистрации, причём токен меняется при каждой новой авторизации

  • api/del_post - изменяет текст поста на значение "deleted" Надо отправить три аргумента - login, token из системы oAuth, post_id - id того поста, который мы хотим затереть
    Работает только для администраторов
  • api/del_thread - удаляет тред и все написанные в нём посты Надо отправить три аргумента - login, token из системы oAuth, thread_id - id того треда, который мы хотим удалить
    Работает только для администраторов
  • api/del_theme - удаляет тему, все написанный в теме треды и посты Надо отправить три аргумента - login, token из системы oAuth, theme - название темы, которую мы хотим удалить

Немного о github oAuth
К форуму призязано github oAuth приложение со своими секретными токенами и ключами
Пользователь переходит по ссылке, сгенирированной гитхабом, получает токен доступа, который отправляется на сервер форума через api/auth
Сервер форума в свою очередь отправляет заранее полученные от приложения секретные токеты + токен доступа на сервера гитхаба, который генерирует окочательный уникальный токен, который возвращается на сервер форума
Сервер форума отправляет этот токен пользователю, который прошёл регистрацию, и предъявив свой логин и этот токен, пользователь докажет, что он и есть владелец данного аккаунта. Уникальный токен и логин будут записаны в базу данных, и по приходу запроса по API с этими логином и токеном, мы сможем понять, зарегистрованный ли это пользователь
Если токен и логин совпадают, то значит это реальный пользователь, если же нет, то это значит, что это не зарегистрованный пользователь и в доступе к серверу по API ему будет отказано

About

Project on the Internet Technologies and Database Systems

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages