@qelos/plugin-play 3.7.3 → 3.7.7

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 (54) hide show
  1. package/dist/app.d.ts +16 -0
  2. package/dist/app.js +170 -0
  3. package/dist/app.js.map +1 -0
  4. package/dist/authentication.d.ts +10 -0
  5. package/dist/authentication.js +380 -0
  6. package/dist/authentication.js.map +1 -0
  7. package/dist/cache-manager.d.ts +2 -0
  8. package/dist/cache-manager.js +7 -0
  9. package/dist/cache-manager.js.map +1 -0
  10. package/dist/config.d.ts +24 -0
  11. package/dist/config.js +28 -0
  12. package/dist/config.js.map +1 -0
  13. package/dist/crud.d.ts +9 -0
  14. package/dist/crud.js +340 -0
  15. package/dist/crud.js.map +1 -0
  16. package/dist/crud.types.d.ts +69 -0
  17. package/dist/crud.types.js +2 -0
  18. package/dist/crud.types.js.map +1 -0
  19. package/dist/endpoints.d.ts +10 -0
  20. package/dist/endpoints.js +35 -0
  21. package/dist/endpoints.js.map +1 -0
  22. package/dist/handlers.d.ts +47 -0
  23. package/dist/handlers.js +32 -0
  24. package/dist/handlers.js.map +1 -0
  25. package/dist/index.d.ts +14 -0
  26. package/dist/index.js +15 -0
  27. package/dist/index.js.map +1 -0
  28. package/dist/injectables.d.ts +6 -0
  29. package/dist/injectables.js +5 -0
  30. package/dist/injectables.js.map +1 -0
  31. package/dist/lifecycle.d.ts +70 -0
  32. package/dist/lifecycle.js +32 -0
  33. package/dist/lifecycle.js.map +1 -0
  34. package/dist/logger.d.ts +5 -0
  35. package/dist/logger.js +12 -0
  36. package/dist/logger.js.map +1 -0
  37. package/dist/manifest.d.ts +37 -0
  38. package/dist/manifest.js +26 -0
  39. package/dist/manifest.js.map +1 -0
  40. package/dist/micro-frontends.d.ts +50 -0
  41. package/dist/micro-frontends.js +19 -0
  42. package/dist/micro-frontends.js.map +1 -0
  43. package/dist/request.types.d.ts +20 -0
  44. package/dist/request.types.js +2 -0
  45. package/dist/request.types.js.map +1 -0
  46. package/dist/response-error.d.ts +8 -0
  47. package/dist/response-error.js +18 -0
  48. package/dist/response-error.js.map +1 -0
  49. package/dist/sdk.d.ts +13 -0
  50. package/dist/sdk.js +63 -0
  51. package/dist/sdk.js.map +1 -0
  52. package/package.json +8 -8
  53. package/src/crud.ts +1 -0
  54. package/src/crud.types.ts +1 -0
