@feardread/fear 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (99) hide show
  1. package/FEAR.js +459 -0
  2. package/FEARServer.js +280 -0
  3. package/controllers/agent.js +438 -0
  4. package/controllers/auth/index.js +345 -0
  5. package/controllers/auth/token.js +50 -0
  6. package/controllers/blog.js +105 -0
  7. package/controllers/brand.js +10 -0
  8. package/controllers/cart.js +425 -0
  9. package/controllers/category.js +9 -0
  10. package/controllers/coupon.js +63 -0
  11. package/controllers/crud/crud.js +508 -0
  12. package/controllers/crud/index.js +36 -0
  13. package/controllers/email.js +34 -0
  14. package/controllers/enquiry.js +65 -0
  15. package/controllers/events.js +9 -0
  16. package/controllers/order.js +125 -0
  17. package/controllers/payment.js +31 -0
  18. package/controllers/product.js +147 -0
  19. package/controllers/review.js +247 -0
  20. package/controllers/tag.js +10 -0
  21. package/controllers/task.js +10 -0
  22. package/controllers/upload.js +41 -0
  23. package/controllers/user.js +401 -0
  24. package/index.js +7 -0
  25. package/libs/agent/index.js +561 -0
  26. package/libs/agent/modules/ai/ai.js +285 -0
  27. package/libs/agent/modules/ai/chat.js +518 -0
  28. package/libs/agent/modules/ai/config.js +688 -0
  29. package/libs/agent/modules/ai/operations.js +787 -0
  30. package/libs/agent/modules/analyze/api.js +546 -0
  31. package/libs/agent/modules/analyze/dorks.js +395 -0
  32. package/libs/agent/modules/ccard/README.md +454 -0
  33. package/libs/agent/modules/ccard/audit.js +479 -0
  34. package/libs/agent/modules/ccard/checker.js +674 -0
  35. package/libs/agent/modules/ccard/payment-processors.json +16 -0
  36. package/libs/agent/modules/ccard/validator.js +629 -0
  37. package/libs/agent/modules/code/analyzer.js +303 -0
  38. package/libs/agent/modules/code/jquery.js +1093 -0
  39. package/libs/agent/modules/code/react.js +1536 -0
  40. package/libs/agent/modules/code/refactor.js +499 -0
  41. package/libs/agent/modules/crypto/exchange.js +564 -0
  42. package/libs/agent/modules/net/proxy.js +409 -0
  43. package/libs/agent/modules/security/cve.js +442 -0
  44. package/libs/agent/modules/security/monitor.js +360 -0
  45. package/libs/agent/modules/security/scanner.js +300 -0
  46. package/libs/agent/modules/security/vulnerability.js +506 -0
  47. package/libs/agent/modules/security/web.js +465 -0
  48. package/libs/agent/modules/utils/browser.js +492 -0
  49. package/libs/agent/modules/utils/colorizer.js +285 -0
  50. package/libs/agent/modules/utils/manager.js +478 -0
  51. package/libs/cloud/index.js +228 -0
  52. package/libs/config/db.js +21 -0
  53. package/libs/config/validator.js +82 -0
  54. package/libs/db/index.js +318 -0
  55. package/libs/emailer/imap.js +126 -0
  56. package/libs/emailer/info.js +41 -0
  57. package/libs/emailer/smtp.js +77 -0
  58. package/libs/handler/async.js +3 -0
  59. package/libs/handler/error.js +66 -0
  60. package/libs/handler/index.js +161 -0
  61. package/libs/logger/index.js +49 -0
  62. package/libs/logger/morgan.js +24 -0
  63. package/libs/passport/passport.js +109 -0
  64. package/libs/search/api.js +384 -0
  65. package/libs/search/features.js +219 -0
  66. package/libs/search/service.js +64 -0
  67. package/libs/swagger/config.js +18 -0
  68. package/libs/swagger/index.js +35 -0
  69. package/libs/validator/index.js +254 -0
  70. package/models/blog.js +31 -0
  71. package/models/brand.js +12 -0
  72. package/models/cart.js +14 -0
  73. package/models/category.js +11 -0
  74. package/models/coupon.js +9 -0
  75. package/models/customer.js +0 -0
  76. package/models/enquiry.js +29 -0
  77. package/models/events.js +13 -0
  78. package/models/order.js +94 -0
  79. package/models/product.js +32 -0
  80. package/models/review.js +14 -0
  81. package/models/tag.js +10 -0
  82. package/models/task.js +11 -0
  83. package/models/user.js +68 -0
  84. package/package.json +12 -0
  85. package/routes/agent.js +615 -0
  86. package/routes/auth.js +13 -0
  87. package/routes/blog.js +19 -0
  88. package/routes/brand.js +15 -0
  89. package/routes/cart.js +105 -0
  90. package/routes/category.js +16 -0
  91. package/routes/coupon.js +15 -0
  92. package/routes/enquiry.js +14 -0
  93. package/routes/events.js +16 -0
  94. package/routes/mail.js +170 -0
  95. package/routes/order.js +19 -0
  96. package/routes/product.js +22 -0
  97. package/routes/review.js +11 -0
  98. package/routes/task.js +12 -0
  99. package/routes/user.js +17 -0
