Coder Social home page Coder Social logo

auth_sprint_1's Introduction

👋 Hi, I’m Ivan

  • 🏬 I'm an engineer at Proinsoft. We are developing accounting systems.
  • 🌱 I’m currently learning async programming on python
  • 🐱 I love pet-projects. They help me grow professionally all my life.
  • 📫 You can reach me by email [email protected] or Telegram @Ivan_Dro

🛠 My badge area

LeetCode Python Ubuntu Django DjangoREST Postgres MicrosoftSQLServer Git GitHub Actions Docker PyCharm macOS Nginx

🤝 Connect with me

Gmail LinkedIn Telegram

auth_sprint_1's People

Contributors

agatma avatar gufin avatar

Stargazers

 avatar

Watchers

 avatar

auth_sprint_1's Issues

Добавить партицирование таблицы пользователей

Партицируйте таблицу с пользователями. Подумайте, по каким критериям вы бы разделили её. Важно посмотреть на таблицу не только в текущем времени, но и заглядывая в некое будущее, когда в ней будут миллионы записей. Пользователи могут быть из одной страны, но из разных регионов. А еще пользователи могут использовать разные устройства для входа и иметь разные возрастные ограничения.

Code review

Здравствуйте, отличная работа ! Написали тесты, предусмотрели миграции, интересное решение с flask_pydantic 👍 ! Есть несколько рекомендаций:

  1. Сервис будет достаточно нагруженным, давайте сделаем точкой входа nginx server, а порты приложения спрячем.
  2. Здесь лучше использовать logging.
  3. Тут вместо числовых кодов лучше использовать http.HTTPStatus .
  4. Здесь могу посоветовать посмотреть еще вот такую штуку - https://github.com/psycopg/psycogreen. Возможно Вам понравится и решите ее использовать.
  5. Здесь возможно стоит вернуть NotFound ?

Добавить трассировку в сервис

Добавьте в Auth трасировку и подключите к Jaeger. Для этого вам нужно добавить работу с заголовком x-request-id и отправку трасировок в Jaeger.

Добавить рейтлимит в сервис

Сейчас сервис Auth беззащитен перед DDOS-атаками. Чтобы сберечь важный элемент системы от чрезмерной нагрузки, которая может вывести его из строя, реализуйте алгоритм Leaky bucket или Token bucket, используя Redis для синхронизации реплик

Написать сервис Login

Пользователь отправляет логин/пароль;
Проверяем корректность;
Отдаем пару токенов JWT access и refresh token. Сохраняем refresh token в базе redis

Code review 7

Отлично 👍

  1. Везде, где вы используете поле типа String, нужно указывать максимальную длину поля. Это позволяет оптимизировать расход ресурсов и защищает от случаев, когда в такие поля пытаются вставить огромные тексты. Если вам точно нужно не ограничивать длину строки, то лучше использовать поле Text. https://flask-sqlalchemy.palletsprojects.com/en/2.x/models/
  2. Нужно озаботиться тем, что если пользователь будет удален, то и все его записи social_accounts и UserHistory были удалены автоматически. https://docs.sqlalchemy.org/en/20/orm/cascades.html#using-foreign-key-on-delete-cascade-with-orm-relationships Или тут с примерами https://esmithy.net/2020/06/20/sqlalchemy-cascade-delete/
  3. Избегайте автоименованных миграций в flask-solution/src/migrations/versions
  4. Имена провайдеров (google, yandex и т.д.) лучше поместить в enum. Работа с литералами - всегда не очень хорошая практика. Далее с развитием проекта может возникнуть необходимость их использовать в коде. Работа с enum, как минимум, избавит нас от опасности опечатки.
  5. Не забывайте про типизацию принимаемых параметров и возвращаемых значений.
  6. Вызов родительского метода можно представить проще super().__init__("yandex")

Создать основные модели

Создать основные модели.

  • Пользователь
  • Роль
  • Роли gользователя
  • Устройства пользователя
  • История входов

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.