juice-shop
37 строк · 1.6 Кб
1/* Generated API endpoints */
2finale.initialize({ app, sequelize })
3
4const autoModels = [
5{ name: 'User', exclude: ['password', 'totpSecret'], model: UserModel },
6{ name: 'Product', exclude: [], model: ProductModel },
7{ name: 'Feedback', exclude: [], model: FeedbackModel },
8{ name: 'BasketItem', exclude: [], model: BasketItemModel },
9{ name: 'Challenge', exclude: [], model: ChallengeModel },
10{ name: 'Complaint', exclude: [], model: ComplaintModel },
11{ name: 'Recycle', exclude: [], model: RecycleModel },
12{ name: 'SecurityQuestion', exclude: [], model: SecurityQuestionModel },
13{ name: 'SecurityAnswer', exclude: [], model: SecurityAnswerModel },
14{ name: 'Address', exclude: [], model: AddressModel },
15{ name: 'PrivacyRequest', exclude: [], model: PrivacyRequestModel },
16{ name: 'Card', exclude: [], model: CardModel },
17{ name: 'Quantity', exclude: [], model: QuantityModel }
18]
19
20for (const { name, exclude, model } of autoModels) {
21const resource = finale.resource({
22model,
23endpoints: [`/api/${name}s`, `/api/${name}s/:id`],
24excludeAttributes: exclude,
25pagination: false
26})
27
28// create a wallet when a new user is registered using API
29if (name === 'User') {
30resource.create.send.before((req: Request, res: Response, context: { instance: { id: any }, continue: any }) => {
31WalletModel.create({ UserId: context.instance.id }).catch((err: unknown) => {
32console.log(err)
33})
34context.instance.role = context.instance.role ? context.instance.role : 'customer'
35return context.continue
36})
37}