perm.proto 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. syntax = "proto3";
  2. package pb;
  3. option go_package = "perms-system-server/pb";
  4. // PermService 权限管理系统 gRPC 服务,供接入产品的服务端调用。
  5. service PermService {
  6. // SyncPermissions 同步权限声明。产品服务端通过 appKey/appSecret 认证后批量同步权限定义(新增/更新/禁用不在列表中的权限)。
  7. rpc SyncPermissions(SyncPermissionsReq) returns (SyncPermissionsResp);
  8. // Login 产品端登录。产品成员通过用户名密码 + productCode 登录,返回 JWT 令牌对及用户权限信息。
  9. rpc Login(LoginReq) returns (LoginResp);
  10. // RefreshToken 刷新令牌。使用有效的 refreshToken 换取新的令牌对,旧令牌即时失效(单会话轮转)。
  11. rpc RefreshToken(RefreshTokenReq) returns (RefreshTokenResp);
  12. // VerifyToken 验证令牌。校验 accessToken 的有效性(签名、过期、用户状态、产品状态、成员资格、tokenVersion),返回用户权限信息。
  13. rpc VerifyToken(VerifyTokenReq) returns (VerifyTokenResp);
  14. // GetUserPerms 查询用户权限。产品服务端通过 appKey/appSecret 认证后查询指定用户在该产品下的成员类型和权限列表。
  15. rpc GetUserPerms(GetUserPermsReq) returns (GetUserPermsResp);
  16. // Logout 用户登出。使当前 accessToken 对应用户的所有令牌立即失效(递增 tokenVersion)。
  17. rpc Logout(LogoutReq) returns (LogoutResp);
  18. }
  19. message PermItem {
  20. string code = 1;
  21. string name = 2;
  22. string remark = 3;
  23. }
  24. message SyncPermissionsReq {
  25. string appKey = 1;
  26. string appSecret = 2;
  27. repeated PermItem perms = 3;
  28. }
  29. message SyncPermissionsResp {
  30. int64 added = 1;
  31. int64 updated = 2;
  32. int64 disabled = 3;
  33. }
  34. message LoginReq {
  35. string productCode = 1;
  36. string username = 2;
  37. string password = 3;
  38. }
  39. message LoginResp {
  40. string accessToken = 1;
  41. string refreshToken = 2;
  42. int64 expires = 3;
  43. int64 userId = 4;
  44. string username = 5;
  45. string nickname = 6;
  46. string memberType = 7;
  47. repeated string perms = 8;
  48. }
  49. message RefreshTokenReq {
  50. string refreshToken = 1;
  51. string productCode = 2;
  52. }
  53. message RefreshTokenResp {
  54. string accessToken = 1;
  55. string refreshToken = 2;
  56. int64 expires = 3;
  57. repeated string perms = 4;
  58. }
  59. message VerifyTokenReq {
  60. string accessToken = 1;
  61. }
  62. message VerifyTokenResp {
  63. bool valid = 1;
  64. int64 userId = 2;
  65. string username = 3;
  66. string productCode = 4;
  67. string memberType = 5;
  68. repeated string perms = 6;
  69. }
  70. message GetUserPermsReq {
  71. int64 userId = 1;
  72. string productCode = 2;
  73. string appKey = 3;
  74. string appSecret = 4;
  75. }
  76. message GetUserPermsResp {
  77. repeated string perms = 1;
  78. string memberType = 2;
  79. }
  80. message LogoutReq {
  81. string accessToken = 1;
  82. }
  83. message LogoutResp {}