@eventista/ticketing-common 1.1.19-dev.2 → 1.1.19-dev.4
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/dist/auth/auth.guard.js
CHANGED
|
@@ -37,18 +37,13 @@ let AuthGuard = class AuthGuard {
|
|
|
37
37
|
throw new common_1.UnauthorizedException('Token or session not provided');
|
|
38
38
|
}
|
|
39
39
|
if ((0, uuid_1.validate)(token)) {
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
return true;
|
|
48
|
-
}
|
|
49
|
-
else {
|
|
50
|
-
throw new common_1.UnauthorizedException('Token not provided');
|
|
51
|
-
}
|
|
40
|
+
request.user = {
|
|
41
|
+
email: token,
|
|
42
|
+
};
|
|
43
|
+
request.session = {
|
|
44
|
+
issueDate: Date.now() + (10 * 60 * 1000)
|
|
45
|
+
};
|
|
46
|
+
return true;
|
|
52
47
|
}
|
|
53
48
|
const match = token.match(/^Bearer (.*)$/);
|
|
54
49
|
if (!match || match.length < 2) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.guard.js","sourceRoot":"","sources":["../../src/auth/auth.guard.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAKwB;AACxB,uCAAyC;AACzC,oCAAoC;AACpC,+BAAgC;AAChC,2CAA+C;AAC/C,qEAA+D;AAIxD,IAAM,SAAS,GAAf,MAAM,SAAS;IACpB,YACmB,SAAoB,EACpB,aAA4B;QAD5B,cAAS,GAAT,SAAS,CAAW;QACpB,kBAAa,GAAb,aAAa,CAAe;IAC3C,CAAC;IAEL,WAAW,CAAC,OAAyB;QACnC,IAAI,OAAO,CAAC,OAAO,EAAE,KAAK,MAAM,EAAE,CAAC;YACjC,OAAO,IAAI,CAAC;QACd,CAAC;QACD,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAU,gCAAa,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;QAClF,IAAI,QAAQ,EAAE,CAAC;YACb,OAAO,IAAI,CAAC;QACd,CAAC;QACD,MAAM,OAAO,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,UAAU,EAAE,CAAC;QAEpD,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;QAI5B,MAAM,OAAO,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAAC;QAG/C,MAAM,KAAK,GACT,OAAO,EAAE,aAAa,IAAI,OAAO,EAAE,KAAK,EAAE,KAAK,IAAI,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC;QAE1E,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,8BAAqB,CAAC,+BAA+B,CAAC,CAAC;QACnE,CAAC;QAGD,IAAI,IAAA,eAAQ,EAAC,KAAK,CAAC,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"auth.guard.js","sourceRoot":"","sources":["../../src/auth/auth.guard.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,13 +11,7 @@ const common_1 = require("@nestjs/common");
|
|
|
11
11
|
const config_1 = require("@nestjs/config");
|
|
12
12
|
const redis_service_1 = require("./redis.service");
|
|
13
13
|
const custom_logger_1 = require("../../logger/custom.logger");
|
|
14
|
-
const ioredis_1 = require("ioredis");
|
|
15
14
|
const record_lock_service_1 = require("./record-lock.service");
|
|
16
|
-
var RedisProviderType;
|
|
17
|
-
(function (RedisProviderType) {
|
|
18
|
-
RedisProviderType["CLUSTER"] = "cluster";
|
|
19
|
-
RedisProviderType["AZURE"] = "azure";
|
|
20
|
-
})(RedisProviderType || (RedisProviderType = {}));
|
|
21
15
|
const RedisClusterProvider = {
|
|
22
16
|
provide: 'REDIS_CLUSTER',
|
|
23
17
|
useFactory: (configService) => {
|
|
@@ -115,89 +109,6 @@ const RedisClusterProvider = {
|
|
|
115
109
|
},
|
|
116
110
|
inject: [config_1.ConfigService],
|
|
117
111
|
};
|
|
118
|
-
const AzureRedisProvider = {
|
|
119
|
-
provide: 'AZURE_REDIS_CLIENT',
|
|
120
|
-
useFactory: (configService) => {
|
|
121
|
-
const logger = new custom_logger_1.CustomLogger('AzureRedisModule');
|
|
122
|
-
logger.log('Initializing Azure Redis Enterprise connection...');
|
|
123
|
-
const host = configService.get('REDIS_HOST', 'localhost');
|
|
124
|
-
const port = configService.get('REDIS_PORT', 10000);
|
|
125
|
-
const password = configService.get('REDIS_ACCESS_KEY', '');
|
|
126
|
-
const enableTls = configService.get('REDIS_TLS', true);
|
|
127
|
-
logger.log(`Connecting to Azure Redis Enterprise at ${host}:${port} (TLS: ${enableTls})`);
|
|
128
|
-
const redisConfig = {
|
|
129
|
-
host: host,
|
|
130
|
-
port: port,
|
|
131
|
-
password: password,
|
|
132
|
-
tls: enableTls ? {
|
|
133
|
-
servername: host,
|
|
134
|
-
rejectUnauthorized: true,
|
|
135
|
-
} : undefined,
|
|
136
|
-
connectTimeout: Number(configService.get('REDIS_CONNECT_TIMEOUT', 10000)),
|
|
137
|
-
commandTimeout: Number(configService.get('REDIS_COMMAND_TIMEOUT', 30000)),
|
|
138
|
-
lazyConnect: true,
|
|
139
|
-
retryStrategy: (times) => {
|
|
140
|
-
logger.warn(`Azure Redis connection attempt ${times} failed. Retrying...`);
|
|
141
|
-
if (times > 10) {
|
|
142
|
-
logger.error('Azure Redis connection failed after 10 attempts. Giving up.');
|
|
143
|
-
return null;
|
|
144
|
-
}
|
|
145
|
-
const delay = Math.min(times * 200, 5000);
|
|
146
|
-
logger.log(`Retrying Azure Redis connection in ${delay}ms`);
|
|
147
|
-
return delay;
|
|
148
|
-
},
|
|
149
|
-
keepAlive: 30000,
|
|
150
|
-
noDelay: true,
|
|
151
|
-
enableReadyCheck: true,
|
|
152
|
-
enableOfflineQueue: true,
|
|
153
|
-
maxRetriesPerRequest: 3,
|
|
154
|
-
family: 4,
|
|
155
|
-
db: 0,
|
|
156
|
-
};
|
|
157
|
-
const redis = new ioredis_1.Redis(redisConfig);
|
|
158
|
-
redis.on('connect', () => {
|
|
159
|
-
logger.log('Connected to Azure Redis Enterprise');
|
|
160
|
-
});
|
|
161
|
-
redis.on('ready', () => {
|
|
162
|
-
logger.log('Azure Redis Enterprise is ready');
|
|
163
|
-
logger.log(`Connected to: ${host}:${port} (TLS: ${enableTls})`);
|
|
164
|
-
});
|
|
165
|
-
redis.on('error', (err) => {
|
|
166
|
-
logger.error(`Azure Redis Enterprise error: ${err.message}`, err.stack);
|
|
167
|
-
});
|
|
168
|
-
redis.on('close', () => {
|
|
169
|
-
logger.warn('Azure Redis Enterprise connection closed - Will attempt to reconnect automatically');
|
|
170
|
-
});
|
|
171
|
-
redis.on('reconnecting', (delay) => {
|
|
172
|
-
logger.log(`Azure Redis Enterprise reconnecting in ${delay}ms`);
|
|
173
|
-
});
|
|
174
|
-
redis.on('end', () => {
|
|
175
|
-
logger.warn('Azure Redis Enterprise connection ended');
|
|
176
|
-
});
|
|
177
|
-
redis.connect().catch((err) => {
|
|
178
|
-
logger.error('Failed to connect to Azure Redis Enterprise:', err.message);
|
|
179
|
-
});
|
|
180
|
-
return redis;
|
|
181
|
-
},
|
|
182
|
-
inject: [config_1.ConfigService],
|
|
183
|
-
};
|
|
184
|
-
const RedisProvider = {
|
|
185
|
-
provide: 'REDIS_CLUSTER',
|
|
186
|
-
useFactory: (configService) => {
|
|
187
|
-
const logger = new custom_logger_1.CustomLogger('RedisModule');
|
|
188
|
-
const providerType = configService.get('REDIS_PROVIDER', RedisProviderType.CLUSTER).toLowerCase();
|
|
189
|
-
logger.log(`Using Redis Provider: ${providerType}`);
|
|
190
|
-
if (providerType === RedisProviderType.AZURE) {
|
|
191
|
-
const azureFactory = AzureRedisProvider.useFactory;
|
|
192
|
-
return azureFactory(configService);
|
|
193
|
-
}
|
|
194
|
-
else {
|
|
195
|
-
const clusterFactory = RedisClusterProvider.useFactory;
|
|
196
|
-
return clusterFactory(configService);
|
|
197
|
-
}
|
|
198
|
-
},
|
|
199
|
-
inject: [config_1.ConfigService],
|
|
200
|
-
};
|
|
201
112
|
let RedisModule = class RedisModule {
|
|
202
113
|
};
|
|
203
114
|
exports.RedisModule = RedisModule;
|
|
@@ -206,7 +117,7 @@ exports.RedisModule = RedisModule = __decorate([
|
|
|
206
117
|
(0, common_1.Module)({
|
|
207
118
|
imports: [config_1.ConfigModule],
|
|
208
119
|
providers: [
|
|
209
|
-
|
|
120
|
+
RedisClusterProvider,
|
|
210
121
|
redis_service_1.RedisService,
|
|
211
122
|
record_lock_service_1.RecordLockService,
|
|
212
123
|
],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"redis.module.js","sourceRoot":"","sources":["../../../src/database/redis/redis.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAA0D;AAC1D,2CAA6D;AAC7D,mDAA+C;AAC/C,8DAA0D;
|
|
1
|
+
{"version":3,"file":"redis.module.js","sourceRoot":"","sources":["../../../src/database/redis/redis.module.ts"],"names":[],"mappings":"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"}
|