@unchainedshop/ticketing 3.0.0-rc9 → 3.0.0
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.
- package/lib/express.d.ts +4 -0
- package/lib/express.d.ts.map +1 -0
- package/lib/express.js +17 -0
- package/lib/express.js.map +1 -0
- package/lib/fastify.d.ts +4 -0
- package/lib/fastify.d.ts.map +1 -0
- package/lib/fastify.js +22 -0
- package/lib/fastify.js.map +1 -0
- package/lib/index.d.ts +6 -35
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +8 -19
- package/lib/index.js.map +1 -1
- package/lib/mobile-tickets/apple-handler-express.d.ts +7 -0
- package/lib/mobile-tickets/apple-handler-express.d.ts.map +1 -0
- package/lib/mobile-tickets/{apple-webservice.js → apple-handler-express.js} +3 -9
- package/lib/mobile-tickets/apple-handler-express.js.map +1 -0
- package/lib/mobile-tickets/apple-handler-fastify.d.ts +4 -0
- package/lib/mobile-tickets/apple-handler-fastify.d.ts.map +1 -0
- package/lib/mobile-tickets/apple-handler-fastify.js +158 -0
- package/lib/mobile-tickets/apple-handler-fastify.js.map +1 -0
- package/lib/mobile-tickets/{google-webservice.d.ts → google-handler-express.d.ts} +3 -3
- package/lib/mobile-tickets/google-handler-express.d.ts.map +1 -0
- package/lib/mobile-tickets/{google-webservice.js → google-handler-express.js} +2 -8
- package/lib/mobile-tickets/google-handler-express.js.map +1 -0
- package/lib/mobile-tickets/google-handler-fastify.d.ts +4 -0
- package/lib/mobile-tickets/google-handler-fastify.d.ts.map +1 -0
- package/lib/mobile-tickets/google-handler-fastify.js +41 -0
- package/lib/mobile-tickets/google-handler-fastify.js.map +1 -0
- package/lib/module.d.ts +56 -27
- package/lib/module.d.ts.map +1 -1
- package/lib/module.js +166 -164
- package/lib/module.js.map +1 -1
- package/lib/pdf-tickets/{print-webservice.d.ts → print-handler-express.d.ts} +3 -3
- package/lib/pdf-tickets/print-handler-express.d.ts.map +1 -0
- package/lib/pdf-tickets/{print-webservice.js → print-handler-express.js} +2 -8
- package/lib/pdf-tickets/print-handler-express.js.map +1 -0
- package/lib/pdf-tickets/print-handler-fastify.d.ts +4 -0
- package/lib/pdf-tickets/print-handler-fastify.d.ts.map +1 -0
- package/lib/pdf-tickets/print-handler-fastify.js +24 -0
- package/lib/pdf-tickets/print-handler-fastify.js.map +1 -0
- package/lib/services.d.ts +11 -5
- package/lib/services.d.ts.map +1 -1
- package/lib/services.js +17 -15
- package/lib/services.js.map +1 -1
- package/lib/types.d.ts +1 -3
- package/lib/types.d.ts.map +1 -1
- package/package.json +27 -11
- package/src/express.ts +35 -0
- package/src/fastify.ts +30 -0
- package/src/index.ts +13 -39
- package/src/mobile-tickets/{apple-webservice.ts → apple-handler-express.ts} +3 -16
- package/src/mobile-tickets/apple-handler-fastify.ts +227 -0
- package/src/mobile-tickets/{google-webservice.ts → google-handler-express.ts} +2 -12
- package/src/mobile-tickets/google-handler-fastify.ts +57 -0
- package/src/module.ts +211 -207
- package/src/pdf-tickets/{print-webservice.ts → print-handler-express.ts} +2 -12
- package/src/pdf-tickets/print-handler-fastify.ts +36 -0
- package/src/services.ts +28 -18
- package/src/types.ts +1 -1
- package/lib/mobile-tickets/apple-webservice.d.ts +0 -7
- package/lib/mobile-tickets/apple-webservice.d.ts.map +0 -1
- package/lib/mobile-tickets/apple-webservice.js.map +0 -1
- package/lib/mobile-tickets/google-webservice.d.ts.map +0 -1
- package/lib/mobile-tickets/google-webservice.js.map +0 -1
- package/lib/pdf-tickets/print-webservice.d.ts.map +0 -1
- package/lib/pdf-tickets/print-webservice.js.map +0 -1
package/src/module.ts
CHANGED
|
@@ -13,232 +13,236 @@ export const APPLE_WALLET_PASSES_FILE_DIRECTORY = 'apple-wallet-passes';
|
|
|
13
13
|
|
|
14
14
|
const logger = createLogger('unchained:apple-wallet-webservice');
|
|
15
15
|
|
|
16
|
-
const
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
{
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
const
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
16
|
+
const configurePasses = async ({ db }: ModuleInput<Record<string, never>>) => {
|
|
17
|
+
const MediaObjects = await MediaObjectsCollection(db);
|
|
18
|
+
const TokenSurrogates = await TokenSurrogateCollection(db);
|
|
19
|
+
|
|
20
|
+
await buildDbIndexes(TokenSurrogates as any, [
|
|
21
|
+
{ index: { 'meta.cancelled': 1 }, options: { sparse: true } },
|
|
22
|
+
]);
|
|
23
|
+
|
|
24
|
+
await buildDbIndexes(MediaObjects as any, [
|
|
25
|
+
{ index: { path: 1, 'meta.passTypeIdentifier': 1, 'meta.serialNumber': 1 } },
|
|
26
|
+
{
|
|
27
|
+
index: {
|
|
28
|
+
path: 1,
|
|
29
|
+
'meta.passTypeIdentifier': 1,
|
|
30
|
+
'meta.registrations.deviceLibraryIdentifier': 1,
|
|
31
|
+
},
|
|
32
|
+
} as any,
|
|
33
|
+
]);
|
|
34
|
+
|
|
35
|
+
const upsertAppleWalletPass = async (token: TokenSurrogate, unchainedAPI: UnchainedCore) => {
|
|
36
|
+
const createAppleWalletPass = getRenderer(RendererTypes.APPLE_WALLET);
|
|
37
|
+
const pass = await createAppleWalletPass(token, unchainedAPI);
|
|
38
|
+
const rawFile = Promise.resolve(
|
|
39
|
+
// wrap in promise to make stream upload work
|
|
40
|
+
await buildPassBinary(token.chainTokenId, pass as any),
|
|
41
|
+
);
|
|
42
|
+
|
|
43
|
+
const previousFile = await MediaObjects.findOne({
|
|
44
|
+
path: APPLE_WALLET_PASSES_FILE_DIRECTORY,
|
|
45
|
+
'meta.passTypeIdentifier': pass.passTypeIdentifier,
|
|
46
|
+
'meta.serialNumber': pass.serialNumber,
|
|
47
|
+
});
|
|
48
|
+
|
|
49
|
+
const registrations: any = previousFile?.meta?.registrations || [];
|
|
50
|
+
const pkpassFile = await unchainedAPI.services.files.uploadFileFromStream({
|
|
51
|
+
directoryName: APPLE_WALLET_PASSES_FILE_DIRECTORY,
|
|
52
|
+
rawFile,
|
|
53
|
+
meta: {
|
|
54
|
+
rawData: token,
|
|
55
|
+
passTypeIdentifier: pass.passTypeIdentifier,
|
|
56
|
+
serialNumber: pass.serialNumber,
|
|
57
|
+
registrations,
|
|
58
|
+
},
|
|
59
|
+
});
|
|
49
60
|
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
rawFile,
|
|
54
|
-
meta: {
|
|
55
|
-
rawData: token,
|
|
56
|
-
passTypeIdentifier: pass.passTypeIdentifier,
|
|
57
|
-
serialNumber: pass.serialNumber,
|
|
58
|
-
registrations,
|
|
59
|
-
},
|
|
61
|
+
if (previousFile) {
|
|
62
|
+
await unchainedAPI.services.files.removeFiles({
|
|
63
|
+
fileIds: [previousFile._id],
|
|
60
64
|
});
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
const pushTokens = registrations.map(({ pushToken }) => pushToken);
|
|
72
|
-
logger.info(`Send update pass notification to ${pushTokens.join(',')}`);
|
|
73
|
-
await pushToApplePushNotificationService(pushTokens);
|
|
74
|
-
} catch (e) {
|
|
75
|
-
logger.error(e);
|
|
76
|
-
}
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
// Push updates!
|
|
68
|
+
if (registrations?.length) {
|
|
69
|
+
try {
|
|
70
|
+
const pushTokens = registrations.map(({ pushToken }) => pushToken);
|
|
71
|
+
logger.info(`Send update pass notification to ${pushTokens.join(',')}`);
|
|
72
|
+
await pushToApplePushNotificationService(pushTokens);
|
|
73
|
+
} catch (e) {
|
|
74
|
+
logger.error(e);
|
|
77
75
|
}
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
return pkpassFile;
|
|
79
|
+
};
|
|
80
|
+
|
|
81
|
+
const upsertGoogleWalletPass = async (token: TokenSurrogate, unchainedAPI: UnchainedCore) => {
|
|
82
|
+
const createGoogleWalletPass = getRenderer(RendererTypes.GOOGLE_WALLET);
|
|
83
|
+
const pass = await createGoogleWalletPass(token, unchainedAPI);
|
|
84
|
+
return pass;
|
|
85
|
+
};
|
|
86
|
+
|
|
87
|
+
const findAppleWalletPass = async (passTypeIdentifier, serialNumber): Promise<File> => {
|
|
88
|
+
const mediaObject = await MediaObjects.findOne({
|
|
89
|
+
path: APPLE_WALLET_PASSES_FILE_DIRECTORY,
|
|
90
|
+
'meta.passTypeIdentifier': passTypeIdentifier,
|
|
91
|
+
'meta.serialNumber': serialNumber,
|
|
92
|
+
});
|
|
93
|
+
return mediaObject;
|
|
94
|
+
};
|
|
95
|
+
|
|
96
|
+
const registerDeviceForAppleWalletPass = async (
|
|
97
|
+
passTypeIdentifier,
|
|
98
|
+
serialNumber,
|
|
99
|
+
{ deviceLibraryIdentifier, pushToken },
|
|
100
|
+
) => {
|
|
101
|
+
const result = await MediaObjects.updateOne(
|
|
102
|
+
{
|
|
90
103
|
path: APPLE_WALLET_PASSES_FILE_DIRECTORY,
|
|
91
104
|
'meta.passTypeIdentifier': passTypeIdentifier,
|
|
92
105
|
'meta.serialNumber': serialNumber,
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
const result = await MediaObjects.updateOne(
|
|
103
|
-
{
|
|
104
|
-
path: APPLE_WALLET_PASSES_FILE_DIRECTORY,
|
|
105
|
-
'meta.passTypeIdentifier': passTypeIdentifier,
|
|
106
|
-
'meta.serialNumber': serialNumber,
|
|
107
|
-
'meta.registrations.deviceLibraryIdentifier': {
|
|
108
|
-
$ne: deviceLibraryIdentifier,
|
|
106
|
+
'meta.registrations.deviceLibraryIdentifier': {
|
|
107
|
+
$ne: deviceLibraryIdentifier,
|
|
108
|
+
},
|
|
109
|
+
},
|
|
110
|
+
{
|
|
111
|
+
$push: {
|
|
112
|
+
'meta.registrations': {
|
|
113
|
+
deviceLibraryIdentifier,
|
|
114
|
+
pushToken,
|
|
109
115
|
},
|
|
110
116
|
},
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
+
},
|
|
118
|
+
);
|
|
119
|
+
return Boolean(result.modifiedCount);
|
|
120
|
+
};
|
|
121
|
+
|
|
122
|
+
const unregisterDeviceForAppleWalletPass = async (
|
|
123
|
+
passTypeIdentifier,
|
|
124
|
+
serialNumber,
|
|
125
|
+
deviceLibraryIdentifier,
|
|
126
|
+
) => {
|
|
127
|
+
const result = await MediaObjects.updateOne(
|
|
128
|
+
{
|
|
129
|
+
path: APPLE_WALLET_PASSES_FILE_DIRECTORY,
|
|
130
|
+
'meta.passTypeIdentifier': passTypeIdentifier,
|
|
131
|
+
'meta.serialNumber': serialNumber,
|
|
132
|
+
'meta.registrations.deviceLibraryIdentifier': deviceLibraryIdentifier,
|
|
133
|
+
},
|
|
134
|
+
{
|
|
135
|
+
$pull: {
|
|
136
|
+
'meta.registrations': {
|
|
137
|
+
deviceLibraryIdentifier,
|
|
117
138
|
},
|
|
118
139
|
},
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
140
|
+
},
|
|
141
|
+
);
|
|
142
|
+
return Boolean(result.modifiedCount);
|
|
143
|
+
};
|
|
144
|
+
|
|
145
|
+
const findUpdatedAppleWalletPasses = async (
|
|
146
|
+
passTypeIdentifier,
|
|
147
|
+
deviceLibraryIdentifier,
|
|
148
|
+
passesUpdatedSince,
|
|
149
|
+
): Promise<Array<File>> => {
|
|
150
|
+
const selector = {
|
|
151
|
+
$or: [
|
|
129
152
|
{
|
|
130
|
-
|
|
131
|
-
'meta.passTypeIdentifier': passTypeIdentifier,
|
|
132
|
-
'meta.serialNumber': serialNumber,
|
|
133
|
-
'meta.registrations.deviceLibraryIdentifier': deviceLibraryIdentifier,
|
|
153
|
+
updated: passesUpdatedSince ? { $gt: passesUpdatedSince } : { $exists: true },
|
|
134
154
|
},
|
|
135
155
|
{
|
|
136
|
-
$
|
|
137
|
-
'meta.registrations': {
|
|
138
|
-
deviceLibraryIdentifier,
|
|
139
|
-
},
|
|
140
|
-
},
|
|
156
|
+
created: passesUpdatedSince ? { $gt: passesUpdatedSince } : { $exists: true },
|
|
141
157
|
},
|
|
142
|
-
|
|
143
|
-
|
|
158
|
+
],
|
|
159
|
+
'meta.registrations.deviceLibraryIdentifier': deviceLibraryIdentifier,
|
|
160
|
+
'meta.passTypeIdentifier': passTypeIdentifier,
|
|
161
|
+
path: APPLE_WALLET_PASSES_FILE_DIRECTORY,
|
|
144
162
|
};
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
};
|
|
167
|
-
|
|
168
|
-
const invalidateAppleWalletPasses = async (unchainedAPI: UnchainedCore) => {
|
|
169
|
-
const allPasses = await MediaObjects.find({
|
|
170
|
-
path: APPLE_WALLET_PASSES_FILE_DIRECTORY,
|
|
171
|
-
}).toArray();
|
|
172
|
-
const allTokens = await TokenSurrogates.find({}).toArray();
|
|
173
|
-
|
|
174
|
-
for (const pass of allPasses) {
|
|
175
|
-
// Check if binary is already invalidated, if so, skip
|
|
176
|
-
const rawData = pass.meta.rawData as TokenSurrogate;
|
|
177
|
-
if (rawData.invalidatedDate) continue;
|
|
178
|
-
|
|
179
|
-
const redeemedToken = allTokens.find((t) => t._id === rawData._id && t.invalidatedDate);
|
|
180
|
-
|
|
181
|
-
// Find invalidated token for the binary, if found, invalidate binary
|
|
182
|
-
if (redeemedToken) {
|
|
183
|
-
logger.info('Ticket redeemed, void pass', rawData);
|
|
184
|
-
await upsertAppleWalletPass(redeemedToken, unchainedAPI);
|
|
185
|
-
}
|
|
163
|
+
const updatedPasses = await MediaObjects.find(selector).toArray();
|
|
164
|
+
return updatedPasses;
|
|
165
|
+
};
|
|
166
|
+
|
|
167
|
+
const invalidateAppleWalletPasses = async (unchainedAPI: UnchainedCore) => {
|
|
168
|
+
const allPasses = await MediaObjects.find({
|
|
169
|
+
path: APPLE_WALLET_PASSES_FILE_DIRECTORY,
|
|
170
|
+
}).toArray();
|
|
171
|
+
const allTokens = await TokenSurrogates.find({}).toArray();
|
|
172
|
+
|
|
173
|
+
for (const pass of allPasses) {
|
|
174
|
+
// Check if binary is already invalidated, if so, skip
|
|
175
|
+
const rawData = pass.meta.rawData as TokenSurrogate;
|
|
176
|
+
if (rawData.invalidatedDate) continue;
|
|
177
|
+
|
|
178
|
+
const redeemedToken = allTokens.find((t) => t._id === rawData._id && t.invalidatedDate);
|
|
179
|
+
|
|
180
|
+
// Find invalidated token for the binary, if found, invalidate binary
|
|
181
|
+
if (redeemedToken) {
|
|
182
|
+
logger.info('Ticket redeemed, void pass', rawData);
|
|
183
|
+
await upsertAppleWalletPass(redeemedToken, unchainedAPI);
|
|
186
184
|
}
|
|
187
|
-
}
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
returnDocument: 'after',
|
|
201
|
-
},
|
|
202
|
-
);
|
|
203
|
-
};
|
|
204
|
-
|
|
205
|
-
const isTicketCancelled = (token: TokenSurrogate) => {
|
|
206
|
-
return Boolean(token.meta?.cancelled);
|
|
207
|
-
};
|
|
208
|
-
|
|
209
|
-
const getTicketsCreated = async (
|
|
185
|
+
}
|
|
186
|
+
};
|
|
187
|
+
|
|
188
|
+
const buildMagicKey = async (orderId: string) => {
|
|
189
|
+
const msgUint8 = new TextEncoder().encode([orderId, process.env.UNCHAINED_SECRET].join(''));
|
|
190
|
+
const hashBuffer = await crypto.subtle.digest('SHA-256', msgUint8);
|
|
191
|
+
return Buffer.from(hashBuffer).toString('hex');
|
|
192
|
+
};
|
|
193
|
+
|
|
194
|
+
const cancelTicket = async (tokenId: string) => {
|
|
195
|
+
return TokenSurrogates.findOneAndUpdate(
|
|
196
|
+
{ _id: tokenId },
|
|
197
|
+
{ $set: { 'meta.cancelled': true } },
|
|
210
198
|
{
|
|
211
|
-
|
|
212
|
-
}: {
|
|
213
|
-
productId: string;
|
|
199
|
+
returnDocument: 'after',
|
|
214
200
|
},
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
invalidateAppleWalletPasses,
|
|
233
|
-
upsertGoogleWalletPass,
|
|
234
|
-
buildMagicKey,
|
|
235
|
-
cancelTicket,
|
|
236
|
-
isTicketCancelled,
|
|
237
|
-
getTicketsCreated,
|
|
201
|
+
);
|
|
202
|
+
};
|
|
203
|
+
|
|
204
|
+
const isTicketCancelled = (token: TokenSurrogate) => {
|
|
205
|
+
return Boolean(token.meta?.cancelled);
|
|
206
|
+
};
|
|
207
|
+
|
|
208
|
+
const getTicketsCreated = async (
|
|
209
|
+
{
|
|
210
|
+
productId,
|
|
211
|
+
}: {
|
|
212
|
+
productId: string;
|
|
213
|
+
},
|
|
214
|
+
{ skipCancelled }: { skipCancelled?: boolean } = {},
|
|
215
|
+
): Promise<number> => {
|
|
216
|
+
const selector: any = {
|
|
217
|
+
productId,
|
|
238
218
|
};
|
|
239
|
-
|
|
219
|
+
if (skipCancelled) {
|
|
220
|
+
selector['meta.cancelled'] = null;
|
|
221
|
+
}
|
|
222
|
+
return TokenSurrogates.countDocuments(selector);
|
|
223
|
+
};
|
|
224
|
+
|
|
225
|
+
return {
|
|
226
|
+
upsertAppleWalletPass,
|
|
227
|
+
findAppleWalletPass,
|
|
228
|
+
registerDeviceForAppleWalletPass,
|
|
229
|
+
unregisterDeviceForAppleWalletPass,
|
|
230
|
+
findUpdatedAppleWalletPasses,
|
|
231
|
+
invalidateAppleWalletPasses,
|
|
232
|
+
upsertGoogleWalletPass,
|
|
233
|
+
buildMagicKey,
|
|
234
|
+
cancelTicket,
|
|
235
|
+
isTicketCancelled,
|
|
236
|
+
getTicketsCreated,
|
|
237
|
+
};
|
|
240
238
|
};
|
|
241
239
|
|
|
242
|
-
export type TicketingModule =
|
|
240
|
+
export type TicketingModule = {
|
|
241
|
+
passes: Awaited<ReturnType<typeof configurePasses>>;
|
|
242
|
+
};
|
|
243
243
|
|
|
244
|
-
export default
|
|
244
|
+
export default {
|
|
245
|
+
passes: {
|
|
246
|
+
configure: configurePasses,
|
|
247
|
+
},
|
|
248
|
+
};
|
|
@@ -1,10 +1,8 @@
|
|
|
1
1
|
import { checkAction } from '@unchainedshop/api/lib/acl.js';
|
|
2
2
|
import { actions } from '@unchainedshop/api/lib/roles/index.js';
|
|
3
|
-
import express, { Request, Response } from 'express';
|
|
4
3
|
import { Context } from '@unchainedshop/api';
|
|
5
4
|
import { RendererTypes, getRenderer } from '../template-registry.js';
|
|
6
|
-
|
|
7
|
-
const { UNCHAINED_PDF_PRINT_HANDLER_PATH = '/rest/print_tickets' } = process.env;
|
|
5
|
+
import type { Request, Response } from 'express';
|
|
8
6
|
|
|
9
7
|
export async function printTicketsHandler(req: Request & { unchainedContext: Context }, res: Response) {
|
|
10
8
|
const { variant, orderId, otp } = req.query || {};
|
|
@@ -30,12 +28,4 @@ export async function printTicketsHandler(req: Request & { unchainedContext: Con
|
|
|
30
28
|
}
|
|
31
29
|
}
|
|
32
30
|
|
|
33
|
-
export default
|
|
34
|
-
app.use(
|
|
35
|
-
UNCHAINED_PDF_PRINT_HANDLER_PATH,
|
|
36
|
-
express.json({
|
|
37
|
-
type: 'application/json',
|
|
38
|
-
}),
|
|
39
|
-
printTicketsHandler,
|
|
40
|
-
);
|
|
41
|
-
}
|
|
31
|
+
export default printTicketsHandler;
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { checkAction } from '@unchainedshop/api/lib/acl.js';
|
|
2
|
+
import { actions } from '@unchainedshop/api/lib/roles/index.js';
|
|
3
|
+
import { RendererTypes, getRenderer } from '../template-registry.js';
|
|
4
|
+
import { TicketingAPI } from '../types.js';
|
|
5
|
+
import type { FastifyRequest, RouteHandlerMethod } from 'fastify';
|
|
6
|
+
|
|
7
|
+
const printTicketsHandler: RouteHandlerMethod = async (
|
|
8
|
+
req: FastifyRequest & {
|
|
9
|
+
unchainedContext: TicketingAPI;
|
|
10
|
+
},
|
|
11
|
+
reply,
|
|
12
|
+
) => {
|
|
13
|
+
const { variant, orderId, otp } = (req.query as Record<string, any>) || {};
|
|
14
|
+
|
|
15
|
+
try {
|
|
16
|
+
if (
|
|
17
|
+
typeof orderId !== 'string' ||
|
|
18
|
+
typeof otp !== 'string' ||
|
|
19
|
+
(variant && typeof variant !== 'string')
|
|
20
|
+
)
|
|
21
|
+
throw new Error('Invalid query parameter');
|
|
22
|
+
|
|
23
|
+
await checkAction(req.unchainedContext, actions.viewOrder, [undefined, { orderId, otp }]);
|
|
24
|
+
|
|
25
|
+
const render = getRenderer(RendererTypes.ORDER_PDF);
|
|
26
|
+
const pdfStream = await render({ orderId, variant: variant as string }, req.unchainedContext);
|
|
27
|
+
reply.header('content-type', 'application/pdf');
|
|
28
|
+
return reply.send(pdfStream);
|
|
29
|
+
} catch (error) {
|
|
30
|
+
console.error(error);
|
|
31
|
+
reply.status(403);
|
|
32
|
+
return reply.send();
|
|
33
|
+
}
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
export default printTicketsHandler;
|
package/src/services.ts
CHANGED
|
@@ -1,25 +1,35 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { TicketingModule } from './module.js';
|
|
2
|
+
import { Bound, UnchainedCore } from '@unchainedshop/core';
|
|
2
3
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
4
|
+
async function cancelTicketsForProduct(
|
|
5
|
+
this: TicketingModule & UnchainedCore['modules'],
|
|
6
|
+
productId: string,
|
|
7
|
+
): Promise<number> {
|
|
8
|
+
const tokensToCancel = await this.warehousing.findTokens({
|
|
9
|
+
productId,
|
|
10
|
+
'meta.cancelled': null,
|
|
11
|
+
});
|
|
9
12
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
13
|
+
for (const token of tokensToCancel) {
|
|
14
|
+
await this.warehousing.invalidateToken(token._id);
|
|
15
|
+
await this.passes.cancelTicket(token._id);
|
|
16
|
+
}
|
|
14
17
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
+
await this.products.update(productId, {
|
|
19
|
+
$set: { 'meta.cancelled': true },
|
|
20
|
+
});
|
|
18
21
|
|
|
19
|
-
|
|
22
|
+
return tokensToCancel.length;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
export default {
|
|
26
|
+
ticketing: {
|
|
27
|
+
cancelTicketsForProduct,
|
|
20
28
|
},
|
|
21
29
|
};
|
|
22
30
|
|
|
23
|
-
export type TicketingServices = {
|
|
24
|
-
|
|
25
|
-
|
|
31
|
+
export type TicketingServices = {
|
|
32
|
+
ticketing: {
|
|
33
|
+
cancelTicketsForProduct: Bound<typeof cancelTicketsForProduct>;
|
|
34
|
+
};
|
|
35
|
+
};
|
package/src/types.ts
CHANGED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import { Request, Response } from 'express';
|
|
2
|
-
import { TicketingAPI } from '../types.js';
|
|
3
|
-
export declare const appleWalletHandler: (req: Request & {
|
|
4
|
-
unchainedContext: TicketingAPI;
|
|
5
|
-
}, res: Response) => Promise<void>;
|
|
6
|
-
export default function loadAppleWalletHandler(app: any): void;
|
|
7
|
-
//# sourceMappingURL=apple-webservice.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"apple-webservice.d.ts","sourceRoot":"","sources":["../../src/mobile-tickets/apple-webservice.ts"],"names":[],"mappings":"AACA,OAAgB,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAY3C,eAAO,MAAM,kBAAkB,QACxB,OAAO,GAAG;IAAE,gBAAgB,EAAE,YAAY,CAAA;CAAE,OAC5C,QAAQ,kBA+Nd,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,sBAAsB,CAAC,GAAG,KAAA,QAQjD"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"apple-webservice.js","sourceRoot":"","sources":["../../src/mobile-tickets/apple-webservice.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"google-webservice.d.ts","sourceRoot":"","sources":["../../src/mobile-tickets/google-webservice.ts"],"names":[],"mappings":"AACA,OAAgB,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAM3C,eAAO,MAAM,mBAAmB,QACzB,OAAO,GAAG;IAAE,gBAAgB,EAAE,YAAY,CAAA;CAAE,OAC5C,QAAQ,kBA+Cd,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,uBAAuB,CAAC,GAAG,KAAA,QAQlD"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"google-webservice.js","sourceRoot":"","sources":["../../src/mobile-tickets/google-webservice.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,OAA8B,MAAM,SAAS,CAAC;AAGrD,MAAM,MAAM,GAAG,YAAY,CAAC,oCAAoC,CAAC,CAAC;AAElE,MAAM,EAAE,6BAA6B,GAAG,qBAAqB,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC;AAE9E,MAAM,CAAC,MAAM,mBAAmB,GAAG,KAAK,EACtC,GAAiD,EACjD,GAAa,EACb,EAAE;IACF,MAAM,eAAe,GAAG,GAAG,CAAC,gBAAgB,CAAC;IAC7C,MAAM,EAAE,OAAO,EAAE,GAAG,eAAe,CAAC;IACpC,MAAM,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,IAAI,KAAK,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAE1D,IAAI,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QACtC,IAAI,CAAC;YACH,MAAM,CAAC,EAAE,AAAD,EAAG,OAAO,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAE1C,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;gBACnB,GAAG,CAAC,GAAG,EAAE,CAAC;gBACV,OAAO;YACT,CAAC;YAED,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,WAAW,CAAC,SAAS,CAAC;gBAChD,OAAO;aACR,CAAC,CAAC;YAEH,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;gBACnB,GAAG,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;gBAC3B,OAAO;YACT,CAAC;YAED,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC;YAC3B,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC,WAAW,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC;YAC9E,IAAI,IAAI,KAAK,WAAW,EAAE,CAAC;gBACzB,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;gBACnB,GAAG,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC;gBAChD,OAAO;YACT,CAAC;YAED,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,sBAAsB,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC;YAEjF,GAAG,CAAC,QAAQ,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;YACjC,OAAO;QACT,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACnB,CAAC;QACD,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QACnB,GAAG,CAAC,GAAG,EAAE,CAAC;QACV,OAAO;IACT,CAAC;IACD,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IACnB,GAAG,CAAC,GAAG,EAAE,CAAC;AACZ,CAAC,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,uBAAuB,CAAC,GAAG;IACjD,GAAG,CAAC,GAAG,CACL,6BAA6B,EAC7B,OAAO,CAAC,IAAI,CAAC;QACX,IAAI,EAAE,kBAAkB;KACzB,CAAC,EACF,mBAAmB,CACpB,CAAC;AACJ,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"print-webservice.d.ts","sourceRoot":"","sources":["../../src/pdf-tickets/print-webservice.ts"],"names":[],"mappings":"AAEA,OAAgB,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAK7C,wBAAsB,mBAAmB,CAAC,GAAG,EAAE,OAAO,GAAG;IAAE,gBAAgB,EAAE,OAAO,CAAA;CAAE,EAAE,GAAG,EAAE,QAAQ,iBAsBpG;AAED,MAAM,CAAC,OAAO,UAAU,sBAAsB,CAAC,GAAG,KAAA,QAQjD"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"print-webservice.js","sourceRoot":"","sources":["../../src/pdf-tickets/print-webservice.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAC5D,OAAO,EAAE,OAAO,EAAE,MAAM,uCAAuC,CAAC;AAChE,OAAO,OAA8B,MAAM,SAAS,CAAC;AAErD,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAErE,MAAM,EAAE,gCAAgC,GAAG,qBAAqB,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC;AAEjF,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,GAA4C,EAAE,GAAa;IACnG,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC;IAElD,IAAI,CAAC;QACH,IACE,OAAO,OAAO,KAAK,QAAQ;YAC3B,OAAO,GAAG,KAAK,QAAQ;YACvB,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,CAAC;YAExC,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;QAE7C,MAAM,WAAW,CAAC,GAAG,CAAC,gBAAgB,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,SAAS,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;QAE1F,MAAM,MAAM,GAAG,WAAW,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;QACpD,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAiB,EAAE,EAAE,GAAG,CAAC,gBAAgB,CAAC,CAAC;QAC9F,GAAG,CAAC,SAAS,CAAC,cAAc,EAAE,iBAAiB,CAAC,CAAC;QACjD,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACtB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACrB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAChB,GAAG,CAAC,GAAG,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,MAAM,CAAC,OAAO,UAAU,sBAAsB,CAAC,GAAG;IAChD,GAAG,CAAC,GAAG,CACL,gCAAgC,EAChC,OAAO,CAAC,IAAI,CAAC;QACX,IAAI,EAAE,kBAAkB;KACzB,CAAC,EACF,mBAAmB,CACpB,CAAC;AACJ,CAAC"}
|