* fix(bbcode): fix ReDos of imagemap parsing
* fix(bbcode): use `regex` and add timeout to avoid too long time to parse
* feat(bbcode): use `make_tag` to generate HTML tags
* docs(bbcode): add docstrings for BBCodeService
* fix(user): validate BBCode content before processing userpage update
* fix(bbcode): catch timeout errors in BBCode parsing with MaliciousBBCodeError
* fix(bbcode): resolve reviews
* fix(bbcode): use `make_tag` in `_parse_size`
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* fix(bbcode): fix using `make_tag` in `_parse_size`
---------
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* feat(config): make `performance_server` as default calculator
* deploy(docker): use osu-performance-server
* docs(readme): add ruleset download instructions
* chore(dev): update development environment
* feat(dev): update development environment setup and service startup order
* fix(deps): move `rosu-pp-py` to `project.optional-dependencies`
* feat(beatmap): handle deleted beatmaps
* feat(performance-server): add a long timeout for calculation
* feat(recalculate): enhance CLI arguments for performance, leaderboard, and rating recalculations with CSV output support
* fix(recalculate): resolve reviews
* Apply suggestions from code review
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* fix(beatmapsync): resolve too long line
---------
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Introduced support for MailerSend as an email provider alongside SMTP, with configuration options in settings. Added Jinja2-based multi-language email templates for verification emails, and refactored the email sending logic to use these templates and support language selection based on user country code. Updated related services and API endpoints to pass country code and handle new response formats. Added dependencies for Jinja2 and MailerSend.
* chore(deps): add pyotp
* feat(auth): implement TOTP verification
feat(auth): implement TOTP verification and email verification services
- Added TOTP keys management with a new database model `TotpKeys`.
- Introduced `EmailVerification` and `LoginSession` models for email verification.
- Created `verification_service` to handle email verification logic and TOTP processes.
- Updated user response models to include session verification methods.
- Implemented routes for TOTP creation, verification, and fallback to email verification.
- Enhanced login session management to support new location checks and verification methods.
- Added migration script to create `totp_keys` table in the database.
* feat(config): update config example
* docs(totp): complete creating TOTP flow
* refactor(totp): resolve review
* feat(api): forbid unverified request
* fix(totp): trace session by token id to avoid other sessions are forbidden
* chore(linter): make pyright happy
* fix(totp): only mark sessions with a specified token id