@checkfirst/nestjs-outlook 3.1.0 → 4.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.
Files changed (29) hide show
  1. package/README.md +48 -103
  2. package/dist/entities/microsoft-user.entity.d.ts +11 -0
  3. package/dist/entities/microsoft-user.entity.js +67 -0
  4. package/dist/entities/microsoft-user.entity.js.map +1 -0
  5. package/dist/entities/outlook-webhook-subscription.entity.d.ts +0 -2
  6. package/dist/entities/outlook-webhook-subscription.entity.js +0 -10
  7. package/dist/entities/outlook-webhook-subscription.entity.js.map +1 -1
  8. package/dist/enums/event-types.enum.d.ts +1 -2
  9. package/dist/enums/event-types.enum.js +1 -2
  10. package/dist/enums/event-types.enum.js.map +1 -1
  11. package/dist/microsoft-outlook.module.js +6 -1
  12. package/dist/microsoft-outlook.module.js.map +1 -1
  13. package/dist/migrations/1699000000000-AddMicrosoftUserTable.d.ts +5 -0
  14. package/dist/migrations/1699000000000-AddMicrosoftUserTable.js +104 -0
  15. package/dist/migrations/1699000000000-AddMicrosoftUserTable.js.map +1 -0
  16. package/dist/repositories/outlook-webhook-subscription.repository.d.ts +1 -1
  17. package/dist/repositories/outlook-webhook-subscription.repository.js +1 -4
  18. package/dist/repositories/outlook-webhook-subscription.repository.js.map +1 -1
  19. package/dist/services/auth/microsoft-auth.service.d.ts +10 -4
  20. package/dist/services/auth/microsoft-auth.service.js +137 -53
  21. package/dist/services/auth/microsoft-auth.service.js.map +1 -1
  22. package/dist/services/calendar/calendar.service.d.ts +6 -8
  23. package/dist/services/calendar/calendar.service.js +48 -57
  24. package/dist/services/calendar/calendar.service.js.map +1 -1
  25. package/dist/services/email/email.service.d.ts +2 -5
  26. package/dist/services/email/email.service.js +16 -36
  27. package/dist/services/email/email.service.js.map +1 -1
  28. package/dist/tsconfig.tsbuildinfo +1 -1
  29. package/package.json +1 -1
@@ -2,17 +2,19 @@ import { EventEmitter2 } from '@nestjs/event-emitter';
2
2
  import { TokenResponse } from '../../interfaces/outlook/token-response.interface';
3
3
  import { CalendarService } from '../calendar/calendar.service';
4
4
  import { EmailService } from '../email/email.service';
5
- import { Subscription } from '@microsoft/microsoft-graph-types';
6
5
  import { MicrosoftOutlookConfig } from '../../interfaces/config/outlook-config.interface';
7
6
  import { MicrosoftCsrfTokenRepository } from '../../repositories/microsoft-csrf-token.repository';
8
7
  import { StateObject } from '../../interfaces/microsoft-auth/state-object.interface';
9
8
  import { PermissionScope } from '../../enums/permission-scope.enum';
