diff --git a/packages/medusa-js/src/resources/admin/index.ts b/packages/medusa-js/src/resources/admin/index.ts index 1d77a95a29..767af29f9a 100644 --- a/packages/medusa-js/src/resources/admin/index.ts +++ b/packages/medusa-js/src/resources/admin/index.ts @@ -7,6 +7,7 @@ import AdminDraftOrdersResource from "./draft-orders" import AdminGiftCardsResource from "./gift-cards" import AdminInvitesResource from "./invites" import AdminNotesResource from "./notes" +import AdminUsersResource from "./users" import AdminReturnsResource from "./returns" import AdminOrdersResource from "./orders" import AdminReturnReasonsResource from "./return-reasons" @@ -26,6 +27,7 @@ class Admin extends BaseResource { public giftCards = new AdminGiftCardsResource(this.client) public invites = new AdminInvitesResource(this.client) public notes = new AdminNotesResource(this.client) + public users = new AdminUsersResource(this.client) public returns = new AdminReturnsResource(this.client) public orders = new AdminOrdersResource(this.client) public returnReasons = new AdminReturnReasonsResource(this.client) diff --git a/packages/medusa-js/src/resources/admin/users.ts b/packages/medusa-js/src/resources/admin/users.ts new file mode 100644 index 0000000000..ed65d9e609 --- /dev/null +++ b/packages/medusa-js/src/resources/admin/users.ts @@ -0,0 +1,92 @@ +import { + AdminResetPasswordTokenRequest, + AdminResetPasswordRequest, + AdminCreateUserRequest, + AdminUpdateUserRequest, + AdminUsersListRes, + AdminUserRes, + AdminDeleteUserRes, +} from "@medusajs/medusa" +import { ResponsePromise } from "../.." +import BaseResource from "../base" + +class AdminUsersResource extends BaseResource { + /** + * @description resets password by re-sending password token. + * @param payload payload for generating reset-password token. + * @returns + */ + sendResetPasswordToken( + payload: AdminResetPasswordTokenRequest + ): ResponsePromise { + const path = `/admin/users/password-token` + return this.client.request("POST", path, payload) + } + + /** + * @description resets the users password given the correct token. + * @param payload reset password information. + * @returns + */ + resetPassword( + payload: AdminResetPasswordRequest + ): ResponsePromise { + const path = `admin/users/reset-password` + return this.client.request("POST", path, payload) + } + + /** + * Retrieves a given user + * @param id id of the user + * @returns the user + */ + retrieve(id: string): ResponsePromise { + const path = `/admin/users/${id}` + return this.client.request("GET", path) + } + + /** + * @description creates a user with the provided information + * @param payload user creation request body + * @returns created user + */ + create(payload: AdminCreateUserRequest): ResponsePromise { + const path = `/admin/users` + return this.client.request("POST", path, payload) + } + + /** + * @description updates a given user + * @param id id of the user to update + * @param payload user update request body + * @returns the updated user + */ + update( + id: string, + payload: AdminUpdateUserRequest + ): ResponsePromise { + const path = `/admin/users/${id}` + return this.client.request("POST", path, payload) + } + + /** + * @description deletes a user + * @param id id of the user to be deleted + * @returns delete response + */ + delete(id: string): ResponsePromise { + const path = `/admin/users/${id}` + return this.client.request("DELETE", path) + } + + /** + * @description lists all users + * @returns a list of all users + */ + list(): ResponsePromise { + const path = `/admin/users` + return this.client.request("GET", path) + } +} +1 +export default AdminUsersResource diff --git a/packages/medusa/src/api/index.js b/packages/medusa/src/api/index.js index 3d51434736..d847a8079f 100644 --- a/packages/medusa/src/api/index.js +++ b/packages/medusa/src/api/index.js @@ -27,6 +27,7 @@ export * from "./routes/admin/notes" export * from "./routes/admin/notifications" export * from "./routes/admin/shipping-profiles" export * from "./routes/admin/store" +export * from "./routes/admin/users" export * from "./routes/admin/orders" export * from "./routes/admin/variants" export * from "./routes/admin/return-reasons" diff --git a/packages/medusa/src/api/routes/admin/users/index.ts b/packages/medusa/src/api/routes/admin/users/index.ts index da8e2b1883..45460608f9 100644 --- a/packages/medusa/src/api/routes/admin/users/index.ts +++ b/packages/medusa/src/api/routes/admin/users/index.ts @@ -1,4 +1,7 @@ import { Router } from "express" +import _ from "lodash" +import { User } from "../../../.." +import { DeleteResponse } from "../../../../types/common" import middlewares from "../../../middlewares" const route = Router() @@ -31,3 +34,21 @@ export default (app) => { return app } +export type AdminUserRes = { + user: Omit +} + +export type AdminUsersListRes = { + users: Omit[] +} + +export type AdminDeleteUserRes = DeleteResponse + +export * from "./reset-password" +export * from "./reset-password-token" + +export * from "./create-user" +export * from "./delete-user" +export * from "./get-user" +export * from "./list-users" +export * from "./update-user"