permclient.go 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. package permclient
  2. import (
  3. "context"
  4. "perms-system-server/pb"
  5. "github.com/zeromicro/go-zero/zrpc"
  6. "google.golang.org/grpc"
  7. )
  8. type PermClient struct {
  9. cli pb.PermServiceClient
  10. }
  11. func NewPermClient(target string) (*PermClient, error) {
  12. conn, err := grpc.NewClient(target, grpc.WithInsecure())
  13. if err != nil {
  14. return nil, err
  15. }
  16. return &PermClient{cli: pb.NewPermServiceClient(conn)}, nil
  17. }
  18. func NewPermClientFromZrpc(c zrpc.RpcClientConf) *PermClient {
  19. client := zrpc.MustNewClient(c)
  20. return &PermClient{cli: pb.NewPermServiceClient(client.Conn())}
  21. }
  22. func (c *PermClient) SyncPermissions(ctx context.Context, appKey, appSecret string, perms []*pb.PermItem) (*pb.SyncPermissionsResp, error) {
  23. return c.cli.SyncPermissions(ctx, &pb.SyncPermissionsReq{
  24. AppKey: appKey,
  25. AppSecret: appSecret,
  26. Perms: perms,
  27. })
  28. }
  29. func (c *PermClient) Login(ctx context.Context, productCode, username, password string) (*pb.LoginResp, error) {
  30. return c.cli.Login(ctx, &pb.LoginReq{
  31. ProductCode: productCode,
  32. Username: username,
  33. Password: password,
  34. })
  35. }
  36. func (c *PermClient) RefreshToken(ctx context.Context, refreshToken, productCode string) (*pb.RefreshTokenResp, error) {
  37. return c.cli.RefreshToken(ctx, &pb.RefreshTokenReq{
  38. RefreshToken: refreshToken,
  39. ProductCode: productCode,
  40. })
  41. }
  42. func (c *PermClient) VerifyToken(ctx context.Context, accessToken string) (*pb.VerifyTokenResp, error) {
  43. return c.cli.VerifyToken(ctx, &pb.VerifyTokenReq{
  44. AccessToken: accessToken,
  45. })
  46. }
  47. func (c *PermClient) GetUserPerms(ctx context.Context, userId int64, productCode string) (*pb.GetUserPermsResp, error) {
  48. return c.cli.GetUserPerms(ctx, &pb.GetUserPermsReq{
  49. UserId: userId,
  50. ProductCode: productCode,
  51. })
  52. }