template-monorepo/internal/library/redis
王性驊 fa50c64ee4 feat(permission): add RBAC module with Casbin enforcement and policy reload
- Multi-tenant RBAC: permission catalog, roles, role-permission mapping,
  user-role assignment, and external IdP role mapping (zitadel/ldap/scim).
- Casbin enforcer with Redis-backed adapter and Pub/Sub reload for
  multi-instance policy sync; HTTP middleware enforces (tenant, role,
  path, method) with platform admin bypass.
- /api/v1/permissions routes: catalog, me, policy/reload, roles CRUD,
  role permissions, user roles, role mappings.
- New error scope (31) for Permission and biz code descriptions.
- Wire Permission module into ServiceContext, config, mongo-index, and
  add cmd/permission-seed CLI plus etc/rbac.conf model.
- Redis client gains lazy PubSubClient helper (go-zero wrapper lacks Subscribe).
- Rewrite internal/model/member/README to cover Tenant/Member/Identity.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-21 16:47:35 +08:00
..
README.md add notification and member modules with local dev stack 2026-05-20 15:01:08 +08:00
client.go feat(permission): add RBAC module with Casbin enforcement and policy reload 2026-05-21 16:47:35 +08:00
client_test.go add notification and member modules with local dev stack 2026-05-20 15:01:08 +08:00
pubsub.go feat(permission): add RBAC module with Casbin enforcement and policy reload 2026-05-21 16:47:35 +08:00

README.md

RedisGateway 共用連線)

用途

  • svc.ServiceContext 建立一次 *redis.Client,全進程共用 go-zero 的 connection pool同一 Addr 只會有一個 pool
  • internal/model/{module} 的 factory / repository 注入此 client禁止在 module 內 go-redis.NewClient 或重複 MustNewRedis

使用

import redislib "gateway/internal/library/redis"

rds, err := redislib.NewClient(c.Redis) // Host 空 → (nil, nil)
rds.Zero() // *github.com/zeromicro/go-zero/core/stores/redis.Redis

與 Mongo 對照

Mongo Redis
封裝 library/mongo library/redis
共用機制 go-zero mon.clientManagerkey = URI go-zero redis.clientManagerkey = Addr
模組內 每 collection 一個 repository 共用 client + 模組 redis.go 定義 key