Сайт на streamlit с поддержкой авторизации, кукис и mysql
Создать сайт на основе шаблона streamlit/streamlit-hello
со следующими страницами:
Сайт должен поддерживать cookies - при открытии новой страницы, при переходе на другую страницу должны передаваться все содержимое кукис.
Результат: рабочий сайт, репозиторий на гитхаб с возможностью потестить через codespaces (или аналог). дампы sql таблиц.
Пожелания (если не устраивают - обсудить и согласовать заранее):
со следующими страницами:
- Hello - оставить как есть, добавить:
- авторизацию (логин, почта, пароль. + авторизация через гугл). Данные сохраняются в бд mysql
- сохранение сессии в cookies - чтобы можно авторизоваться и в течение жизни кукис оставаться авторизованным (продолжать сессию) на других страницах. Срок жизни кукис: одна неделя с момента последнего захода (т.е. если авторизоваться, зайти, потом зайти через 5 дней, то кукис будут жить еще неделю)
- Profile - Профиль пользователя (нужно создать страницу).
- На странице отражаются логин, почта и пароль пользователя. Кнопка редактировать - позволяет изменить любое поле.
- Блок с модулем наличия подписки: смотрит в табличку auth_users если в поле state=1 то выводит надпись “Вы подписаны”, если state=0 или null, то выводит кнопку “Подписаться”. Кнопка содержит урл на “example.site” и ссылку для возврата на текущий сайт “this_page.site” (на эту же страницу, с восстановлением сессии)
- Test - Тест (нужно создать страницу).
- При посещении данной страницы, записывает в кукис test = test+1.
- Выводит на странице содержимое всех cookies.
Сайт должен поддерживать cookies - при открытии новой страницы, при переходе на другую страницу должны передаваться все содержимое кукис.
Результат: рабочий сайт, репозиторий на гитхаб с возможностью потестить через codespaces (или аналог). дампы sql таблиц.
Пожелания (если не устраивают - обсудить и согласовать заранее):
- подключение к mysql через sqlalchemy
- все ошибки и варнинги, возникающие при загрузке страницы не должны выводиться на экран, а должны записываться в бд (включая состояние всех элементов и сессии, чтобы можно было починить эту ошибку). при возникновении ошибки блок не должен выводиться, а появиться надпись: при загрузке возникла ошибка, уже чиним, вернитесь попозже.