Merge remote-tracking branch 'origin/master' into develop
This commit is contained in:
commit
531075208f
7 files changed
+55
-9
No files matched your search
@@ -264,4 +264,33 @@ describe("/store/customers", () => {
|
|||||||
expect(response.data.customer.billing_address_id).toEqual(null)
|
expect(response.data.customer.billing_address_id).toEqual(null)
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
|
describe("POST /store/customers/password-token", () => {
|
||||||
|
beforeEach(async () => {
|
||||||
|
const manager = dbConnection.manager
|
||||||
|
await manager.insert(Customer, {
|
||||||
|
id: "test_customer",
|
||||||
|
first_name: "John",
|
||||||
|
last_name: "Deere",
|
||||||
|
email: "john@deere.com",
|
||||||
|
password_hash:
|
||||||
|
"c2NyeXB0AAEAAAABAAAAAVMdaddoGjwU1TafDLLlBKnOTQga7P2dbrfgf3fB+rCD/cJOMuGzAvRdKutbYkVpuJWTU39P7OpuWNkUVoEETOVLMJafbI8qs8Qx/7jMQXkN", // password matching "test"
|
||||||
|
has_account: true,
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
afterEach(async () => {
|
||||||
|
await doAfterEach()
|
||||||
|
})
|
||||||
|
|
||||||
|
it("creates token", async () => {
|
||||||
|
const api = useApi()
|
||||||
|
|
||||||
|
const response = await api.post(`/store/customers/password-token`, {
|
||||||
|
email: "john@deere.com",
|
||||||
|
})
|
||||||
|
|
||||||
|
expect(response.status).toEqual(204)
|
||||||
|
})
|
||||||
|
})
|
||||||
})
|
})
|
||||||
@@ -3,6 +3,12 @@
|
|||||||
All notable changes to this project will be documented in this file.
|
All notable changes to this project will be documented in this file.
|
||||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||||
|
|
||||||
|
## [1.1.47](https://github.com/medusajs/medusa/compare/@medusajs/medusa@1.1.46...@medusajs/medusa@1.1.47) (2021-10-23)
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
|
||||||
|
- pull missing fields ([b82b43b](https://github.com/medusajs/medusa/commit/b82b43b4c64dc5bc705a439a214f9d1dc9976e21))
|
||||||
|
|
||||||
## [1.1.46](https://github.com/medusajs/medusa/compare/@medusajs/medusa@1.1.45...@medusajs/medusa@1.1.46) (2021-10-19)
|
## [1.1.46](https://github.com/medusajs/medusa/compare/@medusajs/medusa@1.1.45...@medusajs/medusa@1.1.46) (2021-10-19)
|
||||||
|
|
||||||
### Bug Fixes
|
### Bug Fixes
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@medusajs/medusa",
|
"name": "@medusajs/medusa",
|
||||||
"version": "1.1.46",
|
"version": "1.1.47",
|
||||||
"description": "E-commerce for JAMstack",
|
"description": "E-commerce for JAMstack",
|
||||||
"main": "dist/index.js",
|
"main": "dist/index.js",
|
||||||
"bin": {
|
"bin": {
|
||||||
|
|||||||
@@ -24,7 +24,9 @@ import jwt from "jsonwebtoken"
|
|||||||
*/
|
*/
|
||||||
export default async (req, res) => {
|
export default async (req, res) => {
|
||||||
const schema = Validator.object().keys({
|
const schema = Validator.object().keys({
|
||||||
email: Validator.string().email().required(),
|
email: Validator.string()
|
||||||
|
.email()
|
||||||
|
.required(),
|
||||||
token: Validator.string().required(),
|
token: Validator.string().required(),
|
||||||
password: Validator.string().required(),
|
password: Validator.string().required(),
|
||||||
})
|
})
|
||||||
@@ -34,11 +36,12 @@ export default async (req, res) => {
|
|||||||
throw new MedusaError(MedusaError.Types.INVALID_DATA, error.details)
|
throw new MedusaError(MedusaError.Types.INVALID_DATA, error.details)
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
|
||||||
const customerService = req.scope.resolve("customerService")
|
const customerService = req.scope.resolve("customerService")
|
||||||
let customer = await customerService.retrieveByEmail(value.email)
|
let customer = await customerService.retrieveByEmail(value.email, {
|
||||||
|
select: ["id", "password_hash"],
|
||||||
|
})
|
||||||
|
|
||||||
const decodedToken = await jwt.verify(value.token, customer.password_hash)
|
const decodedToken = jwt.verify(value.token, customer.password_hash)
|
||||||
if (!decodedToken || customer.id !== decodedToken.customer_id) {
|
if (!decodedToken || customer.id !== decodedToken.customer_id) {
|
||||||
res.status(401).send("Invalid or expired password reset token")
|
res.status(401).send("Invalid or expired password reset token")
|
||||||
return
|
return
|
||||||
@@ -50,7 +53,4 @@ export default async (req, res) => {
|
|||||||
|
|
||||||
customer = await customerService.retrieve(customer.id)
|
customer = await customerService.retrieve(customer.id)
|
||||||
res.status(200).json({ customer })
|
res.status(200).json({ customer })
|
||||||
} catch (error) {
|
|
||||||
throw error
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
@@ -17,6 +17,7 @@ async function loadProductsIntoSearchEngine(container) {
|
|||||||
select: [
|
select: [
|
||||||
"id",
|
"id",
|
||||||
"title",
|
"title",
|
||||||
|
"status",
|
||||||
"subtitle",
|
"subtitle",
|
||||||
"description",
|
"description",
|
||||||
"handle",
|
"handle",
|
||||||
|
|||||||
@@ -94,7 +94,16 @@ class CustomerService extends BaseService {
|
|||||||
* @return {string} the generated JSON web token
|
* @return {string} the generated JSON web token
|
||||||
*/
|
*/
|
||||||
async generateResetPasswordToken(customerId) {
|
async generateResetPasswordToken(customerId) {
|
||||||
const customer = await this.retrieve(customerId)
|
const customer = await this.retrieve(customerId, {
|
||||||
|
select: [
|
||||||
|
"id",
|
||||||
|
"has_account",
|
||||||
|
"password_hash",
|
||||||
|
"email",
|
||||||
|
"first_name",
|
||||||
|
"last_name",
|
||||||
|
],
|
||||||
|
})
|
||||||
|
|
||||||
if (!customer.has_account) {
|
if (!customer.has_account) {
|
||||||
throw new MedusaError(
|
throw new MedusaError(
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ const searchFields = [
|
|||||||
"id",
|
"id",
|
||||||
"title",
|
"title",
|
||||||
"subtitle",
|
"subtitle",
|
||||||
|
"status",
|
||||||
"description",
|
"description",
|
||||||
"handle",
|
"handle",
|
||||||
"is_giftcard",
|
"is_giftcard",
|
||||||
|
|||||||
Reference in new issue
Block a user