@@ -0,0 +1,401 @@
1
+
2
+ const UserModel = require("../models/user");
3
+ const methods = require("./crud");
4
+ const db = require("../libs/db");
5
+
6
+ exports.passwordToken = () => {
7
+
8
+ }
9
+
10
+ exports.passwordReset = () => {
11
+
12
+ }
13
+
14
+ exports.getUserCart = async (req, res) => {
15
+ console.log('req = ', req);
16
+ var userId = req.body;
17
+ userId = db.wrapId(userId);
18
+
19
+ await Cart.find({ userId: userId })
20
+ .populate("productId")
21
+ .then((cart) => { return res.status(200).json({ success: true, result: cart }) })
22
+ .catch(error => new Error(error));
23
+ }
24
+
25
+ exports.wishlist = async (req, res) => {
26
+ const { _id } = req.user;
27
+ try {
28
+ const findUser = await User.findById(_id).populate("wishlist");
29
+ res.json(findUser);
30
+ } catch (error) {
31
+ throw new Error(error);
32
+ }
33
+ }
34
+
35
+ const crud = methods.crudController( UserModel );
36
+ for(prop in crud) {
37
+ if(crud.hasOwnProperty(prop)) {
38
+ module.exports[prop] = crud[prop];
39
+ }
40
+ }
41
+
42
+ //const asyncHandler = require("express-async-handler");
43
+ /*
44
+ const { generateToken } = require("../config/jwtToken");
45
+ const validateMongoDbId = require("../utils/validateMongodbId");
46
+ const { generateRefreshToken } = require("../config/refreshtoken");
47
+
48
+ const sendEmail = require("./email");
49
+ const { createPasswordResetToken } = require("../models/userModel");
50
+
51
+ // handle refresh token
52
+
53
+ const handleRefreshToken = asyncHandler(async (req, res) => {
54
+ const cookie = req.cookies;
55
+ if (!cookie?.refreshToken) throw new Error("No Refresh Token in Cookies");
56
+ const refreshToken = cookie.refreshToken;
57
+ const user = await User.findOne({ refreshToken });
58
+ if (!user) throw new Error(" No Refresh token present in db or not matched");
59
+ jwt.verify(refreshToken, process.env.JWT_SECRET, (err, decoded) => {
60
+ if (err || user.id !== decoded.id) {
61
+ throw new Error("There is something wrong with refresh token");
62
+ }
63
+ const accessToken = generateToken(user?._id);
64
+ res.json({ accessToken });
65
+ });
66
+ });
67
+
68
+ // logout functionality
69
+
70
+ const logout = asyncHandler(async (req, res) => {
71
+ const cookie = req.cookies;
72
+ if (!cookie?.refreshToken) throw new Error("No Refresh Token in Cookies");
73
+ const refreshToken = cookie.refreshToken;
74
+ const user = await User.findOne({ refreshToken });
75
+ if (!user) {
76
+ res.clearCookie("refreshToken", {
77
+ httpOnly: true,
78
+ secure: true,
79
+ });
80
+ return res.sendStatus(204); // forbidden
81
+ }
82
+ await User.findOneAndUpdate(refreshToken, {
83
+ refreshToken: "",
84
+ });
85
+ res.clearCookie("refreshToken", {
86
+ httpOnly: true,
87
+ secure: true,
88
+ });
89
+ res.sendStatus(204); // forbidden
90
+ });
91
+
92
+ // Update a user
93
+
94
+ const updatedUser = asyncHandler(async (req, res) => {
95
+ const { _id } = req.user;
96
+ validateMongoDbId(_id);
97
+
98
+ try {
99
+ const updatedUser = await User.findByIdAndUpdate(
100
+ _id,
101
+ {
102
+ firstname: req?.body?.firstname,
103
+ lastname: req?.body?.lastname,
104
+ email: req?.body?.email,
105
+ mobile: req?.body?.mobile,
106
+ },
107
+ {
108
+ new: true,
109
+ }
110
+ );
111
+ res.json(updatedUser);
112
+ } catch (error) {
113
+ throw new Error(error);
114
+ }
115
+ });
116
+
117
+ // save user Address
118
+
119
+ const saveAddress = asyncHandler(async (req, res, next) => {
120
+ const { _id } = req.user;
121
+ validateMongoDbId(_id);
122
+
123
+ try {
124
+ const updatedUser = await User.findByIdAndUpdate(
125
+ _id,
126
+ {
127
+ address: req?.body?.address,
128
+ },
129
+ {
130
+ new: true,
131
+ }
132
+ );
133
+ res.json(updatedUser);
134
+ } catch (error) {
135
+ throw new Error(error);
136
+ }
137
+ });
138
+
139
+ // Get all users
140
+
141
+ const getallUser = asyncHandler(async (req, res) => {
142
+ try {
143
+ const getUsers = await User.find().populate("wishlist");
144
+ res.json(getUsers);
145
+ } catch (error) {
146
+ throw new Error(error);
147
+ }
148
+ });
149
+
150
+ // Get a single user
151
+
152
+ const getaUser = asyncHandler(async (req, res) => {
153
+ const { id } = req.params;
154
+ validateMongoDbId(id);
155
+
156
+ try {
157
+ const getaUser = await User.findById(id);
158
+ res.json({
159
+ getaUser,
160
+ });
161
+ } catch (error) {
162
+ throw new Error(error);
163
+ }
164
+ });
165
+
166
+ // Get a single user
167
+
168
+ const deleteaUser = asyncHandler(async (req, res) => {
169
+ const { id } = req.params;
170
+ validateMongoDbId(id);
171
+
172
+ try {
173
+ const deleteaUser = await User.findByIdAndDelete(id);
174
+ res.json({
175
+ deleteaUser,
176
+ });
177
+ } catch (error) {
178
+ throw new Error(error);
179
+ }
180
+ });
181
+
182
+ const blockUser = asyncHandler(async (req, res) => {
183
+ const { id } = req.params;
184
+ validateMongoDbId(id);
185
+
186
+ try {
187
+ const blockusr = await User.findByIdAndUpdate(
188
+ id,
189
+ {
190
+ isBlocked: true,
191
+ },
192
+ {
193
+ new: true,
194
+ }
195
+ );
196
+ res.json(blockusr);
197
+ } catch (error) {
198
+ throw new Error(error);
199
+ }
200
+ });
201
+
202
+ const unblockUser = asyncHandler(async (req, res) => {
203
+ const { id } = req.params;
204
+ validateMongoDbId(id);
205
+
206
+ try {
207
+ const unblock = await User.findByIdAndUpdate(
208
+ id,
209
+ {
210
+ isBlocked: false,
211
+ },
212
+ {
213
+ new: true,
214
+ }
215
+ );
216
+ res.json({
217
+ message: "User UnBlocked",
218
+ });
219
+ } catch (error) {
220
+ throw new Error(error);
221
+ }
222
+ });
223
+
224
+ const updatePassword = asyncHandler(async (req, res) => {
225
+ const { _id } = req.user;
226
+ const { password } = req.body;
227
+ validateMongoDbId(_id);
228
+ const user = await User.findById(_id);
229
+ if (password) {
230
+ user.password = password;
231
+ const updatedPassword = await user.save();
232
+ res.json(updatedPassword);
233
+ } else {
234
+ res.json(user);
235
+ }
236
+ });
237
+
238
+ const forgotPasswordToken = asyncHandler(async (req, res) => {
239
+ const { email } = req.body;
240
+ const user = await User.findOne({ email });
241
+ if (!user) throw new Error("User not found with this email");
242
+ try {
243
+ const token = await user.createPasswordResetToken();
244
+
245
+ await user.save();
246
+ console.log(token);
247
+ const resetURL = `Hi, Please follow this link to reset Your Password. This link is valid till 10 minutes from now. <a href='http://localhost:3000/reset-password/${token}'>Click Here</>`;
248
+
249
+ const data = {
250
+ to: email,
251
+ text: "Hey User",
252
+ subject: "Forgot Password Link",
253
+ htm: resetURL,
254
+ };
255
+ sendEmail(data);
256
+ res.json(token);
257
+ } catch (error) {
258
+ throw new Error(error);
259
+ }
260
+ });
261
+
262
+ const resetPassword = asyncHandler(async (req, res) => {
263
+ const { password } = req.body;
264
+ const { token } = req.params;
265
+ const hashedToken = crypto.createHash("sha256").update(token).digest("hex");
266
+ const user = await User.findOne({
267
+ passwordResetToken: hashedToken,
268
+ passwordResetExpires: { $gt: Date.now() },
269
+ });
270
+ if (!user) throw new Error(" Token Expired, Please try again later");
271
+ user.password = password;
272
+ user.passwordResetToken = undefined;
273
+ user.passwordResetExpires = undefined;
274
+ await user.save();
275
+ res.json(user);
276
+ });
277
+
278
+ const getWishlist = asyncHandler(async (req, res) => {
279
+ const { _id } = req.user;
280
+ try {
281
+ const findUser = await User.findById(_id).populate("wishlist");
282
+ res.json(findUser);
283
+ } catch (error) {
284
+ throw new Error(error);
285
+ }
286
+ });
287
+
288
+ const userCart = asyncHandler(async (req, res) => {
289
+ const { productId, color, quantity, price } = req.body;
290
+
291
+ const { _id } = req.user;
292
+ validateMongoDbId(_id);
293
+ try {
294
+ let newCart = await new Cart({
295
+ userId: _id,
296
+ productId,
297
+ color,
298
+ price,
299
+ quantity,
300
+ }).save();
301
+ res.json(newCart);
302
+ } catch (error) {
303
+ throw new Error(error);
304
+ }
305
+ });
306
+
307
+ const getUserCart = asyncHandler(async (req, res) => {
308
+ const { _id } = req.user;
309
+ validateMongoDbId(_id);
310
+ try {
311
+ const cart = await Cart.find({ userId: _id })
312
+ .populate("productId")
313
+ .populate("color");
314
+ res.json(cart);
315
+ } catch (error) {
316
+ throw new Error(error);
317
+ }
318
+ });
319
+
320
+ const removeProductFromCart = asyncHandler(async (req, res) => {
321
+ const { _id } = req.user;
322
+ const { cartItemId } = req.params;
323
+ validateMongoDbId(_id);
324
+ try {
325
+ const deleteProductFromcart = await Cart.deleteOne({
326
+ userId: _id,
327
+ _id: cartItemId,
328
+ });
329
+
330
+ res.json(deleteProductFromcart);
331
+ } catch (error) {
332
+ throw new Error(error);
333
+ }
334
+ });
335
+
336
+ const emptyCart = asyncHandler(async (req, res) => {
337
+ const { _id } = req.user;
338
+ validateMongoDbId(_id);
339
+ try {
340
+ const deleteCart = await Cart.deleteMany({
341
+ userId: _id,
342
+ });
343
+
344
+ res.json(deleteCart);
345
+ } catch (error) {
346
+ throw new Error(error);
347
+ }
348
+ });
349
+
350
+ const updateProductQuantityFromCart = asyncHandler(async (req, res) => {
351
+ const { _id } = req.user;
352
+ const { cartItemId, newQuantity } = req.params;
353
+ validateMongoDbId(_id);
354
+ try {
355
+ const cartItem = await Cart.findOne({
356
+ userId: _id,
357
+ _id: cartItemId,
358
+ });
359
+ cartItem.quantity = newQuantity;
360
+ cartItem.save();
361
+ res.json(cartItem);
362
+ } catch (error) {
363
+ throw new Error(error);
364
+ }
365
+ });
366
+
367
+
368
+
369
+
370
+ module.exports = {
371
+ createUser,
372
+ loginUserCtrl,
373
+ getallUser,
374
+ getaUser,
375
+ deleteaUser,
376
+ updatedUser,
377
+ blockUser,
378
+ unblockUser,
379
+ handleRefreshToken,
380
+ logout,
381
+ updatePassword,
382
+ forgotPasswordToken,
383
+ resetPassword,
384
+ loginAdmin,
385
+ getWishlist,
386
+ saveAddress,
387
+ userCart,
388
+ getUserCart,
389
+ createOrder,
390
+ getMyOrders,
391
+ emptyCart,
392
+ getMonthWiseOrderIncome,
393
+ getAllOrders,
394
+ getsingleOrder,
395
+ updateOrder,
396
+ getYearlyTotalOrder,
397
+
398
+ removeProductFromCart,
399
+ updateProductQuantityFromCart,
400
+ };
401
+ */
package/index.js ADDED
@@ -0,0 +1,7 @@
1
+
2
+ const FEAR = require("./FEAR");
3
+ const FearServer = require("./FEARServer");
4
+
5
+ exports.FearFactory = () => new FearServer()
6
+
7
+ module.exports = { FEAR, FearServer, exports.FearFactory }