Commit abd3bfef by jay

OTP, vendor and user APIs ready

1 parent 36d44755
...@@ -20,6 +20,15 @@ ...@@ -20,6 +20,15 @@
"relation": "oneToMany", "relation": "oneToMany",
"target": "api::experience.experience", "target": "api::experience.experience",
"mappedBy": "vendor" "mappedBy": "vendor"
},
"email": {
"type": "string"
},
"user": {
"type": "relation",
"relation": "oneToOne",
"target": "plugin::users-permissions.user",
"inversedBy": "vendor"
} }
} }
} }
'use strict'; "use strict";
/** /**
* vendor controller * vendor controller
*/ */
const { createCoreController } = require('@strapi/strapi').factories; const { createCoreController } = require("@strapi/strapi").factories;
module.exports = createCoreController('api::vendor.vendor'); module.exports = createCoreController("api::vendor.vendor", () => ({
async create(ctx) {
// console.log("ctx", ctx.request.body);
// Get user from user entity
const currentUser = await strapi
.query("plugin::users-permissions.user")
.findOne({
populate: ["user"],
where: {
$and: [{ email: ctx.request.body.data.email }],
},
});
// Check if its already existing in vendor entity
// console.log("currentUser", currentUser);
let existingUser;
existingUser = await strapi.entityService.findMany("api::vendor.vendor", {
fields: ["id"],
filter: { phoneNumber: ctx.request.body.data.phoneNumber },
});
if (!existingUser) {
existingUser = await strapi.entityService.findMany("api::vendor.vendor", {
fields: ["id"],
filters: { email: ctx.request.body.data.email },
});
}
// Generate one time password (otp)
const oneTimePassword = Math.floor(100000 + Math.random() * 900000);
await strapi.entityService.update(
"plugin::users-permissions.user",
currentUser.id,
{
data: {
oneTimePassword: `${oneTimePassword}`,
},
}
);
const date = new Date();
// TODO: Code to send OTP on email
// TODO: Code to send OTP on SMS
if (existingUser && existingUser.length !== 0) {
} else {
ctx.request.body.data.user = currentUser.id;
const response = await strapi.entityService.create("api::vendor.vendor", {
data: { ...ctx.request.body.data, publishedAt: date },
});
console.log("response", response);
return { otpSent: true, data: response };
// ctx.request.body.data.user = currentUser;
// console.log("ctx.request.body.data", ctx.request.body.data);
// return await super.create(ctx);
}
ctx.send({
ok: true,
message: "Existing vendor found, skipping creation only sent OTP.",
});
},
}));
...@@ -70,6 +70,12 @@ ...@@ -70,6 +70,12 @@
}, },
"dialCode": { "dialCode": {
"type": "string" "type": "string"
},
"vendor": {
"type": "relation",
"relation": "oneToOne",
"target": "api::vendor.vendor",
"inversedBy": "user"
} }
} }
} }
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!