@hed-hog/core 0.0.356 → 0.0.358

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 (250) hide show
  1. package/dist/auth/guards/auth.guard.d.ts +6 -1
  2. package/dist/auth/guards/auth.guard.d.ts.map +1 -1
  3. package/dist/auth/guards/auth.guard.js +33 -2
  4. package/dist/auth/guards/auth.guard.js.map +1 -1
  5. package/dist/file/file.controller.d.ts +4 -2
  6. package/dist/file/file.controller.d.ts.map +1 -1
  7. package/dist/file/file.controller.js +44 -38
  8. package/dist/file/file.controller.js.map +1 -1
  9. package/dist/file/file.service.d.ts +2 -2
  10. package/dist/file/file.service.d.ts.map +1 -1
  11. package/dist/file/file.service.js +25 -42
  12. package/dist/file/file.service.js.map +1 -1
  13. package/dist/file/provider/azure.provider.d.ts.map +1 -1
  14. package/dist/file/provider/azure.provider.js +10 -15
  15. package/dist/file/provider/azure.provider.js.map +1 -1
  16. package/dist/file/provider/gcs.provider.d.ts.map +1 -1
  17. package/dist/file/provider/gcs.provider.js +8 -9
  18. package/dist/file/provider/gcs.provider.js.map +1 -1
  19. package/dist/file/provider/local.provider.d.ts.map +1 -1
  20. package/dist/file/provider/local.provider.js +11 -10
  21. package/dist/file/provider/local.provider.js.map +1 -1
  22. package/dist/file/provider/provider.factory.d.ts +1 -1
  23. package/dist/file/provider/provider.factory.d.ts.map +1 -1
  24. package/dist/file/provider/provider.factory.js +16 -6
  25. package/dist/file/provider/provider.factory.js.map +1 -1
  26. package/dist/file/provider/s3.provider.d.ts.map +1 -1
  27. package/dist/file/provider/s3.provider.js +4 -20
  28. package/dist/file/provider/s3.provider.js.map +1 -1
  29. package/dist/file/provider/spaces.provider.d.ts.map +1 -1
  30. package/dist/file/provider/spaces.provider.js +4 -19
  31. package/dist/file/provider/spaces.provider.js.map +1 -1
  32. package/dist/integration-profile/integration-profile.controller.d.ts +1 -1
  33. package/dist/integration-profile/integration-profile.controller.d.ts.map +1 -1
  34. package/dist/integration-profile/integration-profile.controller.js +4 -3
  35. package/dist/integration-profile/integration-profile.controller.js.map +1 -1
  36. package/dist/integration-profile/integration-profile.service.d.ts +1 -1
  37. package/dist/integration-profile/integration-profile.service.d.ts.map +1 -1
  38. package/dist/integration-profile/integration-profile.service.js +7 -4
  39. package/dist/integration-profile/integration-profile.service.js.map +1 -1
  40. package/dist/integration-profile/integration-profile.utils.d.ts +6 -0
  41. package/dist/integration-profile/integration-profile.utils.d.ts.map +1 -1
  42. package/dist/integration-profile/integration-profile.utils.js +9 -0
  43. package/dist/integration-profile/integration-profile.utils.js.map +1 -1
  44. package/dist/mail/mail.module.d.ts.map +1 -1
  45. package/dist/mail/mail.module.js +9 -4
  46. package/dist/mail/mail.module.js.map +1 -1
  47. package/dist/mail/mail.service.d.ts +2 -1
  48. package/dist/mail/mail.service.d.ts.map +1 -1
  49. package/dist/mail/mail.service.js +11 -7
  50. package/dist/mail/mail.service.js.map +1 -1
  51. package/dist/mcp/guards/mcp-auth.guard.js +1 -1
  52. package/dist/mcp/guards/mcp-auth.guard.js.map +1 -1
  53. package/dist/mcp/mcp-api-key.controller.d.ts +2 -0
  54. package/dist/mcp/mcp-api-key.controller.d.ts.map +1 -1
  55. package/dist/mcp/mcp-api-key.controller.js +1 -1
  56. package/dist/mcp/mcp-api-key.controller.js.map +1 -1
  57. package/dist/mcp/mcp-api-key.service.d.ts +2 -1
  58. package/dist/mcp/mcp-api-key.service.d.ts.map +1 -1
  59. package/dist/mcp/mcp-api-key.service.js +6 -2
  60. package/dist/mcp/mcp-api-key.service.js.map +1 -1
  61. package/dist/mcp/mcp.module.d.ts.map +1 -1
  62. package/dist/mcp/mcp.module.js +1 -3
  63. package/dist/mcp/mcp.module.js.map +1 -1
  64. package/dist/oauth/interfaces/OAuthProvider.d.ts +1 -1
  65. package/dist/oauth/interfaces/OAuthProvider.d.ts.map +1 -1
  66. package/dist/oauth/oauth.controller.d.ts +4 -1
  67. package/dist/oauth/oauth.controller.d.ts.map +1 -1
  68. package/dist/oauth/oauth.controller.js +31 -5
  69. package/dist/oauth/oauth.controller.js.map +1 -1
  70. package/dist/oauth/oauth.service.d.ts +12 -1
  71. package/dist/oauth/oauth.service.d.ts.map +1 -1
  72. package/dist/oauth/oauth.service.js +125 -23
  73. package/dist/oauth/oauth.service.js.map +1 -1
  74. package/dist/oauth/providers/abstract.provider.d.ts +1 -1
  75. package/dist/oauth/providers/abstract.provider.d.ts.map +1 -1
  76. package/dist/oauth/providers/facebook.provider.d.ts +5 -2
  77. package/dist/oauth/providers/facebook.provider.d.ts.map +1 -1
  78. package/dist/oauth/providers/facebook.provider.js +34 -19
  79. package/dist/oauth/providers/facebook.provider.js.map +1 -1
  80. package/dist/oauth/providers/github.provider.d.ts +6 -2
  81. package/dist/oauth/providers/github.provider.d.ts.map +1 -1
  82. package/dist/oauth/providers/github.provider.js +43 -20
  83. package/dist/oauth/providers/github.provider.js.map +1 -1
  84. package/dist/oauth/providers/google.provider.d.ts +5 -2
  85. package/dist/oauth/providers/google.provider.d.ts.map +1 -1
  86. package/dist/oauth/providers/google.provider.js +34 -19
  87. package/dist/oauth/providers/google.provider.js.map +1 -1
  88. package/dist/oauth/providers/microsoft-entra-id.provider.d.ts +5 -2
  89. package/dist/oauth/providers/microsoft-entra-id.provider.d.ts.map +1 -1
  90. package/dist/oauth/providers/microsoft-entra-id.provider.js +43 -40
  91. package/dist/oauth/providers/microsoft-entra-id.provider.js.map +1 -1
  92. package/dist/oauth/providers/microsoft.provider.d.ts +5 -2
  93. package/dist/oauth/providers/microsoft.provider.d.ts.map +1 -1
  94. package/dist/oauth/providers/microsoft.provider.js +34 -19
  95. package/dist/oauth/providers/microsoft.provider.js.map +1 -1
  96. package/dist/profile/profile.controller.js +1 -1
  97. package/dist/profile/profile.controller.js.map +1 -1
  98. package/dist/security/security.service.d.ts +2 -0
  99. package/dist/security/security.service.d.ts.map +1 -1
  100. package/dist/security/security.service.js +21 -0
  101. package/dist/security/security.service.js.map +1 -1
  102. package/dist/setting/setting.service.d.ts +26 -1
  103. package/dist/setting/setting.service.d.ts.map +1 -1
  104. package/dist/setting/setting.service.js +240 -5
  105. package/dist/setting/setting.service.js.map +1 -1
  106. package/dist/user/user.controller.d.ts +2 -1
  107. package/dist/user/user.controller.d.ts.map +1 -1
  108. package/dist/user/user.controller.js +5 -4
  109. package/dist/user/user.controller.js.map +1 -1
  110. package/dist/user/user.service.d.ts +4 -2
  111. package/dist/user/user.service.d.ts.map +1 -1
  112. package/dist/user/user.service.js +19 -4
  113. package/dist/user/user.service.js.map +1 -1
  114. package/dist/webhook-integration/dto/webhook-action.dto.d.ts +17 -2
  115. package/dist/webhook-integration/dto/webhook-action.dto.d.ts.map +1 -1
  116. package/dist/webhook-integration/dto/webhook-action.dto.js +93 -2
  117. package/dist/webhook-integration/dto/webhook-action.dto.js.map +1 -1
  118. package/dist/webhook-integration/webhook-command.registry.d.ts +15 -0
  119. package/dist/webhook-integration/webhook-command.registry.d.ts.map +1 -0
  120. package/dist/webhook-integration/webhook-command.registry.js +36 -0
  121. package/dist/webhook-integration/webhook-command.registry.js.map +1 -0
  122. package/dist/webhook-integration/webhook-integration.controller.d.ts +19 -0
  123. package/dist/webhook-integration/webhook-integration.controller.d.ts.map +1 -1
  124. package/dist/webhook-integration/webhook-integration.controller.js +38 -0
  125. package/dist/webhook-integration/webhook-integration.controller.js.map +1 -1
  126. package/dist/webhook-integration/webhook-integration.module.d.ts.map +1 -1
  127. package/dist/webhook-integration/webhook-integration.module.js +5 -0
  128. package/dist/webhook-integration/webhook-integration.module.js.map +1 -1
  129. package/dist/webhook-integration/webhook-integration.service.d.ts +25 -1
  130. package/dist/webhook-integration/webhook-integration.service.d.ts.map +1 -1
  131. package/dist/webhook-integration/webhook-integration.service.js +332 -23
  132. package/dist/webhook-integration/webhook-integration.service.js.map +1 -1
  133. package/hedhog/data/integration_provider.yaml +16 -0
  134. package/hedhog/data/menu.yaml +0 -16
  135. package/hedhog/data/route.yaml +32 -383
  136. package/hedhog/data/setting_group.yaml +179 -174
  137. package/hedhog/data/setting_subgroup.yaml +16 -0
  138. package/hedhog/frontend/app/account/components/tokens.tsx.ejs +421 -0
  139. package/hedhog/frontend/app/account/layout.tsx.ejs +6 -3
  140. package/hedhog/frontend/app/account/mcp-tokens/page.tsx.ejs +2 -2
  141. package/hedhog/frontend/app/account/tokens/page.tsx.ejs +5 -0
  142. package/hedhog/frontend/app/configurations/[slug]/components/setting-field.tsx.ejs +414 -76
  143. package/hedhog/frontend/app/configurations/layout.tsx.ejs +1 -1
  144. package/hedhog/frontend/app/dashboard/dashboard-home-tabs.tsx.ejs +3 -1
  145. package/hedhog/frontend/app/integration/profiles/page.tsx.ejs +186 -18
  146. package/hedhog/frontend/app/integrations-webhooks/page.tsx.ejs +597 -21
  147. package/hedhog/frontend/app/mail/profiles/page.tsx.ejs +2 -2
  148. package/hedhog/frontend/app/setting-list/page.tsx.ejs +229 -395
  149. package/hedhog/frontend/messages/en.json +67 -3
  150. package/hedhog/frontend/messages/pt.json +67 -3
  151. package/hedhog/table/file.yaml +1 -1
  152. package/hedhog/table/mcp_api_key.yaml +4 -0
  153. package/hedhog/table/webhook_action.yaml +57 -1
  154. package/package.json +5 -4
  155. package/src/auth/guards/auth.guard.ts +32 -0
  156. package/src/file/file.controller.ts +51 -42
  157. package/src/file/file.service.ts +31 -52
  158. package/src/file/provider/azure.provider.ts +14 -28
  159. package/src/file/provider/gcs.provider.ts +9 -9
  160. package/src/file/provider/local.provider.ts +10 -13
  161. package/src/file/provider/provider.factory.ts +19 -7
  162. package/src/file/provider/s3.provider.ts +4 -20
  163. package/src/file/provider/spaces.provider.ts +4 -19
  164. package/src/integration-profile/integration-profile.controller.ts +2 -0
  165. package/src/integration-profile/integration-profile.service.ts +7 -2
  166. package/src/integration-profile/integration-profile.utils.ts +17 -0
  167. package/src/mail/mail.module.ts +14 -4
  168. package/src/mail/mail.service.ts +12 -7
  169. package/src/mcp/guards/mcp-auth.guard.ts +1 -1
  170. package/src/mcp/mcp-api-key.controller.ts +2 -2
  171. package/src/mcp/mcp-api-key.service.ts +6 -2
  172. package/src/mcp/mcp.module.ts +1 -3
  173. package/src/oauth/interfaces/OAuthProvider.ts +1 -1
  174. package/src/oauth/oauth.controller.ts +30 -2
  175. package/src/oauth/oauth.service.ts +194 -35
  176. package/src/oauth/providers/abstract.provider.ts +1 -1
  177. package/src/oauth/providers/facebook.provider.ts +36 -20
  178. package/src/oauth/providers/github.provider.ts +46 -23
  179. package/src/oauth/providers/google.provider.ts +36 -20
  180. package/src/oauth/providers/microsoft-entra-id.provider.ts +42 -46
  181. package/src/oauth/providers/microsoft.provider.ts +36 -21
  182. package/src/profile/profile.controller.ts +2 -2
  183. package/src/security/security.service.ts +34 -1
  184. package/src/setting/setting.service.ts +307 -7
  185. package/src/user/user.controller.ts +4 -1
  186. package/src/user/user.service.ts +20 -2
  187. package/src/webhook-integration/dto/webhook-action.dto.ts +85 -4
  188. package/src/webhook-integration/webhook-command.registry.ts +42 -0
  189. package/src/webhook-integration/webhook-integration.controller.ts +20 -0
  190. package/src/webhook-integration/webhook-integration.module.ts +50 -45
  191. package/src/webhook-integration/webhook-integration.service.ts +374 -11
  192. package/dist/mail-profile/dto/create.dto.d.ts +0 -23
  193. package/dist/mail-profile/dto/create.dto.d.ts.map +0 -1
  194. package/dist/mail-profile/dto/create.dto.js +0 -139
  195. package/dist/mail-profile/dto/create.dto.js.map +0 -1
  196. package/dist/mail-profile/dto/update.dto.d.ts +0 -6
  197. package/dist/mail-profile/dto/update.dto.d.ts.map +0 -1
  198. package/dist/mail-profile/dto/update.dto.js +0 -9
  199. package/dist/mail-profile/dto/update.dto.js.map +0 -1
  200. package/dist/mail-profile/mail-profile.controller.d.ts +0 -94
  201. package/dist/mail-profile/mail-profile.controller.d.ts.map +0 -1
  202. package/dist/mail-profile/mail-profile.controller.js +0 -95
  203. package/dist/mail-profile/mail-profile.controller.js.map +0 -1
  204. package/dist/mail-profile/mail-profile.module.d.ts +0 -3
  205. package/dist/mail-profile/mail-profile.module.d.ts.map +0 -1
  206. package/dist/mail-profile/mail-profile.module.js +0 -31
  207. package/dist/mail-profile/mail-profile.module.js.map +0 -1
  208. package/dist/mail-profile/mail-profile.service.d.ts +0 -109
  209. package/dist/mail-profile/mail-profile.service.d.ts.map +0 -1
  210. package/dist/mail-profile/mail-profile.service.js +0 -278
  211. package/dist/mail-profile/mail-profile.service.js.map +0 -1
  212. package/dist/mcp/tools/core-mail-profile.mcp-tools.d.ts +0 -20
  213. package/dist/mcp/tools/core-mail-profile.mcp-tools.d.ts.map +0 -1
  214. package/dist/mcp/tools/core-mail-profile.mcp-tools.js +0 -96
  215. package/dist/mcp/tools/core-mail-profile.mcp-tools.js.map +0 -1
  216. package/dist/whatsapp-profile/dto/create.dto.d.ts +0 -11
  217. package/dist/whatsapp-profile/dto/create.dto.d.ts.map +0 -1
  218. package/dist/whatsapp-profile/dto/create.dto.js +0 -55
  219. package/dist/whatsapp-profile/dto/create.dto.js.map +0 -1
  220. package/dist/whatsapp-profile/dto/update.dto.d.ts +0 -6
  221. package/dist/whatsapp-profile/dto/update.dto.d.ts.map +0 -1
  222. package/dist/whatsapp-profile/dto/update.dto.js +0 -9
  223. package/dist/whatsapp-profile/dto/update.dto.js.map +0 -1
  224. package/dist/whatsapp-profile/whatsapp-profile.controller.d.ts +0 -54
  225. package/dist/whatsapp-profile/whatsapp-profile.controller.d.ts.map +0 -1
  226. package/dist/whatsapp-profile/whatsapp-profile.controller.js +0 -85
  227. package/dist/whatsapp-profile/whatsapp-profile.controller.js.map +0 -1
  228. package/dist/whatsapp-profile/whatsapp-profile.module.d.ts +0 -3
  229. package/dist/whatsapp-profile/whatsapp-profile.module.d.ts.map +0 -1
  230. package/dist/whatsapp-profile/whatsapp-profile.module.js +0 -26
  231. package/dist/whatsapp-profile/whatsapp-profile.module.js.map +0 -1
  232. package/dist/whatsapp-profile/whatsapp-profile.service.d.ts +0 -63
  233. package/dist/whatsapp-profile/whatsapp-profile.service.d.ts.map +0 -1
  234. package/dist/whatsapp-profile/whatsapp-profile.service.js +0 -138
  235. package/dist/whatsapp-profile/whatsapp-profile.service.js.map +0 -1
  236. package/hedhog/data/mail_profile.yaml +0 -18
  237. package/hedhog/data/whatsapp_profile.yaml +0 -6
  238. package/hedhog/table/mail_profile.yaml +0 -75
  239. package/hedhog/table/whatsapp_profile.yaml +0 -26
  240. package/src/mail-profile/dto/create.dto.ts +0 -145
  241. package/src/mail-profile/dto/update.dto.ts +0 -4
  242. package/src/mail-profile/mail-profile.controller.ts +0 -56
  243. package/src/mail-profile/mail-profile.module.ts +0 -18
  244. package/src/mail-profile/mail-profile.service.ts +0 -308
  245. package/src/mcp/tools/core-mail-profile.mcp-tools.ts +0 -69
  246. package/src/whatsapp-profile/dto/create.dto.ts +0 -36
  247. package/src/whatsapp-profile/dto/update.dto.ts +0 -4
  248. package/src/whatsapp-profile/whatsapp-profile.controller.ts +0 -51
  249. package/src/whatsapp-profile/whatsapp-profile.module.ts +0 -13
  250. package/src/whatsapp-profile/whatsapp-profile.service.ts +0 -160
