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:
Philip Korsholm
2021-12-16 16:22:40 +01:00
committed by GitHub
parent 31fad7439c
commit 59e268b919
4 changed files with 116 additions and 0 deletions

View File

@@ -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)

View File

@@ -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

View File

@@ -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"

View File

@@ -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<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"