MingxuanGame
1527e23b43
feat(session-verify): 添加 TOTP 支持 ( #34 )
...
* 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
2025-09-21 19:50:11 +08:00
pre-commit-ci[bot]
6330e9b6e1
chore(linter): auto fix by pre-commit hooks
2025-09-17 17:39:21 +00:00
咕谷酱
0b43f2aad8
支持个人介绍编辑
2025-09-16 00:33:46 +08:00
MingxuanGame
f4e6c3a58f
feat(tags): add minimum vote count for top tags & provide official tags
...
Add configuration: `BEATMAP_TAG_TOP_COUNT` to control the minimun vote count
Tips: this is 10 in osu-web, but private server doesn't have enough player so we use 2 as default value
Official tags see: https://osu.ppy.sh/wiki/Beatmap/Beatmap_tags
2025-09-14 05:21:48 +00:00
MingxuanGame
ca89ddf657
fix(api): standardize UTC datetime serialization to use 'Z' instead of '+00:00' to support some service
...
e.g. https://github.com/yaowan233/nonebot-plugin-osubot
2025-09-14 04:58:42 +00:00
MingxuanGame
ffe4c5b14d
chore(linter): make ruff happy
2025-09-13 14:38:29 +00:00
咕谷酱
e589e68881
Add public API for player statistics and information queries
2025-09-11 02:34:01 +08:00
MingxuanGame
e872c25918
fix(score): make scores of loved beatmap as ranked scores
2025-08-30 11:49:23 +00:00
陈晋瑭
6c2e88c485
feat(beatmap): 添加谱面用户标签功能 ( #25 )
...
* feat(tags): 添加 beatmap tags 相关功能
- 新增 BeatmapTags 模型类,用于表示 beatmap 的标签信息
- 实现加载标签数据、根据 ID 获取标签、获取所有标签等功能
* feat(database): 新增 BeatmapTagVote 数据库模型和迁移脚本
* fix(database): 修改 BeatmapTagVote 模型并创建新表
- 将 BeatmapTagVote 模型的表名从 "beatmap_tag_votes" 改为 "beatmap_tags"
- 创建新的数据库迁移文件以替换错误的原迁移文件
- 删除错误的迁移文件 "4a827ddba235_add_table_beatmap_tags.py"
* feat(tags): 添加用户标签功能
- 在 BeatmapResp 类中添加了 top_tag_ids 和 current_user_tag_ids 字段
- 新增了 /tags 相关的路由,包括获取所有标签和投票/取消投票功能
- 实现了标签投票和取消投票的数据库操作
* fix(tags): 修复标签投票查询和返回过程中的逻辑问题
- 修复 BeatmapResp 类中 current_user_tag_ids 字段的查询逻辑
- 优化 vote_beatmap_tags 函数中的标签验证过程
* fix(tags): add suggested changes from reviews
- 在 BeatmapResp 中添加 top_tag_ids 和 current_user_tag_ids 字段
- 实现用户标签投票功能,包括检查用户是否有资格投票
- 优化标签数据的加载方式
- 调整标签相关路由,增加路径参数描述
* fix(tags): apply changes from review
* fix(tag): apply changes from review suggests
- 更新标签接口文档,统一参数描述
- 修改标签投票接口状态码为 204
- 优化标签投票接口的用户认证方式
- 改进标签相关错误处理,使用更友好的错误信息
* fix(tag): use client authorization
* chore(linter): auto fix by pre-commit hooks
---------
Co-authored-by: MingxuanGame <MingxuanGame@outlook.com >
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2025-08-30 16:23:59 +08:00
MingxuanGame
8d9f1d2750
feat(ranking): support team ranking
2025-08-26 10:51:31 +00:00
咕谷酱
7eea68aa9a
Update notification.py
2025-08-26 13:18:11 +08:00
pre-commit-ci[bot]
282ae3895e
chore(deps): auto fix by pre-commit hooks
2025-08-26 13:18:11 +08:00
咕谷酱
ccfafd9c5f
Add fallback for user avatar URL in notifications
...
Ensures that a default avatar URL is used if the user object lacks an avatar_url attribute or if an exception occurs, improving robustness of notification cover images.
2025-08-26 13:18:11 +08:00
MingxuanGame
9b00dbda28
refactor(project): use unified utcnow
2025-08-22 11:27:45 +00:00
MingxuanGame
545fc9e0c6
fix(recent_activity): fix rank & achievement event
...
运行 tools/fix_user_rank_event.py 修复现存的 event
2025-08-22 11:00:36 +00:00
MingxuanGame
598fcc8b38
refactor(project): make pyright & ruff happy
2025-08-22 08:21:52 +00:00
MingxuanGame
f63eb97486
feat(team): support team
2025-08-22 04:21:36 +00:00
咕谷酱
3bee2421fa
添加邮件验证
2025-08-22 08:19:12 +08:00
咕谷酱
ce465aa049
整理代码
2025-08-22 05:57:28 +08:00
咕谷酱
719c9e601a
添加在线统计
2025-08-22 03:16:21 +08:00
咕谷酱
e9fbe4163f
fix room error
2025-08-22 01:54:14 +08:00
咕谷酱
1fe603f416
add message redis
2025-08-22 01:49:03 +08:00
咕谷酱
49ac399180
fix Failed to refresh user cache after score submit
2025-08-22 00:25:58 +08:00
咕谷酱
56e83fa098
fix gbk error
2025-08-21 21:16:22 +08:00
MingxuanGame
068697355f
feat(achievement): support obtain achievements
2025-08-21 08:50:16 +00:00
MingxuanGame
9fb0d0c198
feat(notification): support notification
2025-08-21 07:22:44 +00:00
MingxuanGame
6ac9a124ea
feat(tools): add tools to add daily-challenge
2025-08-20 08:59:14 +00:00
MingxuanGame
f1b0fa2c89
feat(mods): support get available mods based on required mods
2025-08-20 08:25:08 +00:00
MingxuanGame
1c65b21bb9
refactor(app): update database code
2025-08-18 16:37:30 +00:00
咕谷酱
e5f0cd1fd6
Merge branch 'main' of https://github.com/GooGuTeam/g0v0-server
2025-08-18 17:15:43 +08:00
MingxuanGame
219f19d623
feat(beatmap,score): support failtime & more exact playtime
2025-08-18 08:48:13 +00:00
咕谷酱
71c961cafd
add search redis
2025-08-18 16:20:29 +08:00
MingxuanGame
11b8f799a0
feat(score): support recalculate statistics
2025-08-17 05:48:36 +00:00
MingxuanGame
658c1a4d17
fix(score): fix cannot calculate pp when mod setting is enum
2025-08-16 16:48:09 +00:00
MingxuanGame
99018f45e5
feat(chat): support mp command
2025-08-16 14:55:50 +00:00
MingxuanGame
e1d42743d3
feat(chat): support BanchoBot
2025-08-16 10:31:46 +00:00
MingxuanGame
3de73f2420
feat(chat): support mp/playlist chat
2025-08-16 08:42:40 +00:00
MingxuanGame
f992e4cc71
feat(chat): support public channel chat
2025-08-16 05:29:16 +00:00
MingxuanGame
d87839f86e
fix(ranking): fix missing user causing client crash
2025-08-15 06:34:35 +00:00
MingxuanGame
1251ba31a2
feat(score): support rx for taiko & catch
2025-08-15 05:59:21 +00:00
MingxuanGame
46a1d049fe
refactor(score): replace MODE_TO_INT INT_TO_MODE with int(mode) GameMode.from_int
2025-08-14 13:04:59 +00:00
MingxuanGame
7817b7c59a
feat(oauth): support client credentials grant
2025-08-13 14:12:29 +00:00
MingxuanGame
f19aaa6233
fix(multiplayer): failed to add items
2025-08-13 08:19:39 +00:00
MingxuanGame
4b5aefb946
feat(beatmapset): support search beatmapset
2025-08-13 07:55:48 +00:00
MingxuanGame
69e9927ea0
fix(score): fix incomplete statistics in leaderboard & wrong statistics in replay
2025-08-13 04:01:19 +00:00
MingxuanGame
32e2ac5704
feat(score): support pin score
2025-08-10 15:36:39 +00:00
MingxuanGame
efc784d903
feat(score): support osu-rx & osu-ap & all beatmap leaderboard like osu.ppy.sb
2025-08-10 07:03:49 +00:00
MingxuanGame
703a7901b3
fix(score): cannot get pp in osu, taiko, catch with HR
2025-08-10 05:05:52 +00:00
MingxuanGame
d9cf522f40
feat(score): support custom pp calculator
2025-08-10 05:05:08 +00:00
MingxuanGame
36b59ac853
fix(database): fix pydantic warnings
2025-08-10 04:30:06 +00:00