@@ -13,49 +13,63 @@ var __param = (this && this.__param) || function (paramIndex, decorator) {
13
13
  };
14
14
  Object.defineProperty(exports, "__esModule", { value: true });
15
15
  exports.FacebookProvider = void 0;
16
+ const api_prisma_1 = require("@hed-hog/api-prisma");
16
17
  const axios_1 = require("@nestjs/axios");
17
18
  const common_1 = require("@nestjs/common");
19
+ const integration_profile_utils_1 = require("../../integration-profile/integration-profile.utils");
18
20
  const setting_service_1 = require("../../setting/setting.service");
19
21
  const abstract_provider_1 = require("./abstract.provider");
20
22
  let FacebookProvider = class FacebookProvider extends abstract_provider_1.BaseOAuthProvider {
21
- constructor(http, setting) {
23
+ constructor(http, setting, prisma) {
22
24
  super(http);
23
25
  this.setting = setting;
26
+ this.prisma = prisma;
24
27
  }
25
28
  getProviderType() {
26
29
  return 'FACEBOOK';
27
30
  }
28
- async getAuthUrl(callbackPath) {
31
+ async loadConfig() {
29
32
  var _a;
30
33
  const settings = await this.setting.getSettingValues([
31
- 'facebook_client_id',
32
- 'facebook_client_secret',
33
- 'facebook_scopes',
34
+ 'oauth-facebook-profile-id',
34
35
  'url',
35
36
  ]);
36
- const redirectURI = new URL(callbackPath, settings['url']).toString();
37
+ const profileId = Number(settings['oauth-facebook-profile-id']);
38
+ if (!profileId)
39
+ throw new common_1.BadRequestException('Facebook OAuth profile not configured.');
40
+ const profile = await this.prisma.integration_profile.findUnique({
41
+ where: { id: profileId },
42
+ include: { integration_provider: { select: { slug: true } } },
43
+ });
44
+ if (!profile)
45
+ throw new common_1.BadRequestException('Facebook OAuth profile not found.');
46
+ const { clientId, clientSecret } = (0, integration_profile_utils_1.buildOAuthConfigFromIntegration)(profile.integration_provider.slug, profile.config);
47
+ return { clientId, clientSecret, baseUrl: String((_a = settings['url']) !== null && _a !== void 0 ? _a : '') };
48
+ }
49
+ async getAuthUrl(callbackPath) {
50
+ var _a;
51
+ const { clientId, baseUrl } = await this.loadConfig();
52
+ const settings = await this.setting.getSettingValues(['oauth-facebook-scopes']);
53
+ const scopes = (_a = settings['oauth-facebook-scopes']) !== null && _a !== void 0 ? _a : ['email'];
54
+ const redirectURI = new URL(callbackPath, baseUrl).toString();
37
55
  const params = new URLSearchParams({
38
- client_id: settings['facebook_client_id'],
56
+ client_id: clientId,
39
57
  redirect_uri: redirectURI,
40
58
  response_type: 'code',
41
- scope: ((_a = settings['facebook_scopes']) !== null && _a !== void 0 ? _a : ['email']).join(','),
59
+ scope: scopes.join(','),
42
60
  auth_type: 'rerequest',
43
61
  });
44
62
  return `https://www.facebook.com/v17.0/dialog/oauth?${params}`;
45
63
  }
46
- async getProfile(code, type) {
47
- const settings = await this.setting.getSettingValues([
48
- 'facebook_client_id',
49
- 'facebook_client_secret',
50
- 'facebook_scopes',
51
- 'url',
52
- ]);
64
+ async getProfile(code, type, redirectUri) {
65
+ const { clientId, clientSecret, baseUrl } = await this.loadConfig();
66
+ const resolvedRedirectUri = (redirectUri === null || redirectUri === void 0 ? void 0 : redirectUri.trim()) || `${baseUrl}/oauth/facebook/callback/${type}`;
53
67
  const token = await this.fetchToken({
54
68
  code,
55
69
  url: 'https://graph.facebook.com/v17.0/oauth/access_token',
56
- clientId: settings['facebook_client_id'],
57
- clientSecret: settings['facebook_client_secret'],
58
- redirectUri: `${settings['url']}/oauth/facebook/callback/${type}`,
70
+ clientId,
71
+ clientSecret,
72
+ redirectUri: resolvedRedirectUri,
59
73
  });
60
74
  const profile = await this.fetchProfile(token.access_token, 'https://graph.facebook.com/me?fields=id,name,email,gender,birthday,picture');
61
75
  return Object.assign(Object.assign({}, profile), { oauth_tokens: {
@@ -71,6 +85,7 @@ exports.FacebookProvider = FacebookProvider = __decorate([
71
85
  (0, common_1.Injectable)(),
72
86
  __param(1, (0, common_1.Inject)((0, common_1.forwardRef)(() => setting_service_1.SettingService))),
73
87
  __metadata("design:paramtypes", [axios_1.HttpService,
74
- setting_service_1.SettingService])
88
+ setting_service_1.SettingService,
89
+ api_prisma_1.PrismaService])
75
90
  ], FacebookProvider);
76
91
  //# sourceMappingURL=facebook.provider.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"facebook.provider.js","sourceRoot":"","sources":["../../../src/oauth/providers/facebook.provider.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,yCAA4C;AAC5C,2CAAgE;AAChE,mEAA+D;AAC/D,2DAAwD;AAGjD,IAAM,gBAAgB,GAAtB,MAAM,gBACX,SAAQ,qCAAiB;IAEzB,YACE,IAAiB,EAEA,OAAuB;QAExC,KAAK,CAAC,IAAI,CAAC,CAAC;QAFK,YAAO,GAAP,OAAO,CAAgB;IAG1C,CAAC;IAED,eAAe;QACb,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,YAAoB;;QACnC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC;YACnD,oBAAoB;YACpB,wBAAwB;YACxB,iBAAiB;YACjB,KAAK;SACN,CAAC,CAAC;QAEH,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,YAAY,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;QAEtE,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC;YACjC,SAAS,EAAE,QAAQ,CAAC,oBAAoB,CAAC;YACzC,YAAY,EAAE,WAAW;YACzB,aAAa,EAAE,MAAM;YACrB,KAAK,EAAE,CAAC,MAAA,QAAQ,CAAC,iBAAiB,CAAC,mCAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;YAC3D,SAAS,EAAE,WAAW;SACvB,CAAC,CAAC;QAEH,OAAO,+CAA+C,MAAM,EAAE,CAAC;IACjE,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,IAAY,EAAE,IAAY;QAEzC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC;YACnD,oBAAoB;YACpB,wBAAwB;YACxB,iBAAiB;YACjB,KAAK;SACN,CAAC,CAAC;QAEH,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC;YAClC,IAAI;YACJ,GAAG,EAAE,qDAAqD;YAC1D,QAAQ,EAAE,QAAQ,CAAC,oBAAoB,CAAC;YACxC,YAAY,EAAE,QAAQ,CAAC,wBAAwB,CAAC;YAChD,WAAW,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC,4BAA4B,IAAI,EAAE;SAClE,CAAC,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,YAAY,CACrC,KAAK,CAAC,YAAY,EAClB,4EAA4E,CAC7E,CAAC;QACF,uCACK,OAAO,KACV,YAAY,EAAE;gBACZ,YAAY,EAAE,KAAK,CAAC,YAAY;gBAChC,aAAa,EAAE,KAAK,CAAC,aAAa;gBAClC,UAAU,EAAE,KAAK,CAAC,UAAU;gBAC5B,UAAU,EAAE,KAAK,CAAC,UAAU;aAC7B,IACD;IACJ,CAAC;CACF,CAAA;AAlEY,4CAAgB;2BAAhB,gBAAgB;IAD5B,IAAA,mBAAU,GAAE;IAMR,WAAA,IAAA,eAAM,EAAC,IAAA,mBAAU,EAAC,GAAG,EAAE,CAAC,gCAAc,CAAC,CAAC,CAAA;qCADnC,mBAAW;QAES,gCAAc;GAN/B,gBAAgB,CAkE5B"}
1
+ {"version":3,"file":"facebook.provider.js","sourceRoot":"","sources":["../../../src/oauth/providers/facebook.provider.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,16 @@
1
+ import { PrismaService } from '@hed-hog/api-prisma';
1
2
  import { HttpService } from '@nestjs/axios';
2
3
  import { SettingService } from '../../setting/setting.service';
3
4
  import { BaseOAuthProvider } from './abstract.provider';
4
5
  export declare class GithubProvider extends BaseOAuthProvider {
5
6
  private readonly setting;
6
- constructor(http: HttpService, setting: SettingService);
7
+ private readonly prisma;
8
+ private isAbsoluteCallbackPath;
9
+ constructor(http: HttpService, setting: SettingService, prisma: PrismaService);
7
10
  getProviderType(): string;
11
+ private loadConfig;
8
12
  getAuthUrl(callbackPath: string): Promise<string>;
9
- getProfile(code: string): Promise<{
13
+ getProfile(code: string, _type?: string, redirectUri?: string): Promise<{
10
14
  id: any;
11
15
  email: any;
12
16
  name: any;
@@ -1 +1 @@
1
- {"version":3,"file":"github.provider.d.ts","sourceRoot":"","sources":["../../../src/oauth/providers/github.provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD,qBACa,cACX,SAAQ,iBAAiB;IAKvB,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAFxB,IAAI,EAAE,WAAW,EAEA,OAAO,EAAE,cAAc;IAK1C,eAAe;IAIT,UAAU,CAAC,YAAY,EAAE,MAAM;IAwB/B,UAAU,CAAC,IAAI,EAAE,MAAM;;;;;;;;;;;;CAuE9B"}
1
+ {"version":3,"file":"github.provider.d.ts","sourceRoot":"","sources":["../../../src/oauth/providers/github.provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAG5C,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD,qBACa,cAAe,SAAQ,iBAAiB;IASjD,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,MAAM;IARzB,OAAO,CAAC,sBAAsB;gBAK5B,IAAI,EAAE,WAAW,EAEA,OAAO,EAAE,cAAc,EACvB,MAAM,EAAE,aAAa;IAKxC,eAAe;YAID,UAAU;IAqBlB,UAAU,CAAC,YAAY,EAAE,MAAM;IAuB/B,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM;;;;;;;;;;;;CAoEpE"}
@@ -13,31 +13,56 @@ var __param = (this && this.__param) || function (paramIndex, decorator) {
13
13
  };
14
14
  Object.defineProperty(exports, "__esModule", { value: true });
15
15
  exports.GithubProvider = void 0;
16
+ const api_prisma_1 = require("@hed-hog/api-prisma");
16
17
  const axios_1 = require("@nestjs/axios");
17
18
  const common_1 = require("@nestjs/common");
19
+ const integration_profile_utils_1 = require("../../integration-profile/integration-profile.utils");
18
20
  const setting_service_1 = require("../../setting/setting.service");
19
21
  const abstract_provider_1 = require("./abstract.provider");
20
22
  let GithubProvider = class GithubProvider extends abstract_provider_1.BaseOAuthProvider {
21
- constructor(http, setting) {
23
+ isAbsoluteCallbackPath(value) {
24
+ return /^[a-z][a-z\d+.-]*:/i.test(String(value || '').trim());
25
+ }
26
+ constructor(http, setting, prisma) {
22
27
  super(http);
23
28
  this.setting = setting;
29
+ this.prisma = prisma;
24
30
  }
25
31
  getProviderType() {
26
32
  return 'GITHUB';
27
33
  }
28
- async getAuthUrl(callbackPath) {
34
+ async loadConfig() {
35
+ var _a;
29
36
  const settings = await this.setting.getSettingValues([
30
- 'github_client_id',
31
- 'github_client_secret',
32
- 'github_scopes',
37
+ 'oauth-github-profile-id',
33
38
  'api-url',
34
39
  ]);
40
+ const profileId = Number(settings['oauth-github-profile-id']);
41
+ if (!profileId)
42
+ throw new common_1.BadRequestException('GitHub OAuth profile not configured.');
43
+ const profile = await this.prisma.integration_profile.findUnique({
44
+ where: { id: profileId },
45
+ include: { integration_provider: { select: { slug: true } } },
46
+ });
47
+ if (!profile)
48
+ throw new common_1.BadRequestException('GitHub OAuth profile not found.');
49
+ const { clientId, clientSecret } = (0, integration_profile_utils_1.buildOAuthConfigFromIntegration)(profile.integration_provider.slug, profile.config);
50
+ return { clientId, clientSecret, apiUrl: String((_a = settings['api-url']) !== null && _a !== void 0 ? _a : '') };
51
+ }
52
+ async getAuthUrl(callbackPath) {
53
+ var _a;
54
+ const { clientId, apiUrl } = await this.loadConfig();
55
+ const settings = await this.setting.getSettingValues(['oauth-github-scopes']);
56
+ const scopes = (_a = settings['oauth-github-scopes']) !== null && _a !== void 0 ? _a : ['read:user', 'user:email'];
35
57
  const fixedCallbackPath = '/oauth/github/callback';
36
- const redirectURI = new URL(fixedCallbackPath, settings['api-url']).toString();
37
- const scopes = settings['github_scopes'];
38
- const type = callbackPath.split('/').pop() || 'login';
58
+ const redirectURI = this.isAbsoluteCallbackPath(callbackPath)
59
+ ? callbackPath
60
+ : new URL(fixedCallbackPath, apiUrl).toString();
61
+ const type = this.isAbsoluteCallbackPath(callbackPath)
62
+ ? 'login'
63
+ : callbackPath.split('/').pop() || 'login';
39
64
  const params = new URLSearchParams({
40
- client_id: settings['github_client_id'],
65
+ client_id: clientId,
41
66
  redirect_uri: redirectURI,
42
67
  scope: scopes.join(' '),
43
68
  allow_signup: 'true',
@@ -45,18 +70,15 @@ let GithubProvider = class GithubProvider extends abstract_provider_1.BaseOAuthP
45
70
  });
46
71
  return `https://github.com/login/oauth/authorize?${params.toString()}`;
47
72
  }
48
- async getProfile(code) {
49
- const settings = await this.setting.getSettingValues([
50
- 'github_client_id',
51
- 'github_client_secret',
52
- 'github_scopes',
53
- 'api-url',
54
- ]);
73
+ async getProfile(code, _type, redirectUri) {
74
+ const { clientId, clientSecret, apiUrl } = await this.loadConfig();
55
75
  const fixedCallbackPath = '/oauth/github/callback';
56
- const redirectURI = new URL(fixedCallbackPath, settings['api-url'].replace(":3200", ":3100")).toString();
76
+ const redirectURI = (redirectUri === null || redirectUri === void 0 ? void 0 : redirectUri.trim())
77
+ ? redirectUri.trim()
78
+ : new URL(fixedCallbackPath, apiUrl.replace(':3200', ':3100')).toString();
57
79
  const tokenResponse = await this.http.axiosRef.post('https://github.com/login/oauth/access_token', {
58
- client_id: settings['github_client_id'],
59
- client_secret: settings['github_client_secret'],
80
+ client_id: clientId,
81
+ client_secret: clientSecret,
60
82
  code,
61
83
  redirect_uri: redirectURI,
62
84
  }, {
@@ -103,6 +125,7 @@ exports.GithubProvider = GithubProvider = __decorate([
103
125
  (0, common_1.Injectable)(),
104
126
  __param(1, (0, common_1.Inject)((0, common_1.forwardRef)(() => setting_service_1.SettingService))),
105
127
  __metadata("design:paramtypes", [axios_1.HttpService,
106
- setting_service_1.SettingService])
128
+ setting_service_1.SettingService,
129
+ api_prisma_1.PrismaService])
107
130
  ], GithubProvider);
108
131
  //# sourceMappingURL=github.provider.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"github.provider.js","sourceRoot":"","sources":["../../../src/oauth/providers/github.provider.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"github.provider.js","sourceRoot":"","sources":["../../../src/oauth/providers/github.provider.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,15 @@
1
+ import { PrismaService } from '@hed-hog/api-prisma';
1
2
  import { HttpService } from '@nestjs/axios';
2
3
  import { SettingService } from '../../setting/setting.service';
3
4
  import { BaseOAuthProvider } from './abstract.provider';
4
5
  export declare class GoogleProvider extends BaseOAuthProvider {
5
6
  private readonly setting;
6
- constructor(http: HttpService, setting: SettingService);
7
+ private readonly prisma;
8
+ constructor(http: HttpService, setting: SettingService, prisma: PrismaService);
7
9
  getProviderType(): string;
10
+ private loadConfig;
8
11
  getAuthUrl(callbackPath: string): Promise<string>;
9
- getProfile(code: string, type: string): Promise<any>;
12
+ getProfile(code: string, type: string, redirectUri?: string): Promise<any>;
10
13
  private getGoogleProfileFromAccessToken;
11
14
  }
12
15
  //# sourceMappingURL=google.provider.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"google.provider.d.ts","sourceRoot":"","sources":["../../../src/oauth/providers/google.provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD,qBACa,cAAe,SAAQ,iBAAiB;IAKjD,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAFxB,IAAI,EAAE,WAAW,EAEA,OAAO,EAAE,cAAc;IAK1C,eAAe;IAIT,UAAU,CAAC,YAAY,EAAE,MAAM;IAuB/B,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;YAuC7B,+BAA+B;CA+B9C"}
1
+ {"version":3,"file":"google.provider.d.ts","sourceRoot":"","sources":["../../../src/oauth/providers/google.provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAG5C,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD,qBACa,cAAe,SAAQ,iBAAiB;IAKjD,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAHvB,IAAI,EAAE,WAAW,EAEA,OAAO,EAAE,cAAc,EACvB,MAAM,EAAE,aAAa;IAKxC,eAAe;YAID,UAAU;IAqBlB,UAAU,CAAC,YAAY,EAAE,MAAM;IAkB/B,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM;YAoCnD,+BAA+B;CA+B9C"}
@@ -13,50 +13,64 @@ var __param = (this && this.__param) || function (paramIndex, decorator) {
13
13
  };
14
14
  Object.defineProperty(exports, "__esModule", { value: true });
15
15
  exports.GoogleProvider = void 0;
16
+ const api_prisma_1 = require("@hed-hog/api-prisma");
16
17
  const axios_1 = require("@nestjs/axios");
17
18
  const common_1 = require("@nestjs/common");
19
+ const integration_profile_utils_1 = require("../../integration-profile/integration-profile.utils");
18
20
  const setting_service_1 = require("../../setting/setting.service");
19
21
  const abstract_provider_1 = require("./abstract.provider");
20
22
  let GoogleProvider = class GoogleProvider extends abstract_provider_1.BaseOAuthProvider {
21
- constructor(http, setting) {
23
+ constructor(http, setting, prisma) {
22
24
  super(http);
23
25
  this.setting = setting;
26
+ this.prisma = prisma;
24
27
  }
25
28
  getProviderType() {
26
29
  return 'GOOGLE';
27
30
  }
28
- async getAuthUrl(callbackPath) {
31
+ async loadConfig() {
29
32
  var _a;
30
33
  const settings = await this.setting.getSettingValues([
31
- 'google_client_id',
32
- 'google_client_secret',
33
- 'google_scopes',
34
+ 'oauth-google-profile-id',
34
35
  'url',
35
36
  ]);
36
- const redirectURI = new URL(callbackPath, settings['url']).toString();
37
+ const profileId = Number(settings['oauth-google-profile-id']);
38
+ if (!profileId)
39
+ throw new common_1.BadRequestException('Google OAuth profile not configured.');
40
+ const profile = await this.prisma.integration_profile.findUnique({
41
+ where: { id: profileId },
42
+ include: { integration_provider: { select: { slug: true } } },
43
+ });
44
+ if (!profile)
45
+ throw new common_1.BadRequestException('Google OAuth profile not found.');
46
+ const { clientId, clientSecret } = (0, integration_profile_utils_1.buildOAuthConfigFromIntegration)(profile.integration_provider.slug, profile.config);
47
+ return { clientId, clientSecret, baseUrl: String((_a = settings['url']) !== null && _a !== void 0 ? _a : '') };
48
+ }
49
+ async getAuthUrl(callbackPath) {
50
+ var _a;
51
+ const { clientId, baseUrl } = await this.loadConfig();
52
+ const settings = await this.setting.getSettingValues(['oauth-google-scopes']);
53
+ const scopes = (_a = settings['oauth-google-scopes']) !== null && _a !== void 0 ? _a : ['email', 'profile'];
54
+ const redirectURI = new URL(callbackPath, baseUrl).toString();
37
55
  const params = new URLSearchParams({
38
- client_id: settings['google_client_id'],
56
+ client_id: clientId,
39
57
  redirect_uri: redirectURI,
40
58
  response_type: 'code',
41
- scope: ((_a = settings['google_scopes']) !== null && _a !== void 0 ? _a : []).join(' '),
59
+ scope: scopes.join(' '),
42
60
  access_type: 'offline',
43
61
  prompt: 'consent',
44
62
  });
45
63
  return `https://accounts.google.com/o/oauth2/v2/auth?${params}`;
46
64
  }
47
- async getProfile(code, type) {
48
- const settings = await this.setting.getSettingValues([
49
- 'google_client_id',
50
- 'google_client_secret',
51
- 'google_scopes',
52
- 'url',
53
- ]);
65
+ async getProfile(code, type, redirectUri) {
66
+ const { clientId, clientSecret, baseUrl } = await this.loadConfig();
67
+ const resolvedRedirectUri = (redirectUri === null || redirectUri === void 0 ? void 0 : redirectUri.trim()) || `${baseUrl}/callback/google/${type}`;
54
68
  const token = await this.fetchToken({
55
69
  code,
56
70
  url: 'https://oauth2.googleapis.com/token',
57
- clientId: settings['google_client_id'],
58
- clientSecret: settings['google_client_secret'],
59
- redirectUri: `${settings['url']}/callback/google/${type}`,
71
+ clientId,
72
+ clientSecret,
73
+ redirectUri: resolvedRedirectUri,
60
74
  });
61
75
  const basicProfile = await this.fetchProfile(token.access_token, 'https://www.googleapis.com/oauth2/v2/userinfo');
62
76
  const peopleProfile = await this.getGoogleProfileFromAccessToken(token.access_token);
@@ -92,6 +106,7 @@ exports.GoogleProvider = GoogleProvider = __decorate([
92
106
  (0, common_1.Injectable)(),
93
107
  __param(1, (0, common_1.Inject)((0, common_1.forwardRef)(() => setting_service_1.SettingService))),
94
108
  __metadata("design:paramtypes", [axios_1.HttpService,
95
- setting_service_1.SettingService])
109
+ setting_service_1.SettingService,
110
+ api_prisma_1.PrismaService])
96
111
  ], GoogleProvider);
97
112
  //# sourceMappingURL=google.provider.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"google.provider.js","sourceRoot":"","sources":["../../../src/oauth/providers/google.provider.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"google.provider.js","sourceRoot":"","sources":["../../../src/oauth/providers/google.provider.ts"],"names":[],"mappings":"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"}
@@ -1,14 +1,17 @@
1
+ import { PrismaService } from '@hed-hog/api-prisma';
1
2
  import { HttpService } from '@nestjs/axios';
2
3
  import { SettingService } from '../../setting/setting.service';
3
4
  import { BaseOAuthProvider } from './abstract.provider';
4
5
  export declare class MicrosoftEntraIdProvider extends BaseOAuthProvider {
5
6
  private readonly setting;
7
+ private readonly prisma;
6
8
  private readonly logger;
7
- constructor(http: HttpService, setting: SettingService);
9
+ constructor(http: HttpService, setting: SettingService, prisma: PrismaService);
8
10
  private normalizeBaseUrl;
9
11
  private buildRedirectUri;
10
12
  getProviderType(): string;
13
+ private loadConfig;
11
14
  getAuthUrl(callbackPath: string): Promise<string>;
12
- getProfile(code: string, type: string): Promise<any>;
15
+ getProfile(code: string, type: string, redirectUri?: string): Promise<any>;
13
16
  }
14
17
  //# sourceMappingURL=microsoft-entra-id.provider.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"microsoft-entra-id.provider.d.ts","sourceRoot":"","sources":["../../../src/oauth/providers/microsoft-entra-id.provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD,qBACa,wBAAyB,SAAQ,iBAAiB;IAM3D,OAAO,CAAC,QAAQ,CAAC,OAAO;IAL1B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA6C;gBAGlE,IAAI,EAAE,WAAW,EAEA,OAAO,EAAE,cAAc;IAK1C,OAAO,CAAC,gBAAgB;IAIxB,OAAO,CAAC,gBAAgB;IASxB,eAAe;IAIT,UAAU,CAAC,YAAY,EAAE,MAAM;IAoD/B,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;CA+D3D"}
1
+ {"version":3,"file":"microsoft-entra-id.provider.d.ts","sourceRoot":"","sources":["../../../src/oauth/providers/microsoft-entra-id.provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAG5C,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD,qBACa,wBAAyB,SAAQ,iBAAiB;IAM3D,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,MAAM;IANzB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA6C;gBAGlE,IAAI,EAAE,WAAW,EAEA,OAAO,EAAE,cAAc,EACvB,MAAM,EAAE,aAAa;IAKxC,OAAO,CAAC,gBAAgB;IAIxB,OAAO,CAAC,gBAAgB;IASxB,eAAe;YAID,UAAU;IAwBlB,UAAU,CAAC,YAAY,EAAE,MAAM;IA6B/B,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;CAuDjF"}
@@ -14,14 +14,17 @@ var __param = (this && this.__param) || function (paramIndex, decorator) {
14
14
  var MicrosoftEntraIdProvider_1;
15
15
  Object.defineProperty(exports, "__esModule", { value: true });
16
16
  exports.MicrosoftEntraIdProvider = void 0;
17
+ const api_prisma_1 = require("@hed-hog/api-prisma");
17
18
  const axios_1 = require("@nestjs/axios");
18
19
  const common_1 = require("@nestjs/common");
20
+ const integration_profile_utils_1 = require("../../integration-profile/integration-profile.utils");
19
21
  const setting_service_1 = require("../../setting/setting.service");
20
22
  const abstract_provider_1 = require("./abstract.provider");
21
23
  let MicrosoftEntraIdProvider = MicrosoftEntraIdProvider_1 = class MicrosoftEntraIdProvider extends abstract_provider_1.BaseOAuthProvider {
22
- constructor(http, setting) {
24
+ constructor(http, setting, prisma) {
23
25
  super(http);
24
26
  this.setting = setting;
27
+ this.prisma = prisma;
25
28
  this.logger = new common_1.Logger(MicrosoftEntraIdProvider_1.name);
26
29
  }
27
30
  normalizeBaseUrl(url) {
@@ -37,67 +40,66 @@ let MicrosoftEntraIdProvider = MicrosoftEntraIdProvider_1 = class MicrosoftEntra
37
40
  getProviderType() {
38
41
  return 'MICROSOFT-ENTRA-ID';
39
42
  }
40
- async getAuthUrl(callbackPath) {
43
+ async loadConfig() {
44
+ var _a;
41
45
  const settings = await this.setting.getSettingValues([
42
- 'microsoft_entra_id_client_id',
43
- 'microsoft_entra_id_client_secret',
44
- 'microsoft_entra_id_scopes',
45
- 'microsoft_entra_id_tenant_id',
46
+ 'oauth-microsoft-entra-id-profile-id',
46
47
  'url',
47
48
  ]);
48
- if (!settings['microsoft_entra_id_client_id'] ||
49
- !settings['microsoft_entra_id_client_secret'] ||
50
- !settings['microsoft_entra_id_scopes'] ||
51
- !settings['microsoft_entra_id_tenant_id'] ||
52
- !settings['url']) {
53
- this.logger.error('Microsoft Entra ID OAuth is missing required settings. Verify client id, client secret, scopes, tenant id, and url.');
54
- throw new Error('Microsoft Entra ID OAuth is not configured properly. Please configure microsoft_entra_id_client_id, microsoft_entra_id_client_secret, microsoft_entra_id_scopes, microsoft_entra_id_tenant_id, and url settings.');
49
+ const profileId = Number(settings['oauth-microsoft-entra-id-profile-id']);
50
+ if (!profileId)
51
+ throw new common_1.BadRequestException('Microsoft Entra ID OAuth profile not configured.');
52
+ const profile = await this.prisma.integration_profile.findUnique({
53
+ where: { id: profileId },
54
+ include: { integration_provider: { select: { slug: true } } },
55
+ });
56
+ if (!profile)
57
+ throw new common_1.BadRequestException('Microsoft Entra ID OAuth profile not found.');
58
+ const { clientId, clientSecret, tenantId } = (0, integration_profile_utils_1.buildOAuthConfigFromIntegration)(profile.integration_provider.slug, profile.config);
59
+ if (!tenantId) {
60
+ throw new common_1.BadRequestException('Microsoft Entra ID OAuth profile is missing tenant_id.');
55
61
  }
56
- const tenantId = settings['microsoft_entra_id_tenant_id'];
57
- const redirectURI = this.buildRedirectUri(settings['url'], callbackPath);
58
- const baseScopes = Array.isArray(settings['microsoft_entra_id_scopes'])
59
- ? settings['microsoft_entra_id_scopes']
60
- : [];
62
+ return { clientId, clientSecret, tenantId, baseUrl: String((_a = settings['url']) !== null && _a !== void 0 ? _a : '') };
63
+ }
64
+ async getAuthUrl(callbackPath) {
65
+ var _a;
66
+ const { clientId, tenantId, baseUrl } = await this.loadConfig();
67
+ const settings = await this.setting.getSettingValues(['oauth-microsoft-entra-id-scopes']);
68
+ const baseScopes = (_a = settings['oauth-microsoft-entra-id-scopes']) !== null && _a !== void 0 ? _a : ['openid', 'profile', 'email'];
61
69
  const scopes = baseScopes.includes('offline_access')
62
70
  ? baseScopes
63
71
  : [...baseScopes, 'offline_access'];
72
+ const redirectURI = this.buildRedirectUri(baseUrl, callbackPath);
64
73
  const isConnectFlow = callbackPath.includes('/connect');
65
74
  const params = new URLSearchParams({
66
- client_id: settings['microsoft_entra_id_client_id'],
75
+ client_id: clientId,
67
76
  redirect_uri: redirectURI,
68
77
  response_type: 'code',
69
78
  scope: scopes.join(' '),
70
79
  response_mode: 'query',
71
80
  });
72
81
  this.logger.log(`OAuth auth URL requested: provider=MICROSOFT-ENTRA-ID redirectUri=${redirectURI} hasOfflineAccess=${scopes.includes('offline_access') ? 'yes' : 'no'} connectFlow=${isConnectFlow ? 'yes' : 'no'} tenantConfigured=${tenantId ? 'yes' : 'no'}`);
73
- // Force consent only for explicit account connect, not for routine login.
74
82
  if (isConnectFlow) {
75
83
  params.set('prompt', 'consent');
76
84
  }
77
- const authUrl = `https://login.microsoftonline.com/${tenantId}/oauth2/v2.0/authorize?${params.toString()}`;
78
- return authUrl;
85
+ return `https://login.microsoftonline.com/${tenantId}/oauth2/v2.0/authorize?${params.toString()}`;
79
86
  }
80
- async getProfile(code, type) {
87
+ async getProfile(code, type, redirectUri) {
81
88
  var _a, _b, _c, _d, _e;
82
- let redirectUri = '';
89
+ let resolvedRedirectUri = '';
83
90
  try {
84
- const settings = await this.setting.getSettingValues([
85
- 'microsoft_entra_id_client_id',
86
- 'microsoft_entra_id_client_secret',
87
- 'microsoft_entra_id_scopes',
88
- 'microsoft_entra_id_tenant_id',
89
- 'url',
90
- ]);
91
- const tenantId = settings['microsoft_entra_id_tenant_id'];
92
- const scopes = (_a = settings['microsoft_entra_id_scopes']) !== null && _a !== void 0 ? _a : [];
93
- redirectUri = this.buildRedirectUri(settings['url'], `/callback/microsoft-entra-id/${type}`);
94
- this.logger.log(`OAuth token exchange started: provider=MICROSOFT-ENTRA-ID type=${type} redirectUri=${redirectUri} hasCode=${code ? 'yes' : 'no'} codeLength=${(_b = code === null || code === void 0 ? void 0 : code.length) !== null && _b !== void 0 ? _b : 0}`);
91
+ const { clientId, clientSecret, tenantId, baseUrl } = await this.loadConfig();
92
+ const settings = await this.setting.getSettingValues(['oauth-microsoft-entra-id-scopes']);
93
+ const scopes = (_a = settings['oauth-microsoft-entra-id-scopes']) !== null && _a !== void 0 ? _a : [];
94
+ resolvedRedirectUri =
95
+ (redirectUri === null || redirectUri === void 0 ? void 0 : redirectUri.trim()) || this.buildRedirectUri(baseUrl, `/callback/microsoft-entra-id/${type}`);
96
+ this.logger.log(`OAuth token exchange started: provider=MICROSOFT-ENTRA-ID type=${type} redirectUri=${resolvedRedirectUri} hasCode=${code ? 'yes' : 'no'} codeLength=${(_b = code === null || code === void 0 ? void 0 : code.length) !== null && _b !== void 0 ? _b : 0}`);
95
97
  const token = await this.fetchToken({
96
98
  code,
97
99
  url: `https://login.microsoftonline.com/${tenantId}/oauth2/v2.0/token`,
98
- clientId: settings['microsoft_entra_id_client_id'],
99
- clientSecret: settings['microsoft_entra_id_client_secret'],
100
- redirectUri,
100
+ clientId,
101
+ clientSecret,
102
+ redirectUri: resolvedRedirectUri,
101
103
  });
102
104
  const profile = await this.fetchProfile(token.access_token, 'https://graph.microsoft.com/v1.0/me');
103
105
  this.logger.log(`OAuth profile fetched: provider=MICROSOFT-ENTRA-ID type=${type} profileIdPresent=${(profile === null || profile === void 0 ? void 0 : profile.id) ? 'yes' : 'no'} emailPresent=${(profile === null || profile === void 0 ? void 0 : profile.mail) || (profile === null || profile === void 0 ? void 0 : profile.userPrincipalName) ? 'yes' : 'no'}`);
@@ -118,7 +120,7 @@ let MicrosoftEntraIdProvider = MicrosoftEntraIdProvider_1 = class MicrosoftEntra
118
120
  }
119
121
  catch (error) {
120
122
  const mappedError = this.mapProviderError('Microsoft Entra ID', error);
121
- this.logger.warn(`OAuth callback failed: provider=MICROSOFT-ENTRA-ID status=${(_c = mappedError.status) !== null && _c !== void 0 ? _c : 'unknown'} error=${(_d = mappedError.providerError) !== null && _d !== void 0 ? _d : 'unknown'} providerCode=${(_e = mappedError.providerErrorCode) !== null && _e !== void 0 ? _e : 'n/a'} reason=${mappedError.reason} redirectUri=${redirectUri || 'unresolved'}`);
123
+ this.logger.warn(`OAuth callback failed: provider=MICROSOFT-ENTRA-ID status=${(_c = mappedError.status) !== null && _c !== void 0 ? _c : 'unknown'} error=${(_d = mappedError.providerError) !== null && _d !== void 0 ? _d : 'unknown'} providerCode=${(_e = mappedError.providerErrorCode) !== null && _e !== void 0 ? _e : 'n/a'} reason=${mappedError.reason} redirectUri=${resolvedRedirectUri || 'unresolved'}`);
122
124
  throw mappedError;
123
125
  }
124
126
  }
@@ -128,6 +130,7 @@ exports.MicrosoftEntraIdProvider = MicrosoftEntraIdProvider = MicrosoftEntraIdPr
128
130
  (0, common_1.Injectable)(),
129
131
  __param(1, (0, common_1.Inject)((0, common_1.forwardRef)(() => setting_service_1.SettingService))),
130
132
  __metadata("design:paramtypes", [axios_1.HttpService,
131
- setting_service_1.SettingService])
133
+ setting_service_1.SettingService,
134
+ api_prisma_1.PrismaService])
132
135
  ], MicrosoftEntraIdProvider);
133
136
  //# sourceMappingURL=microsoft-entra-id.provider.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"microsoft-entra-id.provider.js","sourceRoot":"","sources":["../../../src/oauth/providers/microsoft-entra-id.provider.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"microsoft-entra-id.provider.js","sourceRoot":"","sources":["../../../src/oauth/providers/microsoft-entra-id.provider.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,14 @@
1
+ import { PrismaService } from '@hed-hog/api-prisma';
1
2
  import { HttpService } from '@nestjs/axios';
2
3
  import { SettingService } from '../../setting/setting.service';
3
4
  import { BaseOAuthProvider } from './abstract.provider';
4
5
  export declare class MicrosoftProvider extends BaseOAuthProvider {
5
6
  private readonly setting;
6
- constructor(http: HttpService, setting: SettingService);
7
+ private readonly prisma;
8
+ constructor(http: HttpService, setting: SettingService, prisma: PrismaService);
7
9
  getProviderType(): string;
10
+ private loadConfig;
8
11
  getAuthUrl(callbackPath: string): Promise<string>;
9
- getProfile(code: string, type: string): Promise<any>;
12
+ getProfile(code: string, type: string, redirectUri?: string): Promise<any>;
10
13
  }
11
14
  //# sourceMappingURL=microsoft.provider.d.ts.map