9
+ import { Repository } from 'typeorm';
10
+ import { MicrosoftUser } from '../../entities/microsoft-user.entity';
10
11
  export declare class MicrosoftAuthService {
11
12
  private readonly eventEmitter;
12
13
  private readonly calendarService;
13
14
  private readonly emailService;
14
15
  private readonly microsoftConfig;
15
16
  private readonly csrfTokenRepository;
17
+ private readonly microsoftUserRepository;
16
18
  private readonly logger;
17
19
  private readonly clientId;
18
20
  private readonly clientSecret;
@@ -23,7 +25,7 @@ export declare class MicrosoftAuthService {
23
25
  private readonly defaultScopes;
24
26
  private readonly CSRF_TOKEN_EXPIRY;
25
27
  private subscriptionInProgress;
26
- constructor(eventEmitter: EventEmitter2, calendarService: CalendarService, emailService: EmailService, microsoftConfig: MicrosoftOutlookConfig, csrfTokenRepository: MicrosoftCsrfTokenRepository);
28
+ constructor(eventEmitter: EventEmitter2, calendarService: CalendarService, emailService: EmailService, microsoftConfig: MicrosoftOutlookConfig, csrfTokenRepository: MicrosoftCsrfTokenRepository, microsoftUserRepository: Repository<MicrosoftUser>);
27
29
  private mapToMicrosoftScopes;
28
30
  private buildRedirectUri;
29
31
  cleanupExpiredTokens(): Promise<void>;
@@ -31,10 +33,14 @@ export declare class MicrosoftAuthService {
31
33
  parseState(state: string): StateObject | null;
32
34
  validateCsrfToken(token: string, timestamp?: number): Promise<string | null>;
33
35
  getLoginUrl(userId: string, scopes?: PermissionScope[]): Promise<string>;
36
+ private saveMicrosoftUser;
37
+ private getMicrosoftUserTokenInfo;
38
+ getUserAccessTokenByExternalUserId(externalUserId: string): Promise<string>;
39
+ getUserAccessTokenByUserId(internalUserId: number | string): Promise<string>;
40
+ private processTokenInfo;
34
41
  exchangeCodeForToken(code: string, state: string): Promise<TokenResponse>;
35
42
  private setupSubscriptions;
36
- refreshAccessToken(refreshToken: string, userId?: number, calendarId?: string, scopes?: PermissionScope[]): Promise<TokenResponse>;
37
- renewWebhookSubscription(subscriptionId: string, accessToken: string, refreshToken: string, scopes?: PermissionScope[]): Promise<Subscription>;
43
+ refreshAccessToken(refreshToken: string, userId: number): Promise<string>;
38
44
  private hasCalendarPermission;
39
45
  private hasEmailPermission;
40
46
  isTokenExpired(tokenExpiry: Date, bufferMinutes?: number): boolean;
@@ -17,7 +17,6 @@ exports.MicrosoftAuthService = void 0;
17
17
  const common_1 = require("@nestjs/common");
18
18
  const event_emitter_1 = require("@nestjs/event-emitter");
19
19
  const axios_1 = require("axios");
20
- const qs = require("querystring");
21
20
  const calendar_service_1 = require("../calendar/calendar.service");
22
21
  const email_service_1 = require("../email/email.service");
23
22
  const constants_1 = require("../../constants");
@@ -26,13 +25,17 @@ const crypto = require("crypto");
26
25
  const schedule_1 = require("@nestjs/schedule");
27
26
  const microsoft_csrf_token_repository_1 = require("../../repositories/microsoft-csrf-token.repository");
28
27
  const permission_scope_enum_1 = require("../../enums/permission-scope.enum");
28
+ const typeorm_1 = require("@nestjs/typeorm");
29
+ const typeorm_2 = require("typeorm");
30
+ const microsoft_user_entity_1 = require("../../entities/microsoft-user.entity");
29
31
  let MicrosoftAuthService = MicrosoftAuthService_1 = class MicrosoftAuthService {
30
- constructor(eventEmitter, calendarService, emailService, microsoftConfig, csrfTokenRepository) {
32
+ constructor(eventEmitter, calendarService, emailService, microsoftConfig, csrfTokenRepository, microsoftUserRepository) {
31
33
  this.eventEmitter = eventEmitter;
32
34
  this.calendarService = calendarService;
33
35
  this.emailService = emailService;
34
36
  this.microsoftConfig = microsoftConfig;
35
37
  this.csrfTokenRepository = csrfTokenRepository;
38
+ this.microsoftUserRepository = microsoftUserRepository;
36
39
  this.logger = new common_1.Logger(MicrosoftAuthService_1.name);
37
40
  this.tenantId = 'common';
38
41
  this.requiredScopes = ['offline_access', 'User.Read'];
@@ -165,6 +168,82 @@ let MicrosoftAuthService = MicrosoftAuthService_1 = class MicrosoftAuthService {
165
168
  this.logger.log(`FINAL MICROSOFT LOGIN URL: ${authorizeUrl}`);
166
169
  return authorizeUrl;
167
170
  }
171
+ async saveMicrosoftUser(externalUserId, accessToken, refreshToken, expiresIn, scopes) {
172
+ let user = await this.microsoftUserRepository.findOne({
173
+ where: { externalUserId: externalUserId, isActive: true }
174
+ });
175
+ if (!user) {
176
+ user = new microsoft_user_entity_1.MicrosoftUser();
177
+ user.externalUserId = externalUserId;
178
+ }
179
+ user.accessToken = accessToken;
180
+ user.refreshToken = refreshToken;
181
+ user.tokenExpiry = new Date(Date.now() + expiresIn * 1000);
182
+ user.scopes = scopes;
183
+ user.isActive = true;
184
+ await this.microsoftUserRepository.save(user);
185
+ }
186
+ async getMicrosoftUserTokenInfo(externalUserId) {
187
+ const user = await this.microsoftUserRepository.findOne({
188
+ where: { externalUserId: externalUserId, isActive: true }
189
+ });
190
+ if (!user) {
191
+ return null;
192
+ }
193
+ return {
194
+ accessToken: user.accessToken,
195
+ refreshToken: user.refreshToken,
196
+ tokenExpiry: user.tokenExpiry,
197
+ scopes: user.scopes,
198
+ };
199
+ }
200
+ async getUserAccessTokenByExternalUserId(externalUserId) {
201
+ try {
202
+ const userInfo = await this.getMicrosoftUserTokenInfo(externalUserId);
203
+ if (!userInfo) {
204
+ throw new Error(`No token information found for user ${externalUserId}`);
205
+ }
206
+ const user = await this.microsoftUserRepository.findOne({
207
+ where: { externalUserId: externalUserId, isActive: true }
208
+ });
209
+ if (!user) {
210
+ throw new Error(`Could not find user record for ${externalUserId}`);
211
+ }
212
+ return await this.processTokenInfo(userInfo, user.id);
213
+ }
214
+ catch (error) {
215
+ this.logger.error(`Error getting access token for user ${externalUserId}:`, error);
216
+ throw new Error(`Failed to get valid access token: ${error instanceof Error ? error.message : 'Unknown error'}`);
217
+ }
218
+ }
219
+ async getUserAccessTokenByUserId(internalUserId) {
220
+ try {
221
+ const user = await this.microsoftUserRepository.findOne({
222
+ where: { id: typeof internalUserId === 'string' ? parseInt(internalUserId, 10) : internalUserId }
223
+ });
224
+ if (!user) {
225
+ throw new Error(`No Microsoft user found with internal ID ${String(internalUserId)}`);
226
+ }
227
+ return await this.processTokenInfo({
228
+ accessToken: user.accessToken,
229
+ refreshToken: user.refreshToken,
230
+ tokenExpiry: user.tokenExpiry,
231
+ scopes: user.scopes
232
+ }, user.id);
233
+ }
234
+ catch (error) {
235
+ this.logger.error(`Error getting access token for internal user ID ${String(internalUserId)}:`, error);
236
+ throw new Error(`Failed to get valid access token: ${error instanceof Error ? error.message : 'Unknown error'}`);
237
+ }
238
+ }
239
+ async processTokenInfo(tokenInfo, userId) {
240
+ if (!this.isTokenExpired(tokenInfo.tokenExpiry)) {
241
+ return tokenInfo.accessToken;
242
+ }
243
+ this.logger.log(`Access token for user ID ${String(userId)} is expired, refreshing...`);
244
+ const accessToken = await this.refreshAccessToken(tokenInfo.refreshToken, userId);
245
+ return accessToken;
246
+ }
168
247
  async exchangeCodeForToken(code, state) {
169
248
  const stateData = this.parseState(state);
170
249
  if (!(stateData === null || stateData === void 0 ? void 0 : stateData.userId)) {
@@ -199,11 +278,12 @@ let MicrosoftAuthService = MicrosoftAuthService_1 = class MicrosoftAuthService {
199
278
  refresh_token: tokenResponse.data.refresh_token || '',
200
279
  expires_in: tokenResponse.data.expires_in,
201
280
  };
202
- await Promise.resolve(this.eventEmitter.emit(event_types_enum_1.OutlookEventTypes.AUTH_TOKENS_SAVE, stateData.userId, tokenData));
203
- const userId = Number(stateData.userId);
204
- const accessToken = tokenData.access_token;
205
- const refreshToken = tokenData.refresh_token;
206
- await this.setupSubscriptions(userId, accessToken, refreshToken, scopesToUse);
281
+ await this.saveMicrosoftUser(stateData.userId, tokenData.access_token, tokenData.refresh_token, tokenData.expires_in, scopeString);
282
+ await Promise.resolve(this.eventEmitter.emit(event_types_enum_1.OutlookEventTypes.USER_AUTHENTICATED, stateData.userId, {
283
+ externalUserId: stateData.userId,
284
+ scopes: scopesToUse
285
+ }));
286
+ await this.setupSubscriptions(stateData.userId, scopesToUse);
207
287
  return tokenData;
208
288
  }
209
289
  catch (error) {
@@ -211,17 +291,18 @@ let MicrosoftAuthService = MicrosoftAuthService_1 = class MicrosoftAuthService {
211
291
  throw new Error('Failed to exchange code for token');
212
292
  }
213
293
  }
214
- async setupSubscriptions(userId, accessToken, refreshToken, scopes = this.defaultScopes) {
215
- if (this.subscriptionInProgress.get(userId)) {
216
- this.logger.log(`Subscription setup already in progress for user ${String(userId)}`);
294
+ async setupSubscriptions(userId, scopes = this.defaultScopes) {
295
+ const userIdNum = parseInt(userId, 10);
296
+ if (this.subscriptionInProgress.get(userIdNum)) {
297
+ this.logger.log(`Subscription setup already in progress for user ${userId}`);
217
298
  return;
218
299
  }
219
300
  try {
220
- this.subscriptionInProgress.set(userId, true);
301
+ this.subscriptionInProgress.set(userIdNum, true);
221
302
  if (this.hasCalendarPermission(scopes)) {
222
303
  try {
223
- await this.calendarService.createWebhookSubscription(userId, accessToken, refreshToken);
224
- this.logger.log(`Successfully created calendar webhook subscription for user ${String(userId)}`);
304
+ await this.calendarService.createWebhookSubscription(userId);
305
+ this.logger.log(`Successfully created calendar webhook subscription for user ${userId}`);
225
306
  }
226
307
  catch (calendarError) {
227
308
  this.logger.error(`Failed to create calendar webhook subscription: ${calendarError instanceof Error ? calendarError.message : 'Unknown error'}`);
@@ -229,8 +310,8 @@ let MicrosoftAuthService = MicrosoftAuthService_1 = class MicrosoftAuthService {
229
310
  }
230
311
  if (this.hasEmailPermission(scopes)) {
231
312
  try {
232
- await this.emailService.createWebhookSubscription(userId, accessToken, refreshToken);
233
- this.logger.log(`Successfully created email webhook subscription for user ${String(userId)}`);
313
+ await this.emailService.createWebhookSubscription(userId);
314
+ this.logger.log(`Successfully created email webhook subscription for user ${userId}`);
234
315
  }
235
316
  catch (emailError) {
236
317
  this.logger.error(`Failed to create email webhook subscription: ${emailError instanceof Error ? emailError.message : 'Unknown error'}`);
@@ -241,59 +322,60 @@ let MicrosoftAuthService = MicrosoftAuthService_1 = class MicrosoftAuthService {
241
322
  this.logger.error(`Error setting up subscriptions: ${error instanceof Error ? error.message : 'Unknown error'}`);
242
323
  }
243
324
  finally {
244
- this.subscriptionInProgress.set(userId, false);
325
+ this.subscriptionInProgress.set(userIdNum, false);
245
326
  }
246
327
  }
247
- async refreshAccessToken(refreshToken, userId, calendarId, scopes = this.defaultScopes) {
328
+ async refreshAccessToken(refreshToken, userId) {
248
329
  try {
249
- const scopeString = this.mapToMicrosoftScopes(scopes).join(' ');
250
- const payload = {
330
+ const user = await this.microsoftUserRepository.findOne({
331
+ where: { id: userId }
332
+ });
333
+ if (!user) {
334
+ throw new Error(`No user found with ID ${String(userId)}`);
335
+ }
336
+ const scopeString = user.scopes;
337
+ this.logger.debug(`Using saved scopes from database: ${scopeString}`);
338
+ this.logger.debug(`Refreshing token for user ID ${String(userId)} with scopes: ${scopeString}`);
339
+ const payload = new URLSearchParams({
251
340
  client_id: this.clientId,
252
341
  client_secret: this.clientSecret,
253
342
  refresh_token: refreshToken,
254
343
  grant_type: 'refresh_token',
255
344
  scope: scopeString,
256
- };
257
- const response = await axios_1.default.post(this.tokenEndpoint, qs.stringify(payload), {
258
- headers: {
259
- 'Content-Type': 'application/x-www-form-urlencoded',
260
- },
261
345
  });
262
- if (!response.data.access_token || !response.data.expires_in) {
263
- throw new Error('Invalid token refresh response from Microsoft');
346
+ try {
347
+ const response = await axios_1.default.post(this.tokenEndpoint, payload.toString(), {
348
+ headers: {
349
+ 'Content-Type': 'application/x-www-form-urlencoded',
350
+ },
351
+ });
352
+ if (!response.data.access_token || !response.data.expires_in) {
353
+ throw new Error('Invalid token refresh response from Microsoft');
354
+ }
355
+ const newRefreshToken = response.data.refresh_token || refreshToken;
356
+ const newAccessToken = response.data.access_token;
357
+ user.accessToken = newAccessToken;
358
+ user.refreshToken = newRefreshToken;
359
+ user.tokenExpiry = new Date(Date.now() + response.data.expires_in * 1000);
360
+ await this.microsoftUserRepository.save(user);
361
+ return newAccessToken;
264
362
  }
265
- const newRefreshToken = response.data.refresh_token || refreshToken;
266
- const tokenData = {
267
- access_token: response.data.access_token,
268
- refresh_token: newRefreshToken,
269
- expires_in: response.data.expires_in,
270
- };
271
- if (userId !== undefined && calendarId) {
272
- const userIdStr = String(userId);
273
- const calendarIdStr = String(calendarId);
274
- await Promise.resolve(this.eventEmitter.emit(event_types_enum_1.OutlookEventTypes.AUTH_TOKENS_UPDATE, userIdStr, calendarIdStr, tokenData));
363
+ catch (error) {
364
+ if (axios_1.default.isAxiosError(error) && error.response) {
365
+ this.logger.error(`Microsoft API error refreshing token for user ID ${String(userId)}: Status: ${String(error.response.status)}, Response: ${JSON.stringify(error.response.data)}`);
366
+ const errorData = error.response.data;
367
+ if (errorData.error === 'invalid_grant') {
368
+ throw new Error('Microsoft refresh token is invalid or expired');
369
+ }
370
+ }
371
+ throw error;
275
372
  }
276
- return tokenData;
277
373
  }
278
374
  catch (error) {
279
- this.logger.error('Error refreshing access token:', error);
375
+ this.logger.error(`Error refreshing access token for user ID ${String(userId)}:`, error);
280
376
  throw new Error('Failed to refresh access token from Microsoft');
281
377
  }
282
378
  }
283
- async renewWebhookSubscription(subscriptionId, accessToken, refreshToken, scopes = this.defaultScopes) {
284
- var _a;
285
- try {
286
- return await this.calendarService.renewWebhookSubscription(subscriptionId, accessToken);
287
- }
288
- catch (error) {
289
- if (axios_1.default.isAxiosError(error) && ((_a = error.response) === null || _a === void 0 ? void 0 : _a.status) === 401) {
290
- this.logger.log('Access token expired during webhook renewal, refreshing token...');
291
- const tokenResponse = await this.refreshAccessToken(refreshToken, undefined, undefined, scopes);
292
- return await this.calendarService.renewWebhookSubscription(subscriptionId, tokenResponse.access_token);
293
- }
294
- throw error;
295
- }
296
- }
297
379
  hasCalendarPermission(scopes) {
298
380
  return scopes.some(scope => scope === permission_scope_enum_1.PermissionScope.CALENDAR_READ ||
299
381
  scope === permission_scope_enum_1.PermissionScope.CALENDAR_WRITE);
@@ -320,8 +402,10 @@ exports.MicrosoftAuthService = MicrosoftAuthService = MicrosoftAuthService_1 = _
320
402
  __param(1, (0, common_1.Inject)((0, common_1.forwardRef)(() => calendar_service_1.CalendarService))),
321
403
  __param(2, (0, common_1.Inject)((0, common_1.forwardRef)(() => email_service_1.EmailService))),
322
404
  __param(3, (0, common_1.Inject)(constants_1.MICROSOFT_CONFIG)),
405
+ __param(5, (0, typeorm_1.InjectRepository)(microsoft_user_entity_1.MicrosoftUser)),
323
406
  __metadata("design:paramtypes", [event_emitter_1.EventEmitter2,
324
407
  calendar_service_1.CalendarService,
325
- email_service_1.EmailService, Object, microsoft_csrf_token_repository_1.MicrosoftCsrfTokenRepository])
408
+ email_service_1.EmailService, Object, microsoft_csrf_token_repository_1.MicrosoftCsrfTokenRepository,
409
+ typeorm_2.Repository])
326
410
  ], MicrosoftAuthService);
327
411
  //# sourceMappingURL=microsoft-auth.service.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"microsoft-auth.service.js","sourceRoot":"","sources":["../../../src/services/auth/microsoft-auth.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"microsoft-auth.service.js","sourceRoot":"","sources":["../../../src/services/auth/microsoft-auth.service.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,6 @@
1
1
  import { EventEmitter2 } from '@nestjs/event-emitter';
2
2
  import { Event, Subscription, ChangeNotification } from '../../types';
3
3
  import { MicrosoftAuthService } from '../auth/microsoft-auth.service';
4
- import { TokenResponse } from '../../interfaces/outlook/token-response.interface';
5
4
  import { OutlookWebhookSubscriptionRepository } from '../../repositories/outlook-webhook-subscription.repository';
6
5
  import { MicrosoftOutlookConfig } from '../../interfaces/config/outlook-config.interface';
7
6
  export declare class CalendarService {
@@ -11,15 +10,14 @@ export declare class CalendarService {
11
10
  private readonly microsoftConfig;
12
11
  private readonly logger;
13
12
  constructor(microsoftAuthService: MicrosoftAuthService, webhookSubscriptionRepository: OutlookWebhookSubscriptionRepository, eventEmitter: EventEmitter2, microsoftConfig: MicrosoftOutlookConfig);
14
- getDefaultCalendarId(accessToken: string): Promise<string>;
15
- createEvent(event: Partial<Event>, accessToken: string, refreshToken: string, tokenExpiry: string | undefined, userId: number, calendarId: string): Promise<{
13
+ getDefaultCalendarId(externalUserId: string): Promise<string>;
14
+ createEvent(event: Partial<Event>, externalUserId: string, calendarId: string): Promise<{
16
15
  event: Event;
17
- tokensRefreshed: boolean;
18
- refreshedTokens?: TokenResponse;
19
16
  }>;
20
- createWebhookSubscription(userId: number, accessToken: string, refreshToken: string): Promise<Subscription>;
21
- renewWebhookSubscription(subscriptionId: string, accessToken: string): Promise<Subscription>;
22
- deleteWebhookSubscription(subscriptionId: string, accessToken: string): Promise<boolean>;
17
+ createWebhookSubscription(externalUserId: string): Promise<Subscription>;
18
+ renewWebhookSubscription(subscriptionId: string, externalUserId: string): Promise<Subscription>;
19
+ renewWebhookSubscriptionByUserId(subscriptionId: string, internalUserId: number | string): Promise<Subscription>;
20
+ deleteWebhookSubscription(subscriptionId: string, externalUserId: string): Promise<boolean>;
23
21
  renewSubscriptions(): Promise<void>;
24
22
  handleOutlookWebhook(notificationItem: ChangeNotification): Promise<{
25
23
  success: boolean;
@@ -31,8 +31,9 @@ let CalendarService = CalendarService_1 = class CalendarService {
31
31
  this.microsoftConfig = microsoftConfig;
32
32
  this.logger = new common_1.Logger(CalendarService_1.name);
33
33
  }
34
- async getDefaultCalendarId(accessToken) {
34
+ async getDefaultCalendarId(externalUserId) {
35
35
  try {
36
+ const accessToken = await this.microsoftAuthService.getUserAccessTokenByExternalUserId(externalUserId);
36
37
  const response = await axios_1.default.get('https://graph.microsoft.com/v1.0/me/calendar', {
37
38
  headers: {
38
39
  Authorization: `Bearer ${accessToken}`,
@@ -49,31 +50,12 @@ let CalendarService = CalendarService_1 = class CalendarService {
49
50
  throw new Error('Failed to get calendar ID from Microsoft');
50
51
  }
51
52
  }
52
- async createEvent(event, accessToken, refreshToken, tokenExpiry, userId, calendarId) {
53
+ async createEvent(event, externalUserId, calendarId) {
53
54
  try {
54
- let currentAccessToken = accessToken;
55
- let currentRefreshToken = refreshToken;
56
- let tokensRefreshed = false;
57
- let refreshedTokens;
58
- if (currentRefreshToken && tokenExpiry) {
59
- if (this.microsoftAuthService.isTokenExpired(new Date(tokenExpiry))) {
60
- this.logger.log('Access token is expired or will expire soon. Refreshing token...');
61
- try {
62
- refreshedTokens = await this.microsoftAuthService.refreshAccessToken(currentRefreshToken, userId, calendarId);
63
- currentAccessToken = refreshedTokens.access_token || currentAccessToken;
64
- currentRefreshToken = refreshedTokens.refresh_token || currentRefreshToken;
65
- tokensRefreshed = true;
66
- this.logger.log('Token refreshed successfully');
67
- }
68
- catch (refreshError) {
69
- this.logger.error('Failed to refresh token:', refreshError);
70
- throw new Error('Failed to refresh token');
71
- }
72
- }
73
- }
55
+ const accessToken = await this.microsoftAuthService.getUserAccessTokenByExternalUserId(externalUserId);
74
56
  const client = microsoft_graph_client_1.Client.init({
75
57
  authProvider: (done) => {
76
- done(null, currentAccessToken);
58
+ done(null, accessToken);
77
59
  },
78
60
  });
79
61
  const createdEvent = await client
@@ -81,8 +63,6 @@ let CalendarService = CalendarService_1 = class CalendarService {
81
63
  .post(event);
82
64
  return {
83
65
  event: createdEvent,
84
- tokensRefreshed,
85
- refreshedTokens,
86
66
  };
87
67
  }
88
68
  catch (error) {
@@ -91,8 +71,9 @@ let CalendarService = CalendarService_1 = class CalendarService {
91
71
  throw new Error(`Failed to create Outlook calendar event: ${errorMessage}`);
92
72
  }
93
73
  }
94
- async createWebhookSubscription(userId, accessToken, refreshToken) {
74
+ async createWebhookSubscription(externalUserId) {
95
75
  try {
76
+ const accessToken = await this.microsoftAuthService.getUserAccessTokenByExternalUserId(externalUserId);
96
77
  const expirationDateTime = new Date();
97
78
  expirationDateTime.setHours(expirationDateTime.getHours() + 72);
98
79
  const appUrl = this.microsoftConfig.backendBaseUrl || 'http://localhost:3000';
@@ -105,7 +86,7 @@ let CalendarService = CalendarService_1 = class CalendarService {
105
86
  lifecycleNotificationUrl: notificationUrl,
106
87
  resource: '/me/events',
107
88
  expirationDateTime: expirationDateTime.toISOString(),
108
- clientState: `user_${String(userId)}_${Math.random().toString(36).substring(2, 15)}`,
89
+ clientState: `user_${externalUserId}_${Math.random().toString(36).substring(2, 15)}`,
109
90
  };
110
91
  this.logger.debug(`Creating webhook subscription with notificationUrl: ${notificationUrl}`);
111
92
  this.logger.debug(`Subscription data: ${JSON.stringify(subscriptionData)}`);
@@ -115,29 +96,54 @@ let CalendarService = CalendarService_1 = class CalendarService {
115
96
  'Content-Type': 'application/json',
116
97
  },
117
98
  });
118
- this.logger.log(`Created webhook subscription ${String(response.data.id)} for user ${String(userId)}`);
99
+ this.logger.log(`Created webhook subscription ${response.data.id || 'unknown'} for user ${externalUserId}`);
100
+ const internalUserId = parseInt(externalUserId, 10);
119
101
  await this.webhookSubscriptionRepository.saveSubscription({
120
102
  subscriptionId: response.data.id,
121
- userId,
103
+ userId: internalUserId,
122
104
  resource: response.data.resource,
123
105
  changeType: response.data.changeType,
124
106
  clientState: response.data.clientState || '',
125
107
  notificationUrl: response.data.notificationUrl,
126
108
  expirationDateTime: response.data.expirationDateTime ? new Date(response.data.expirationDateTime) : new Date(),
127
- accessToken,
128
- refreshToken,
129
109
  });
130
- this.logger.debug(`Stored subscription with refresh token: ${refreshToken.substring(0, 5)}...`);
110
+ this.logger.debug(`Stored subscription`);
111
+ return response.data;
112
+ }
113
+ catch (error) {
114
+ this.logger.error('Failed to create webhook subscription:', error);
115
+ throw new Error('Failed to create webhook subscription');
116
+ }
117
+ }
118
+ async renewWebhookSubscription(subscriptionId, externalUserId) {
119
+ try {
120
+ const accessToken = await this.microsoftAuthService.getUserAccessTokenByExternalUserId(externalUserId);
121
+ const expirationDateTime = new Date();
122
+ expirationDateTime.setHours(expirationDateTime.getHours() + 72);
123
+ const renewalData = {
124
+ expirationDateTime: expirationDateTime.toISOString(),
125
+ };
126
+ const response = await axios_1.default.patch(`https://graph.microsoft.com/v1.0/subscriptions/${subscriptionId}`, renewalData, {
127
+ headers: {
128
+ Authorization: `Bearer ${accessToken}`,
129
+ 'Content-Type': 'application/json',
130
+ },
131
+ });
132
+ if (response.data.expirationDateTime) {
133
+ await this.webhookSubscriptionRepository.updateSubscriptionExpiration(subscriptionId, new Date(response.data.expirationDateTime));
134
+ }
135
+ this.logger.log(`Renewed webhook subscription: ${subscriptionId}`);
131
136
  return response.data;
132
137
  }
133
138
  catch (error) {
134
139
  const errorMessage = error instanceof Error ? error.message : 'Unknown error';
135
- this.logger.error(`Failed to create webhook subscription: ${errorMessage}`);
136
- throw new Error(`Failed to create webhook subscription: ${errorMessage}`);
140
+ this.logger.error(`Failed to renew webhook subscription: ${errorMessage}`);
141
+ throw new Error(`Failed to renew webhook subscription: ${errorMessage}`);
137
142
  }
138
143
  }
139
- async renewWebhookSubscription(subscriptionId, accessToken) {
144
+ async renewWebhookSubscriptionByUserId(subscriptionId, internalUserId) {
140
145
  try {
146
+ const accessToken = await this.microsoftAuthService.getUserAccessTokenByUserId(internalUserId);
141
147
  const expirationDateTime = new Date();
142
148
  expirationDateTime.setHours(expirationDateTime.getHours() + 72);
143
149
  const renewalData = {
@@ -161,9 +167,10 @@ let CalendarService = CalendarService_1 = class CalendarService {
161
167
  throw new Error(`Failed to renew webhook subscription: ${errorMessage}`);
162
168
  }
163
169
  }
164
- async deleteWebhookSubscription(subscriptionId, accessToken) {
170
+ async deleteWebhookSubscription(subscriptionId, externalUserId) {
165
171
  var _a;
166
172
  try {
173
+ const accessToken = await this.microsoftAuthService.getUserAccessTokenByExternalUserId(externalUserId);
167
174
  await axios_1.default.delete(`https://graph.microsoft.com/v1.0/subscriptions/${subscriptionId}`, {
168
175
  headers: {
169
176
  Authorization: `Bearer ${accessToken}`,
@@ -187,31 +194,15 @@ let CalendarService = CalendarService_1 = class CalendarService {
187
194
  }
188
195
  async renewSubscriptions() {
189
196
  try {
190
- const expiringLimit = new Date();
191
- expiringLimit.setHours(expiringLimit.getHours() + 24);
192
- const subscriptions = await this.webhookSubscriptionRepository.findSubscriptionsNeedingRenewal(24);
193
- if (subscriptions.length === 0) {
197
+ const expiringSubscriptions = await this.webhookSubscriptionRepository.findSubscriptionsNeedingRenewal(24);
198
+ if (expiringSubscriptions.length === 0) {
194
199
  this.logger.debug('No subscriptions need renewal');
195
200
  return;
196
201
  }
197
- this.logger.log(`Found ${String(subscriptions.length)} subscriptions that need renewal`);
198
- for (const subscription of subscriptions) {
202
+ this.logger.log(`Found ${String(expiringSubscriptions.length)} subscriptions that need renewal`);
203
+ for (const subscription of expiringSubscriptions) {
199
204
  try {
200
- let accessToken = subscription.accessToken;
201
- if (subscription.refreshToken) {
202
- try {
203
- const tokenResponse = await this.microsoftAuthService.refreshAccessToken(subscription.refreshToken, subscription.userId);
204
- accessToken = tokenResponse.access_token;
205
- const newExpirationDate = new Date();
206
- newExpirationDate.setHours(newExpirationDate.getHours() + 72);
207
- await this.webhookSubscriptionRepository.updateSubscriptionExpiration(subscription.subscriptionId, newExpirationDate, accessToken);
208
- }
209
- catch (refreshError) {
210
- this.logger.error(`Failed to refresh token for subscription ${subscription.subscriptionId}:`, refreshError);
211
- continue;
212
- }
213
- }
214
- await this.renewWebhookSubscription(subscription.subscriptionId, accessToken);
205
+ await this.renewWebhookSubscriptionByUserId(subscription.subscriptionId, subscription.userId);
215
206
  }
216
207
  catch (error) {
217
208
  this.logger.error(`Failed to renew subscription ${subscription.subscriptionId}:`, error);