王性驊
4590f1c951
docs(api): group OpenAPI by tags + add Chinese field descriptions and enums
...
Make the generated docs/openapi/gateway.yaml usable by adding three things
go-doc parses out of the .api source:
- @server tags + summary on every block → Swagger UI groups endpoints
(Auth / Member / Permission / Normal) instead of dumping everything
under "default".
- backtick end-of-line // 中文 on every Request field → property
descriptions in the schema. go-doc only reads the trailing comment,
not the line above, so all comments are placed on the same line as
the tag.
- options=A|B|C in json/form tags wherever validate:"oneof=..." exists
→ enum dropdowns. The validate tag is kept for runtime validation;
go-zero also enforces options= at bind time.
Codify the rules in generate/api/README.md (tags / 行末註解 / options=)
and add AGENTS.md at repo root so any AI agent (Claude / Cursor / Codex)
picks them up automatically when working on the project.
types.go regenerated via make gen-api to keep json tags in sync.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-21 17:15:25 +08:00
王性驊
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
王性驊
713a81f70b
feat(auth): add unified registration/login module with Zitadel + lint cleanup
...
- Introduce auth module: handlers, logic, domain/repository/usecase, JWT
middleware, and Zitadel OIDC client (password + authorization code +
userinfo + JWKS verification)
- Wire member rate-limit, structured errors, and refactored member/
notification usecases (introduce shared errors, drop repo_errors.go)
- Bring the codebase to zero golangci-lint issues:
* goimports formatting
* errcheck on io.ReadAll/Unlock cleanup paths
* contextcheck: HandlerContext now takes (ctx, *http.Request)
* gocritic: rename shadowed `max`, use http.NoBody
* goconst: extract test fixtures and bsonOpSet
* testifylint: switch to assert inside httptest handlers
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-21 14:45:35 +08:00
王性驊
2ae86e9002
add member totp
2026-05-21 07:51:22 +08:00
王性驊
240fa92f6f
add member totp
2026-05-20 21:03:59 +08:00
王性驊
3afe3f9502
fix error msg
2026-05-20 17:32:22 +08:00
王性驊
35c6577ac8
chore: gitignore local gateway.dev.yaml and add example template
...
Stop tracking personal dev config (ports, credentials). Developers copy
etc/gateway.dev.example.yaml to etc/gateway.dev.yaml locally.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-20 15:14:44 +08:00
王性驊
49e7099bf2
add notification and member modules with local dev stack
...
Implement outbound notification (sync/async, idempotency, quota, DLQ),
member OTP/verification, SMTP/SES/Mitake providers, shared Redis wiring,
docker-compose for Mongo/Redis, and gateway config documentation.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-20 15:01:08 +08:00
王性驊
1274c56cb5
add member design
2026-05-20 01:04:26 +08:00
王性驊
67afbf6c5d
add member design
2026-05-19 21:56:59 +08:00
王性驊
04077a0fcb
add lib mongo
2026-05-19 21:33:04 +08:00
王性驊
fb5ac4b09f
add lint
2026-05-19 21:15:18 +08:00
王性驊
79c12702ec
add validate
2026-05-19 20:56:32 +08:00
王性驊
ea4f45f949
init project
2026-05-19 19:00:28 +08:00