live-sfu-demo/internal/auth
noelorin 115b34dcd3 feat(auth): 基于 casbin 的登录与 RBAC 权限系统
- 引入 github.com/casbin/casbin/v2 实现 RBAC (model.conf + policy.csv)
- 角色: admin/publisher/viewer/guest,资源: config/room/user/srs,动作: read/list/publish/subscribe/stop/watch/manage
- JWT 登录 (golang-jwt/jwt/v5,bcrypt 存储,data/users.json 持久化,种子用户 admin/publisher/viewer)
- 中间件: HTTP AuthorizeMiddleware + gRPC Unary/Stream 拦截器,支持 Authorization Bearer/Cookie/Query/X-Token
- 新增 API: POST /api/auth/login|register|logout, GET /api/auth/me|users|check, POST /api/auth/users/role (Casbin 鉴权)
- 保护业务路由: /api/publish/subscribe/stop/rooms/room/*/events/srs/streams 及媒体代理 /rtc/v1/* /api/cf/*
- gRPC 契约新增 Login/Register/GetMe/ListUsers/UpdateUserRole (api/live_sfu.proto + gen)
- 前端 login.html + app.js 自动附加 Authorization,SSE 通过 ?token 传递,未登录自动跳转
- 配置: JWT_SECRET/JWT_TTL/CASBIN_MODEL/CASBIN_POLICY/AUTH_USER_FILE/ALLOW_REGISTER
- 集成 TursoDB 持久化与测试覆盖 (auth_test.go)
2026-08-19 16:42:17 +08:00
..
auth.go feat(auth): 基于 casbin 的登录与 RBAC 权限系统 2026-08-19 16:42:17 +08:00
auth_test.go feat(auth): 基于 casbin 的登录与 RBAC 权限系统 2026-08-19 16:42:17 +08:00
enforcer.go feat(auth): 基于 casbin 的登录与 RBAC 权限系统 2026-08-19 16:42:17 +08:00
jwt.go feat(auth): 基于 casbin 的登录与 RBAC 权限系统 2026-08-19 16:42:17 +08:00
middleware.go feat(auth): 基于 casbin 的登录与 RBAC 权限系统 2026-08-19 16:42:17 +08:00
model.conf feat(auth): 基于 casbin 的登录与 RBAC 权限系统 2026-08-19 16:42:17 +08:00
policy.csv feat(auth): 基于 casbin 的登录与 RBAC 权限系统 2026-08-19 16:42:17 +08:00
store.go feat(auth): 基于 casbin 的登录与 RBAC 权限系统 2026-08-19 16:42:17 +08:00