end-user.js
3.09 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
"use strict";
/**
* end-user controller
*/
const { createCoreController } = require("@strapi/strapi").factories;
module.exports = createCoreController("api::end-user.end-user", () => ({
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);
console.log(
"phoneNumber",
ctx.request.body.data.mobileNo,
ctx.request.body.data.email
);
let existingUser;
existingUser = await strapi.entityService.findMany(
"api::end-user.end-user",
{
// fields: ["id"],
filters: { phone: { $eq: ctx.request.body.data.mobileNo } },
}
);
console.log("existingUser> 1", existingUser);
if (!existingUser) {
existingUser = await strapi.entityService.findMany(
"api::end-user.end-user",
{
// fields: ["id"],
filters: { email: { $eq: ctx.request.body.data.email } },
}
);
}
console.log("existingUser > 2", existingUser);
// Generate one time password (otp)
const oneTimePassword = Math.floor(1000 + Math.random() * 9000);
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
// console.log("ctx.request.body.data", ctx.request.body.data);
console.log("existingUser", existingUser);
if (existingUser) {
} else {
ctx.request.body.data.user = currentUser.id;
const response = await strapi.entityService.create(
"api::end-user.end-user",
{
data: {
...ctx.request.body.data,
phone: ctx.request.body.data.mobileNo,
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.",
});
},
async giftCardOtp(ctx) {
// Generate one time password (otp)
// console.log(ctx.request.body);
const oneTimePassword = Math.floor(1000 + Math.random() * 9000);
const res = await strapi.entityService.update(
"plugin::users-permissions.user",
ctx.request.body.data.userId,
{
data: {
oneTimePassword: `${oneTimePassword}`,
},
}
);
// console.log("res", res);
// TODO: ADD FUNCTIONALITY FOR EMAIL AND SMS
ctx.send({
ok: true,
message: "OTP sent successfully",
});
},
}));