Feat: Add users endpoint to medusajs (#925)
* add users endpoint to medusajs * add exports to medusa * use native omit Co-authored-by: Sebastian Rindom <seb@medusajs.com>
This commit is contained in:
co-authored by
Sebastian Rindom
parent
31fad7439c
commit
59e268b919
@@ -7,6 +7,7 @@ import AdminDraftOrdersResource from "./draft-orders"
|
|||||||
import AdminGiftCardsResource from "./gift-cards"
|
import AdminGiftCardsResource from "./gift-cards"
|
||||||
import AdminInvitesResource from "./invites"
|
import AdminInvitesResource from "./invites"
|
||||||
import AdminNotesResource from "./notes"
|
import AdminNotesResource from "./notes"
|
||||||
|
import AdminUsersResource from "./users"
|
||||||
import AdminReturnsResource from "./returns"
|
import AdminReturnsResource from "./returns"
|
||||||
import AdminOrdersResource from "./orders"
|
import AdminOrdersResource from "./orders"
|
||||||
import AdminReturnReasonsResource from "./return-reasons"
|
import AdminReturnReasonsResource from "./return-reasons"
|
||||||
@@ -26,6 +27,7 @@ class Admin extends BaseResource {
|
|||||||
public giftCards = new AdminGiftCardsResource(this.client)
|
public giftCards = new AdminGiftCardsResource(this.client)
|
||||||
public invites = new AdminInvitesResource(this.client)
|
public invites = new AdminInvitesResource(this.client)
|
||||||
public notes = new AdminNotesResource(this.client)
|
public notes = new AdminNotesResource(this.client)
|
||||||
|
public users = new AdminUsersResource(this.client)
|
||||||
public returns = new AdminReturnsResource(this.client)
|
public returns = new AdminReturnsResource(this.client)
|
||||||
public orders = new AdminOrdersResource(this.client)
|
public orders = new AdminOrdersResource(this.client)
|
||||||
public returnReasons = new AdminReturnReasonsResource(this.client)
|
public returnReasons = new AdminReturnReasonsResource(this.client)
|
||||||
|
|||||||
@@ -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<void> {
|
||||||
|
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<AdminUserRes> {
|
||||||
|
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<AdminUserRes> {
|
||||||
|
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<AdminUserRes> {
|
||||||
|
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<AdminUserRes> {
|
||||||
|
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<AdminDeleteUserRes> {
|
||||||
|
const path = `/admin/users/${id}`
|
||||||
|
return this.client.request("DELETE", path)
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @description lists all users
|
||||||
|
* @returns a list of all users
|
||||||
|
*/
|
||||||
|
list(): ResponsePromise<AdminUsersListRes> {
|
||||||
|
const path = `/admin/users`
|
||||||
|
return this.client.request("GET", path)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
1
|
||||||
|
export default AdminUsersResource
|
||||||
@@ -27,6 +27,7 @@ export * from "./routes/admin/notes"
|
|||||||
export * from "./routes/admin/notifications"
|
export * from "./routes/admin/notifications"
|
||||||
export * from "./routes/admin/shipping-profiles"
|
export * from "./routes/admin/shipping-profiles"
|
||||||
export * from "./routes/admin/store"
|
export * from "./routes/admin/store"
|
||||||
|
export * from "./routes/admin/users"
|
||||||
export * from "./routes/admin/orders"
|
export * from "./routes/admin/orders"
|
||||||
export * from "./routes/admin/variants"
|
export * from "./routes/admin/variants"
|
||||||
export * from "./routes/admin/return-reasons"
|
export * from "./routes/admin/return-reasons"
|
||||||
|
|||||||
@@ -1,4 +1,7 @@
|
|||||||
import { Router } from "express"
|
import { Router } from "express"
|
||||||
|
import _ from "lodash"
|
||||||
|
import { User } from "../../../.."
|
||||||
|
import { DeleteResponse } from "../../../../types/common"
|
||||||
import middlewares from "../../../middlewares"
|
import middlewares from "../../../middlewares"
|
||||||
const route = Router()
|
const route = Router()
|
||||||
|
|
||||||
@@ -31,3 +34,21 @@ export default (app) => {
|
|||||||
|
|
||||||
return app
|
return app
|
||||||
}
|
}
|
||||||
|
export type AdminUserRes = {
|
||||||
|
user: Omit<User, "password_hash">
|
||||||
|
}
|
||||||
|
|
||||||
|
export type AdminUsersListRes = {
|
||||||
|
users: Omit<User, "password_hash">[]
|
||||||
|
}
|
||||||
|
|
||||||
|
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"
|
||||||
|
|||||||
Reference in New Issue
Block a user