package/dist/app.d.ts ADDED
@@ -0,0 +1,16 @@
1
+ import { FastifyInstance } from 'fastify';
2
+ import { RouteHandlerMethod } from 'fastify/types/route';
3
+ import { ManifestOptions } from './manifest';
4
+ import { ConfigOptions } from './config';
5
+ export declare function start(options?: {
6
+ manifest?: ManifestOptions;
7
+ config?: ConfigOptions;
8
+ }): Promise<void>;
9
+ export declare function configure(manifestOptions: ManifestOptions, appConfig: ConfigOptions): void;
10
+ export declare function getApp(): FastifyInstance;
11
+ export declare function registerToHook(hook: {
12
+ source?: string;
13
+ kind?: string;
14
+ eventName?: string;
15
+ path?: string;
16
+ }, handler: RouteHandlerMethod): void;
package/dist/app.js ADDED
@@ -0,0 +1,170 @@
1
+ import { existsSync, readFileSync } from 'node:fs';
2
+ import { join } from 'node:path';
3
+ import fastify from 'fastify';
4
+ import cookie from '@fastify/cookie';
5
+ import { manifest } from './manifest';
6
+ import config, { setConfig } from './config';
7
+ import { getCallbackRoute, getFrontendAuthorizationRoute, getFrontendUnAuthorizationRoute, getRefreshTokenRoute, getRegisterRoute, verifyAccessToken, verifyCookieToken } from './authentication';
8
+ import handlers from './handlers';
9
+ import { endpoints, internalEndpoints } from './endpoints';
10
+ import { LifecycleEvent, trigger } from './lifecycle';
11
+ const hooks = new Set();
12
+ let app;
13
+ let internalApp;
14
+ export async function start(options) {
15
+ configure(options?.manifest || {}, options?.config || {});
16
+ const app = getApp();
17
+ trigger(LifecycleEvent.appMounted, { app });
18
+ if (internalEndpoints.size) {
19
+ createInternalApp();
20
+ }
21
+ try {
22
+ console.log('start application for environment: ', config.dev ? 'development' : 'production');
23
+ await app.listen({ port: Number(config.port), host: config.host });
24
+ if (internalApp) {
25
+ console.log(`Internal Application listening on: ${config.internalHost}:${config.internalPort}`);
26
+ await internalApp.listen({ port: Number(config.internalPort), host: config.internalHost });
27
+ }
28
+ }
29
+ catch (err) {
30
+ app.log.error(err);
31
+ process.exit(1);
32
+ }
33
+ }
34
+ export function configure(manifestOptions, appConfig) {
35
+ trigger(LifecycleEvent.beforeConfigure, { manifest, config, manifestOptions, configOptions: appConfig });
36
+ Object.assign(manifest, manifestOptions);
37
+ setConfig(appConfig);
38
+ if (config.dev && !manifest.appUrl) {
39
+ manifest.appUrl = 'https://' + config.host + ':' + config.port;
40
+ }
41
+ manifest.proxyUrl = new URL(manifest.proxyPath, manifest.appUrl).href;
42
+ trigger(LifecycleEvent.configured, { manifest, config });
43
+ }
44
+ export function getApp() {
45
+ return app || createApp();
46
+ }
47
+ export function registerToHook(hook, handler) {
48
+ hook.path = hook.path || btoa(JSON.stringify(hook));
49
+ const subscribedEvent = {
50
+ source: hook.source || '*',
51
+ kind: hook.kind || '*',
52
+ eventName: hook.eventName || '*',
53
+ };
54
+ hooks.add({
55
+ subscribedEvent,
56
+ path: hook.path,
57
+ handler
58
+ });
59
+ manifest.subscribedEvents.push(subscribedEvent);
60
+ }
61
+ function createApp() {
62
+ const fastifyOptions = {
63
+ logger: !!config.dev,
64
+ https: getHttps()
65
+ };
66
+ trigger(LifecycleEvent.beforeCreate, { fastifyOptions, config, manifest });
67
+ app = fastify(fastifyOptions);
68
+ trigger(LifecycleEvent.beforeMount, { app, fastifyOptions, config, manifest });
69
+ app.addContentTypeParser('application/json', { parseAs: 'string' }, parseJsonRequest);
70
+ app.route(getRefreshTokenRoute());
71
+ app.route(getRegisterRoute());
72
+ app.route(getCallbackRoute());
73
+ playManifest();
74
+ playHooks();
75
+ playEndpoints();
76
+ playFrontend();
77
+ if (!(config.qelosUrl || handlers.refreshToken.length)) {
78
+ throw new Error('you must provide either a refresh token handler or Qelos application credentials');
79
+ }
80
+ trigger(LifecycleEvent.mounted, { app, config, manifest });
81
+ return app;
82
+ }
83
+ function createInternalApp() {
84
+ const fastifyOptions = {
85
+ logger: !!config.dev,
86
+ };
87
+ trigger(LifecycleEvent.beforeInternalAppCreate, { fastifyOptions });
88
+ internalApp = fastify(fastifyOptions);
89
+ internalApp.addContentTypeParser('application/json', { parseAs: 'string' }, parseJsonRequest);
90
+ internalEndpoints.forEach((routeOptions) => {
91
+ internalApp.route(routeOptions);
92
+ });
93
+ trigger(LifecycleEvent.internalAppMounted, { app: internalApp });
94
+ return internalApp;
95
+ }
96
+ function playManifest() {
97
+ getApp().route({
98
+ method: 'GET',
99
+ url: manifest.manifestUrl,
100
+ handler({ headers, body }, res) {
101
+ setImmediate(() => handlers.manifest.forEach(cb => cb({ headers, body })));
102
+ res.header('Access-Control-Allow-Origin', '*');
103
+ return manifest;
104
+ }
105
+ });
106
+ console.log('manifest URL: ' + new URL(manifest.manifestUrl, manifest.appUrl).href);
107
+ }
108
+ function playHooks() {
109
+ hooks.forEach(hook => {
110
+ const routePath = join('/api/hooks', hook.path);
111
+ hook.subscribedEvent.hookUrl = new URL(routePath, manifest.appUrl).href;
112
+ getApp().route({
113
+ method: 'POST',
114
+ url: routePath,
115
+ preHandler: verifyAccessToken,
116
+ handler: hook.handler
117
+ });
118
+ console.log('subscribed event configured: ', routePath, hook.subscribedEvent);
119
+ });
120
+ }
121
+ function playFrontend() {
122
+ if (existsSync(config.staticFrontend.root)) {
123
+ getApp().register(require('@fastify/static'), config.staticFrontend);
124
+ }
125
+ }
126
+ function playEndpoints() {
127
+ if (!endpoints.size) {
128
+ return;
129
+ }
130
+ getApp().register(cookie, {
131
+ parseOptions: {
132
+ maxAge: 1000 * 60 * 30,
133
+ secure: true,
134
+ httpOnly: true,
135
+ sameSite: config.dev ? 'none' : (process.env.SAME_SITE_COOKIES || true)
136
+ }
137
+ });
138
+ getApp().route(getFrontendAuthorizationRoute());
139
+ getApp().route(getFrontendUnAuthorizationRoute());
140
+ endpoints.forEach((routeOptions) => {
141
+ const route = {
142
+ ...routeOptions,
143
+ };
144
+ if (routeOptions.verifyToken) {
145
+ route.preHandler = routeOptions.url.startsWith(manifest.proxyPath) ? verifyAccessToken : verifyCookieToken;
146
+ }
147
+ getApp().route(route);
148
+ });
149
+ }
150
+ function getHttps() {
151
+ const certPath = join(process.cwd(), 'cert/cert.pem');
152
+ if (existsSync(certPath)) {
153
+ return {
154
+ cert: readFileSync(join(process.cwd(), 'cert/cert.pem')).toString(),
155
+ key: readFileSync(join(process.cwd(), 'cert/key.pem')).toString(),
156
+ };
157
+ }
158
+ return null;
159
+ }
160
+ function parseJsonRequest(req, body, done) {
161
+ try {
162
+ const bodyStr = body.toString();
163
+ done(null, bodyStr ? JSON.parse(bodyStr) : {});
164
+ }
165
+ catch (err) {
166
+ err.statusCode = 400;
167
+ done(err, undefined);
168
+ }
169
+ }
170
+ //# sourceMappingURL=app.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app.js","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import { RouteOptions } from 'fastify/types/route';
2
+ import { FastifyRequest } from 'fastify/types/request';
3
+ import { FastifyReply } from 'fastify/types/reply';
4
+ export declare function verifyAccessToken(req: FastifyRequest, reply: FastifyReply): Promise<void>;
5
+ export declare function verifyCookieToken(req: FastifyRequest): Promise<void>;
6
+ export declare function getRefreshTokenRoute(): RouteOptions;
7
+ export declare function getRegisterRoute(): RouteOptions;
8
+ export declare function getCallbackRoute(): RouteOptions;
9
+ export declare function getFrontendAuthorizationRoute(): RouteOptions;
10
+ export declare function getFrontendUnAuthorizationRoute(): RouteOptions;
@@ -0,0 +1,380 @@
1
+ import jwt from 'jsonwebtoken';
2
+ import manifest from './manifest';
3
+ import handlers, { onCallback, onFrontendAuthorization, onNewTenant, onRefreshToken } from './handlers';
4
+ import config from './config';
5
+ import { authenticate, getSdk, getSdkForUrl } from './sdk';
6
+ import { ResponseError } from './response-error';
7
+ import logger from './logger';
8
+ import { atob } from 'buffer';
9
+ import { cacheManager } from './cache-manager';
10
+ const notAuthorized = { message: 'you are not authorized' };
11
+ function getHostname(fullUrl) {
12
+ if (!fullUrl.startsWith('http')) {
13
+ fullUrl = 'https://' + fullUrl;
14
+ }
15
+ const url = new URL(fullUrl);
16
+ return url.hostname;
17
+ }
18
+ export async function verifyAccessToken(req, reply) {
19
+ const { authorization } = req.headers;
20
+ const token = authorization?.split(' ')[1];
21
+ if (!token) {
22
+ throw new Error('authorization token was not provided');
23
+ }
24
+ try {
25
+ req.tenantPayload = jwt.verify(token, config.accessTokenSecret);
26
+ req.user = req.headers.user ? JSON.parse(req.headers.user) : null;
27
+ }
28
+ catch (err) {
29
+ logger.error('error in verify access token', err);
30
+ reply.statusCode = 407;
31
+ reply.header('x-q-auth', 'unauthorized');
32
+ throw new Error('authorization token was not valid');
33
+ }
34
+ }
35
+ export async function verifyCookieToken(req) {
36
+ const { code } = req.headers;
37
+ if (!code) {
38
+ throw new Error('authorization code was not provided');
39
+ }
40
+ const token = req.cookies?.['token_' + code];
41
+ if (!token) {
42
+ throw new Error('user is not authorized');
43
+ }
44
+ try {
45
+ const data = jwt.verify(token, config.accessTokenSecret);
46
+ req.tenantPayload = data.tenant;
47
+ req.user = data.user;
48
+ }
49
+ catch {
50
+ throw new Error('authorization token was not valid');
51
+ }
52
+ }
53
+ export function getRefreshTokenRoute() {
54
+ const usersSdk = getSdk().users;
55
+ if (config.qelosUrl) {
56
+ onRefreshToken(async ({ sub, identifier = '' }) => {
57
+ const user = await usersSdk.getUser(sub);
58
+ if (identifier.toString() !== user.internalMetadata?.tokenIdentifier) {
59
+ throw new ResponseError({ message: 'user is not verified on Qelos BaaS', sub, user, identifier });
60
+ }
61
+ const newPayload = {
62
+ sub,
63
+ identifier: (Date.now() + Math.random()).toString().substring(0, 10)
64
+ };
65
+ await usersSdk.update(sub, { internalMetadata: { tokenIdentifier: newPayload.identifier } });
66
+ return { payload: newPayload };
67
+ });
68
+ }
69
+ return {
70
+ method: 'POST',
71
+ url: manifest.authAcquire.refreshTokenUrl,
72
+ handler: async (request, reply) => {
73
+ const expectedRefreshToken = request.headers['authorization']?.split(' ')[1];
74
+ let payload;
75
+ try {
76
+ if (!expectedRefreshToken || expectedRefreshToken === 'undefined') {
77
+ throw new ResponseError('expected refresh token is empty');
78
+ }
79
+ payload = jwt.verify(expectedRefreshToken, config.refreshTokenSecret);
80
+ if (handlers.refreshToken.length) {
81
+ for (let handler of handlers.refreshToken) {
82
+ const result = await handler(payload, request);
83
+ if (result?.payload) {
84
+ return {
85
+ [manifest.authAcquire.refreshTokenKey]: jwt.sign(result.payload, config.refreshTokenSecret, { expiresIn: '90d' }),
86
+ [manifest.authAcquire.accessTokenKey]: jwt.sign(result.payload, config.accessTokenSecret, { expiresIn: '1h' }),
87
+ };
88
+ }
89
+ }
90
+ }
91
+ }
92
+ catch (err) {
93
+ if (err instanceof ResponseError) {
94
+ logger.error('error in callback', err);
95
+ reply.statusCode = 401;
96
+ return err.responseMessage;
97
+ }
98
+ }
99
+ reply.statusCode = 401;
100
+ return notAuthorized;
101
+ }
102
+ };
103
+ }
104
+ export function getRegisterRoute() {
105
+ const sdk = getSdk();
106
+ const usersSdk = sdk.users;
107
+ if (config.allowedTenants?.length) {
108
+ onNewTenant(async ({ appUrl }) => {
109
+ const hostname = getHostname(appUrl);
110
+ if (!config.allowedTenants.includes(hostname)) {
111
+ throw new ResponseError('your tenant is not allowed for this plugin');
112
+ }
113
+ });
114
+ }
115
+ if (config.qelosUrl) {
116
+ onNewTenant(async ({ username, password, appUrl }) => {
117
+ const tenantSdk = getSdkForUrl(appUrl);
118
+ const emailSplit = username.split('@');
119
+ if (emailSplit.length === 2 && getHostname(appUrl) !== emailSplit[1].split(':')[0]) {
120
+ throw new ResponseError('email must be provided from the same app url: ' + appUrl);
121
+ }
122
+ let currentAuthPayload;
123
+ try {
124
+ // email will be: {pluginId}.{tenantId}@${tenantHostname}
125
+ const { payload } = await tenantSdk.authentication.oAuthSignin({ username, password });
126
+ if (!payload.user?.roles?.includes('plugin')) {
127
+ throw new ResponseError('should retrieve a plugin user to app: ' + appUrl);
128
+ }
129
+ currentAuthPayload = payload;
130
+ }
131
+ catch (err) {
132
+ logger.error('failure during login to qelos app', { username, appUrl, err });
133
+ if (err instanceof ResponseError) {
134
+ throw err;
135
+ }
136
+ throw new ResponseError('failed to login to qelos tenant: ' + appUrl);
137
+ }
138
+ const newPayload = {
139
+ sub: '',
140
+ identifier: (Date.now() + Math.random()).toString().substring(0, 10)
141
+ };
142
+ let user;
143
+ try {
144
+ const [existingUser] = await usersSdk.getList({ username, exact: true });
145
+ user = existingUser;
146
+ }
147
+ catch (e) {
148
+ if (e?.message === 'could not able to refresh token') {
149
+ await authenticate();
150
+ const [existingUser] = await usersSdk.getList({ username, exact: true });
151
+ user = existingUser;
152
+ }
153
+ }
154
+ if (user) {
155
+ await usersSdk.update(user._id, {
156
+ firstName: appUrl,
157
+ lastName: 'qelos-player-app',
158
+ username,
159
+ password,
160
+ internalMetadata: { tokenIdentifier: newPayload.identifier }
161
+ });
162
+ }
163
+ else {
164
+ user = await usersSdk.create({
165
+ firstName: appUrl,
166
+ lastName: 'qelos-player-app',
167
+ username,
168
+ password,
169
+ roles: ['user', 'qelos'],
170
+ internalMetadata: { tokenIdentifier: newPayload.identifier }
171
+ });
172
+ }
173
+ await usersSdk.setEncryptedData(user._id, config.userPayloadSecret, {
174
+ appUrl,
175
+ username,
176
+ password,
177
+ currentAuthPayload
178
+ });
179
+ newPayload.sub = user._id;
180
+ return { payload: newPayload };
181
+ });
182
+ }
183
+ function checkMissingCredentialsError({ username, password, appUrl }) {
184
+ if (username && password && appUrl) {
185
+ return;
186
+ }
187
+ const missing = [];
188
+ if (username) {
189
+ missing.push('username');
190
+ }
191
+ if (password) {
192
+ missing.push('password');
193
+ }
194
+ if (appUrl) {
195
+ missing.push('appUrl');
196
+ }
197
+ throw new ResponseError('missing credentials: ' + missing.join(', '));
198
+ }
199
+ return {
200
+ method: 'POST',
201
+ url: manifest.registerUrl,
202
+ handler: async (request, reply) => {
203
+ try {
204
+ checkMissingCredentialsError(request.body || {});
205
+ if (handlers.newTenant.length) {
206
+ for (let handler of handlers.newTenant) {
207
+ const result = await handler(request.body, request);
208
+ if (result?.payload) {
209
+ return {
210
+ [manifest.authAcquire.refreshTokenKey]: jwt.sign(result.payload, config.refreshTokenSecret, { expiresIn: '90d' }),
211
+ [manifest.authAcquire.accessTokenKey]: jwt.sign(result.payload, config.accessTokenSecret, { expiresIn: '1h' }),
212
+ };
213
+ }
214
+ }
215
+ }
216
+ }
217
+ catch (err) {
218
+ if (err instanceof ResponseError) {
219
+ reply.statusCode = err.status || 401;
220
+ return { message: err.responseMessage };
221
+ }
222
+ else {
223
+ logger.error('internal register error', err);
224
+ }
225
+ }
226
+ reply.statusCode = 401;
227
+ return notAuthorized;
228
+ }
229
+ };
230
+ }
231
+ export function getCallbackRoute() {
232
+ if (config.qelosUrl) {
233
+ onCallback(async ({ user, returnUrl }, request) => {
234
+ const code = Math.floor(Math.random() * 1000).toString();
235
+ // set the code on cache manager
236
+ const username = user?.username || 'anonymous';
237
+ await cacheManager.setItem(`${returnUrl}:${request.tenantPayload.sub}:${username}`, JSON.stringify({
238
+ code,
239
+ user,
240
+ created: Date.now(),
241
+ tenant: request.tenantPayload
242
+ }));
243
+ return code;
244
+ });
245
+ }
246
+ return {
247
+ method: 'GET',
248
+ url: manifest.callbackUrl,
249
+ preHandler: verifyAccessToken,
250
+ handler: async (request, reply) => {
251
+ const queryParams = request.query || {};
252
+ try {
253
+ const returnUrl = new URL(atob(queryParams.returnUrl));
254
+ const user = request.headers.user ? JSON.parse(request.headers.user) : undefined;
255
+ request.user = user;
256
+ for (let handler of handlers.callback) {
257
+ const code = await handler({ user, returnUrl: returnUrl.href }, request);
258
+ if (code && typeof code === 'string') {
259
+ const token = jwt.sign({
260
+ user,
261
+ tenant: request.tenantPayload
262
+ }, config.accessTokenSecret, { expiresIn: '30min' });
263
+ returnUrl.searchParams.append('code', code);
264
+ returnUrl.searchParams.append('token', token);
265
+ return {
266
+ code,
267
+ token,
268
+ returnUrl: returnUrl.href
269
+ };
270
+ }
271
+ }
272
+ }
273
+ catch (err) {
274
+ logger.log('error in callback', err);
275
+ }
276
+ reply.statusCode = 401;
277
+ return notAuthorized;
278
+ }
279
+ };
280
+ }
281
+ export function getFrontendAuthorizationRoute() {
282
+ let standaloneAuthorize = async () => {
283
+ return;
284
+ };
285
+ if (config.qelosUrl) {
286
+ onFrontendAuthorization(async ({ returnUrl, user, tenant }) => {
287
+ try {
288
+ const data = JSON.parse(await cacheManager.getItem(`${returnUrl}:${tenant.sub}:${user.email}`));
289
+ if (data) {
290
+ return {
291
+ code: data.code,
292
+ token: jwt.sign({ code: data.code, user, tenant }, config.accessTokenSecret, { expiresIn: '30min' }),
293
+ };
294
+ }
295
+ }
296
+ catch {
297
+ //
298
+ }
299
+ return;
300
+ });
301
+ if (config.dev) {
302
+ standaloneAuthorize = async (reply) => {
303
+ const user = await getSdk().authentication.getLoggedInUser();
304
+ const tenant = {
305
+ sub: 'test-tenant-' + user._id,
306
+ identifier: user.email
307
+ };
308
+ reply.setCookie('token_default', jwt.sign({
309
+ code: 'default',
310
+ user,
311
+ tenant
312
+ }, config.accessTokenSecret, { expiresIn: '30min' }));
313
+ return {
314
+ user,
315
+ tenant
316
+ };
317
+ };
318
+ }
319
+ }
320
+ return {
321
+ method: 'POST',
322
+ url: manifest.authorizeUrl,
323
+ handler: async (request, reply) => {
324
+ const { returnUrl, token } = request.body || {};
325
+ if (returnUrl && token) {
326
+ try {
327
+ const { user, tenant } = jwt.verify(token, config.accessTokenSecret);
328
+ try {
329
+ Object.keys(request.cookies || {}).forEach(key => {
330
+ if (key.startsWith('token_')) {
331
+ const payload = jwt.decode(request.cookies[key]);
332
+ if (payload && payload.tenant?.identifier === tenant?.identifier) {
333
+ reply.setCookie(key, '', { maxAge: 1 });
334
+ }
335
+ }
336
+ });
337
+ }
338
+ catch (err) {
339
+ logger.error('failed to remove duplicate cookies', err);
340
+ }
341
+ for (let handler of handlers.frontendAuth) {
342
+ const cookieData = await handler({ returnUrl, user, tenant }, request);
343
+ if (cookieData && cookieData.code && cookieData.token) {
344
+ reply.setCookie('token_' + cookieData.code, cookieData.token);
345
+ return {
346
+ user,
347
+ tenant
348
+ };
349
+ }
350
+ }
351
+ }
352
+ catch (err) {
353
+ logger.log('error in callback', err);
354
+ }
355
+ }
356
+ const response = await standaloneAuthorize(reply);
357
+ if (!response) {
358
+ reply.statusCode = 401;
359
+ return notAuthorized;
360
+ }
361
+ return response;
362
+ }
363
+ };
364
+ }
365
+ export function getFrontendUnAuthorizationRoute() {
366
+ return {
367
+ method: 'POST',
368
+ url: manifest.unAuthorizeUrl,
369
+ preHandler: verifyCookieToken,
370
+ handler: async (request, reply) => {
371
+ const code = request.headers.code;
372
+ const user = request.user;
373
+ const tenant = request.tenantPayload;
374
+ reply.setCookie('token_' + code, '', { maxAge: 1 });
375
+ handlers.frontendUnAuth.forEach((handler) => handler({ user, tenant }));
376
+ return 'OK';
377
+ }
378
+ };
379
+ }
380
+ //# sourceMappingURL=authentication.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"authentication.js","sourceRoot":"","sources":["../src/authentication.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import { CacheManager } from '@qelos/cache-manager';
2
+ export declare const cacheManager: CacheManager;
@@ -0,0 +1,7 @@
1
+ import { createCacheManager } from '@qelos/cache-manager';
2
+ import config from './config';
3
+ const cacher = config.redisUrl ?
4
+ require('@qelos/cache-manager/dist/redis-cache').createRedisCache(config.redisUrl) :
5
+ require('@qelos/cache-manager/dist/memory-cache').createMemoryCache();
6
+ export const cacheManager = createCacheManager(cacher, { ttl: 60 * 30 });
7
+ //# sourceMappingURL=cache-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache-manager.js","sourceRoot":"","sources":["../src/cache-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,kBAAkB,EAAC,MAAM,sBAAsB,CAAC;AAEtE,OAAO,MAAM,MAAM,UAAU,CAAC;AAE9B,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC9B,OAAO,CAAC,uCAAuC,CAAC,CAAC,gBAAgB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;IACpF,OAAO,CAAC,wCAAwC,CAAC,CAAC,iBAAiB,EAAE,CAAA;AAEvE,MAAM,CAAC,MAAM,YAAY,GAAiB,kBAAkB,CAAC,MAAM,EAAE,EAAC,GAAG,EAAE,EAAE,GAAG,EAAE,EAAC,CAAC,CAAC"}
@@ -0,0 +1,24 @@
1
+ import { QelosSDKOptions } from '@qelos/sdk/dist/types';
2
+ declare const config: {
3
+ port: number;
4
+ internalPort: number;
5
+ host: string;
6
+ internalHost: string;
7
+ dev: boolean;
8
+ allowedTenants: string[];
9
+ refreshTokenSecret: string;
10
+ accessTokenSecret: string;
11
+ userPayloadSecret: string;
12
+ qelosUrl: string;
13
+ qelosUsername: string;
14
+ qelosPassword: string;
15
+ redisUrl: string;
16
+ staticFrontend: {
17
+ root: string;
18
+ prefix: string;
19
+ };
20
+ sdkOptions: Partial<QelosSDKOptions>;
21
+ };
22
+ export type ConfigOptions = Partial<typeof config>;
23
+ export declare function setConfig(appConfig: ConfigOptions): void;
24
+ export default config;