admin.go 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. package api
  2. import (
  3. "context"
  4. "fmt"
  5. "github.com/ente-io/cli/internal/api/models"
  6. "time"
  7. )
  8. func (c *Client) GetUserIdFromEmail(ctx context.Context, email string) (*models.UserDetails, error) {
  9. var res models.UserDetails
  10. r, err := c.restClient.R().
  11. SetContext(ctx).
  12. SetResult(&res).
  13. SetQueryParam("email", email).
  14. Get("/admin/user/")
  15. if err != nil {
  16. return nil, err
  17. }
  18. if r.IsError() {
  19. return nil, &ApiError{
  20. StatusCode: r.StatusCode(),
  21. Message: r.String(),
  22. }
  23. }
  24. return &res, nil
  25. }
  26. func (c *Client) ListUsers(ctx context.Context) ([]models.User, error) {
  27. var res struct {
  28. Users []models.User `json:"users"`
  29. }
  30. r, err := c.restClient.R().
  31. SetContext(ctx).
  32. SetQueryParam("sinceTime", "0").
  33. SetResult(&res).
  34. Get("/admin/users/")
  35. if err != nil {
  36. return nil, err
  37. }
  38. if r.IsError() {
  39. return nil, &ApiError{
  40. StatusCode: r.StatusCode(),
  41. Message: r.String(),
  42. }
  43. }
  44. return res.Users, nil
  45. }
  46. func (c *Client) DeleteUser(ctx context.Context, email string) error {
  47. r, err := c.restClient.R().
  48. SetContext(ctx).
  49. SetQueryParam("email", email).
  50. Delete("/admin/user/delete")
  51. if err != nil {
  52. return err
  53. }
  54. if r.IsError() {
  55. return &ApiError{
  56. StatusCode: r.StatusCode(),
  57. Message: r.String(),
  58. }
  59. }
  60. return nil
  61. }
  62. func (c *Client) Disable2Fa(ctx context.Context, userID int64) error {
  63. var res interface{}
  64. payload := map[string]interface{}{
  65. "userID": userID,
  66. }
  67. r, err := c.restClient.R().
  68. SetContext(ctx).
  69. SetResult(&res).
  70. SetBody(payload).
  71. Post("/admin/user/disable-2fa")
  72. if err != nil {
  73. return err
  74. }
  75. if r.IsError() {
  76. return &ApiError{
  77. StatusCode: r.StatusCode(),
  78. Message: r.String(),
  79. }
  80. }
  81. return nil
  82. }
  83. func (c *Client) UpdateFreePlanSub(ctx context.Context, userDetails *models.UserDetails, storageInBytes int64, expiryTimeInMicro int64) error {
  84. var res interface{}
  85. if userDetails.Subscription.ProductID != "free" {
  86. return fmt.Errorf("user is not on free plan")
  87. }
  88. payload := map[string]interface{}{
  89. "userID": userDetails.User.ID,
  90. "expiryTime": expiryTimeInMicro,
  91. "transactionID": fmt.Sprintf("cli-on-%d", time.Now().Unix()),
  92. "productID": "free",
  93. "paymentProvider": "",
  94. "storage": storageInBytes,
  95. }
  96. r, err := c.restClient.R().
  97. SetContext(ctx).
  98. SetResult(&res).
  99. SetBody(payload).
  100. Put("/admin/user/subscription")
  101. if err != nil {
  102. return err
  103. }
  104. if r.IsError() {
  105. return &ApiError{
  106. StatusCode: r.StatusCode(),
  107. Message: r.String(),
  108. }
  109. }
  110. return nil
  111. }