@solidstarters/solid-core 1.2.153 → 1.2.154

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 (137) hide show
  1. package/dist/config/iam.config.d.ts +6 -0
  2. package/dist/config/iam.config.d.ts.map +1 -1
  3. package/dist/config/iam.config.js +3 -0
  4. package/dist/config/iam.config.js.map +1 -1
  5. package/dist/constants/error-messages.js +1 -1
  6. package/dist/constants/error-messages.js.map +1 -1
  7. package/dist/controllers/ai-interaction.controller.d.ts +2 -1
  8. package/dist/controllers/ai-interaction.controller.d.ts.map +1 -1
  9. package/dist/controllers/ai-interaction.controller.js +5 -3
  10. package/dist/controllers/ai-interaction.controller.js.map +1 -1
  11. package/dist/controllers/authentication.controller.d.ts +6 -6
  12. package/dist/controllers/authentication.controller.d.ts.map +1 -1
  13. package/dist/controllers/authentication.controller.js +15 -7
  14. package/dist/controllers/authentication.controller.js.map +1 -1
  15. package/dist/controllers/email-template.controller.d.ts.map +1 -1
  16. package/dist/controllers/email-template.controller.js +3 -0
  17. package/dist/controllers/email-template.controller.js.map +1 -1
  18. package/dist/controllers/google-authentication.controller.d.ts.map +1 -1
  19. package/dist/controllers/google-authentication.controller.js +3 -0
  20. package/dist/controllers/google-authentication.controller.js.map +1 -1
  21. package/dist/controllers/media.controller.d.ts.map +1 -1
  22. package/dist/controllers/media.controller.js +4 -0
  23. package/dist/controllers/media.controller.js.map +1 -1
  24. package/dist/controllers/model-metadata.controller.d.ts.map +1 -1
  25. package/dist/controllers/model-metadata.controller.js +5 -0
  26. package/dist/controllers/model-metadata.controller.js.map +1 -1
  27. package/dist/controllers/otp-authentication.controller.d.ts.map +1 -1
  28. package/dist/controllers/otp-authentication.controller.js +3 -0
  29. package/dist/controllers/otp-authentication.controller.js.map +1 -1
  30. package/dist/controllers/service.controller.d.ts.map +1 -1
  31. package/dist/controllers/service.controller.js +4 -0
  32. package/dist/controllers/service.controller.js.map +1 -1
  33. package/dist/controllers/sms-template.controller.d.ts +1 -1
  34. package/dist/controllers/sms-template.controller.d.ts.map +1 -1
  35. package/dist/controllers/sms-template.controller.js +6 -3
  36. package/dist/controllers/sms-template.controller.js.map +1 -1
  37. package/dist/decorators/solid-password.decorator.d.ts +12 -0
  38. package/dist/decorators/solid-password.decorator.d.ts.map +1 -0
  39. package/dist/decorators/solid-password.decorator.js +43 -0
  40. package/dist/decorators/solid-password.decorator.js.map +1 -0
  41. package/dist/dtos/change-password.dto.d.ts.map +1 -1
  42. package/dist/dtos/change-password.dto.js +2 -0
  43. package/dist/dtos/change-password.dto.js.map +1 -1
  44. package/dist/dtos/confirm-forgot-password.dto.d.ts.map +1 -1
  45. package/dist/dtos/confirm-forgot-password.dto.js +2 -0
  46. package/dist/dtos/confirm-forgot-password.dto.js.map +1 -1
  47. package/dist/helpers/cors.helper.d.ts +4 -0
  48. package/dist/helpers/cors.helper.d.ts.map +1 -0
  49. package/dist/helpers/cors.helper.js +33 -0
  50. package/dist/helpers/cors.helper.js.map +1 -0
  51. package/dist/helpers/security.helper.d.ts +9 -0
  52. package/dist/helpers/security.helper.d.ts.map +1 -0
  53. package/dist/helpers/security.helper.js +46 -0
  54. package/dist/helpers/security.helper.js.map +1 -0
  55. package/dist/index.d.ts +3 -0
  56. package/dist/index.d.ts.map +1 -1
  57. package/dist/index.js +3 -0
  58. package/dist/index.js.map +1 -1
  59. package/dist/repository/chatter-message-details.repository.d.ts +16 -0
  60. package/dist/repository/chatter-message-details.repository.d.ts.map +1 -0
  61. package/dist/repository/chatter-message-details.repository.js +62 -0
  62. package/dist/repository/chatter-message-details.repository.js.map +1 -0
  63. package/dist/repository/chatter-message.repository.d.ts +16 -0
  64. package/dist/repository/chatter-message.repository.d.ts.map +1 -0
  65. package/dist/repository/chatter-message.repository.js +61 -0
  66. package/dist/repository/chatter-message.repository.js.map +1 -0
  67. package/dist/repository/security-rule.repository.d.ts +1 -1
  68. package/dist/repository/security-rule.repository.d.ts.map +1 -1
  69. package/dist/repository/security-rule.repository.js +2 -2
  70. package/dist/repository/security-rule.repository.js.map +1 -1
  71. package/dist/repository/solid-base.repository.d.ts +6 -1
  72. package/dist/repository/solid-base.repository.d.ts.map +1 -1
  73. package/dist/repository/solid-base.repository.js +35 -0
  74. package/dist/repository/solid-base.repository.js.map +1 -1
  75. package/dist/seeders/seed-data/solid-core-metadata.json +9 -0
  76. package/dist/services/ai-interaction.service.d.ts +2 -4
  77. package/dist/services/ai-interaction.service.d.ts.map +1 -1
  78. package/dist/services/ai-interaction.service.js +4 -8
  79. package/dist/services/ai-interaction.service.js.map +1 -1
  80. package/dist/services/authentication.service.d.ts +6 -2
  81. package/dist/services/authentication.service.d.ts.map +1 -1
  82. package/dist/services/authentication.service.js +94 -43
  83. package/dist/services/authentication.service.js.map +1 -1
  84. package/dist/services/chatter-message-details.service.d.ts +4 -3
  85. package/dist/services/chatter-message-details.service.d.ts.map +1 -1
  86. package/dist/services/chatter-message-details.service.js +2 -3
  87. package/dist/services/chatter-message-details.service.js.map +1 -1
  88. package/dist/services/chatter-message.service.d.ts +3 -2
  89. package/dist/services/chatter-message.service.d.ts.map +1 -1
  90. package/dist/services/chatter-message.service.js +2 -2
  91. package/dist/services/chatter-message.service.js.map +1 -1
  92. package/dist/services/crud.service.d.ts.map +1 -1
  93. package/dist/services/crud.service.js +4 -1
  94. package/dist/services/crud.service.js.map +1 -1
  95. package/dist/services/model-metadata.service.d.ts.map +1 -1
  96. package/dist/services/model-metadata.service.js +4 -1
  97. package/dist/services/model-metadata.service.js.map +1 -1
  98. package/dist/services/request-context.service.d.ts +3 -0
  99. package/dist/services/request-context.service.d.ts.map +1 -1
  100. package/dist/services/request-context.service.js +6 -0
  101. package/dist/services/request-context.service.js.map +1 -1
  102. package/dist/solid-core.module.d.ts.map +1 -1
  103. package/dist/solid-core.module.js +23 -5
  104. package/dist/solid-core.module.js.map +1 -1
  105. package/dist/tsconfig.tsbuildinfo +1 -1
  106. package/package.json +3 -1
  107. package/src/config/iam.config.ts +3 -0
  108. package/src/constants/error-messages.ts +1 -1
  109. package/src/controllers/ai-interaction.controller.ts +4 -2
  110. package/src/controllers/authentication.controller.ts +16 -10
  111. package/src/controllers/email-template.controller.ts +4 -1
  112. package/src/controllers/google-authentication.controller.ts +4 -0
  113. package/src/controllers/media.controller.ts +5 -1
  114. package/src/controllers/model-metadata.controller.ts +7 -2
  115. package/src/controllers/otp-authentication.controller.ts +4 -1
  116. package/src/controllers/service.controller.ts +5 -1
  117. package/src/controllers/sms-template.controller.ts +8 -7
  118. package/src/decorators/solid-password.decorator.ts +51 -0
  119. package/src/dtos/change-password.dto.ts +2 -0
  120. package/src/dtos/confirm-forgot-password.dto.ts +2 -0
  121. package/src/helpers/cors.helper.ts +34 -0
  122. package/src/helpers/security.helper.ts +53 -0
  123. package/src/index.ts +3 -0
  124. package/src/repository/chatter-message-details.repository.ts +109 -0
  125. package/src/repository/chatter-message.repository.ts +68 -0
  126. package/src/repository/security-rule.repository.ts +2 -2
  127. package/src/repository/solid-base.repository.ts +66 -0
  128. package/src/seeders/seed-data/email-templates/password-changed.handlebars.html +158 -0
  129. package/src/seeders/seed-data/solid-core-metadata.json +9 -0
  130. package/src/services/ai-interaction.service.ts +5 -5
  131. package/src/services/authentication.service.ts +181 -56
  132. package/src/services/chatter-message-details.service.ts +3 -2
  133. package/src/services/chatter-message.service.ts +3 -2
  134. package/src/services/crud.service.ts +7 -2
  135. package/src/services/model-metadata.service.ts +15 -1
  136. package/src/services/request-context.service.ts +9 -0
  137. package/src/solid-core.module.ts +29 -5
@@ -6,10 +6,13 @@ export declare const iamConfig: (() => {
6
6
  activateUserOnRegistration: boolean;
7
7
  autoLoginUserOnRegistration: boolean;
8
8
  otpExpiry: number;
9
+ forgotPasswordVerificationTokenExpiry: number;
9
10
  defaultRole: string;
10
11
  dummyOtp: string;
11
12
  forgotPasswordSendVerificationTokenOn: string;
12
13
  forceChangePasswordOnFirstLogin: boolean;
14
+ PASSWORD_REGEX: string;
15
+ PASSWORD_COMPLEXITY_DESC: string;
13
16
  googleOauth: {
14
17
  clientID: string;
15
18
  clientSecret: string;
@@ -24,10 +27,13 @@ export declare const iamConfig: (() => {
24
27
  activateUserOnRegistration: boolean;
25
28
  autoLoginUserOnRegistration: boolean;
26
29
  otpExpiry: number;
30
+ forgotPasswordVerificationTokenExpiry: number;
27
31
  defaultRole: string;
28
32
  dummyOtp: string;
29
33
  forgotPasswordSendVerificationTokenOn: string;
30
34
  forceChangePasswordOnFirstLogin: boolean;
35
+ PASSWORD_REGEX: string;
36
+ PASSWORD_COMPLEXITY_DESC: string;
31
37
  googleOauth: {
32
38
  clientID: string;
33
39
  clientSecret: string;
@@ -1 +1 @@
1
- {"version":3,"file":"iam.config.d.ts","sourceRoot":"","sources":["../../src/config/iam.config.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAoBpB,CAAA;AAEF,eAAO,MAAM,SAAS;;;;;;;;;;;;EAQpB,CAAC"}
1
+ {"version":3,"file":"iam.config.d.ts","sourceRoot":"","sources":["../../src/config/iam.config.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAuBpB,CAAA;AAEF,eAAO,MAAM,SAAS;;;;;;;;;;;;EAQpB,CAAC"}
@@ -11,10 +11,13 @@ exports.iamConfig = (0, config_1.registerAs)('iam', () => {
11
11
  activateUserOnRegistration: (process.env.IAM_ACTIVATE_USER_ON_REGISTRATION ?? 'true') === 'true',
12
12
  autoLoginUserOnRegistration: (process.env.IAM_AUTO_LOGIN_USER_ON_REGISTRATION ?? 'false') === 'true',
13
13
  otpExpiry: parseInt(process.env.IAM_OTP_EXPIRY ?? '10'),
14
+ forgotPasswordVerificationTokenExpiry: parseInt(process.env.IAM_FORGOT_PASSWORD_VERIFICATION_TOKEN_EXPIRY ?? '10'),
14
15
  defaultRole: process.env.IAM_DEFAULT_ROLE ?? 'Public',
15
16
  dummyOtp: process.env.IAM_OTP_DUMMY,
16
17
  forgotPasswordSendVerificationTokenOn: process.env.IAM_FORGOT_PASSWORD_SEND_VERIFICATION_TOKEN_ON ?? 'email',
17
18
  forceChangePasswordOnFirstLogin: true,
19
+ PASSWORD_REGEX: process.env.PASSWORD_REGEX || '^$|^(?=.*[a-z])(?=.*[A-Z])(?=.*\\d)(?=.*[^\\da-zA-Z]).*$',
20
+ PASSWORD_COMPLEXITY_DESC: process.env.PASSWORD_COMPLEXITY_DESC || 'Password must contain at least one uppercase, one lowercase, one number, and one special character.',
18
21
  googleOauth: {
19
22
  clientID: process.env.IAM_GOOGLE_OAUTH_CLIENT_ID,
20
23
  clientSecret: process.env.IAM_GOOGLE_OAUTH_CLIENT_SECRET,
@@ -1 +1 @@
1
- {"version":3,"file":"iam.config.js","sourceRoot":"","sources":["../../src/config/iam.config.ts"],"names":[],"mappings":";;;AAAA,2CAA4C;AAE/B,QAAA,SAAS,GAAG,IAAA,mBAAU,EAAC,KAAK,EAAE,GAAG,EAAE;IAC5C,OAAO;QACH,wBAAwB,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,8BAA8B,IAAI,OAAO,CAAC,KAAK,MAAM;QAC5F,8BAA8B,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,iCAAiC,IAAI,MAAM,CAAC,KAAK,MAAM;QACpG,oCAAoC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,4CAA4C,IAAI,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QACjJ,uBAAuB,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,6BAA6B,IAAI,MAAM,CAAC,KAAK,MAAM;QACzF,0BAA0B,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,iCAAiC,IAAI,MAAM,CAAC,KAAK,MAAM;QAChG,2BAA2B,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,mCAAmC,IAAI,OAAO,CAAC,KAAK,MAAM;QACpG,SAAS,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,IAAI,CAAC;QACvD,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,QAAQ;QACrD,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,aAAa;QACnC,qCAAqC,EAAE,OAAO,CAAC,GAAG,CAAC,8CAA8C,IAAI,OAAO;QAC5G,+BAA+B,EAAC,IAAI;QACpC,WAAW,EAAE;YACT,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,0BAA0B;YAChD,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC,8BAA8B;YACxD,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,6BAA6B;YACtD,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,6BAA6B;SACzD;KACJ,CAAC;AACN,CAAC,CAAC,CAAA;AAEW,QAAA,SAAS,GAAG,IAAA,mBAAU,EAAC,KAAK,EAAE,GAAG,EAAE;IAC5C,OAAO;QACH,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,cAAc;QAClC,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,sBAAsB;QAC5C,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,oBAAoB;QACxC,cAAc,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,wBAAwB,IAAI,MAAM,EAAE,EAAE,CAAC;QAC5E,eAAe,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,yBAAyB,IAAI,OAAO,EAAE,EAAE,CAAC;KAClF,CAAC;AACN,CAAC,CAAC,CAAC","sourcesContent":["import { registerAs } from '@nestjs/config';\n\nexport const iamConfig = registerAs('iam', () => {\n return {\n passwordlessRegistration: (process.env.IAM_PASSWORD_LESS_REGISTRATION ?? 'false') === 'true',\n iamPasswordRegistrationEnabled: (process.env.IAM_PASSWORD_REGISTRATION_ENABLED ?? 'true') === 'true',\n passwordlessRegistrationValidateWhat: (process.env.IAM_PASSWORD_LESS_REGISTRATION_VALIDATE_WHAT ?? 'email').split(',').map((item) => item.trim()),\n allowPublicRegistration: (process.env.IAM_ALLOW_PUBLIC_REGISTRATION ?? 'true') === 'true',\n activateUserOnRegistration: (process.env.IAM_ACTIVATE_USER_ON_REGISTRATION ?? 'true') === 'true',\n autoLoginUserOnRegistration: (process.env.IAM_AUTO_LOGIN_USER_ON_REGISTRATION ?? 'false') === 'true',\n otpExpiry: parseInt(process.env.IAM_OTP_EXPIRY ?? '10'),\n defaultRole: process.env.IAM_DEFAULT_ROLE ?? 'Public',\n dummyOtp: process.env.IAM_OTP_DUMMY,\n forgotPasswordSendVerificationTokenOn: process.env.IAM_FORGOT_PASSWORD_SEND_VERIFICATION_TOKEN_ON ?? 'email',\n forceChangePasswordOnFirstLogin:true,\n googleOauth: {\n clientID: process.env.IAM_GOOGLE_OAUTH_CLIENT_ID,\n clientSecret: process.env.IAM_GOOGLE_OAUTH_CLIENT_SECRET,\n callbackURL: process.env.IAM_GOOGLE_OAUTH_CALLBACK_URL,\n redirectURL: process.env.IAM_GOOGLE_OAUTH_REDIRECT_URL,\n },\n };\n})\n\nexport const jwtConfig = registerAs('jwt', () => {\n return {\n secret: process.env.IAM_JWT_SECRET,\n audience: process.env.IAM_JWT_TOKEN_AUDIENCE,\n issuer: process.env.IAM_JWT_TOKEN_ISSUER,\n accessTokenTtl: parseInt(process.env.IAM_JWT_ACCESS_TOKEN_TTL ?? '3600', 10),\n refreshTokenTtl: parseInt(process.env.IAM_JWT_REFRESH_TOKEN_TTL ?? '86400', 10),\n };\n});\n"]}
1
+ {"version":3,"file":"iam.config.js","sourceRoot":"","sources":["../../src/config/iam.config.ts"],"names":[],"mappings":";;;AAAA,2CAA4C;AAE/B,QAAA,SAAS,GAAG,IAAA,mBAAU,EAAC,KAAK,EAAE,GAAG,EAAE;IAC5C,OAAO;QACH,wBAAwB,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,8BAA8B,IAAI,OAAO,CAAC,KAAK,MAAM;QAC5F,8BAA8B,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,iCAAiC,IAAI,MAAM,CAAC,KAAK,MAAM;QACpG,oCAAoC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,4CAA4C,IAAI,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QACjJ,uBAAuB,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,6BAA6B,IAAI,MAAM,CAAC,KAAK,MAAM;QACzF,0BAA0B,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,iCAAiC,IAAI,MAAM,CAAC,KAAK,MAAM;QAChG,2BAA2B,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,mCAAmC,IAAI,OAAO,CAAC,KAAK,MAAM;QACpG,SAAS,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,IAAI,CAAC;QACvD,qCAAqC,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,6CAA6C,IAAI,IAAI,CAAC;QAClH,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,QAAQ;QACrD,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,aAAa;QACnC,qCAAqC,EAAE,OAAO,CAAC,GAAG,CAAC,8CAA8C,IAAI,OAAO;QAC5G,+BAA+B,EAAC,IAAI;QACpC,cAAc,EAAE,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,0DAA0D;QACxG,wBAAwB,EAAG,OAAO,CAAC,GAAG,CAAC,wBAAwB,IAAI,qGAAqG;QACxK,WAAW,EAAE;YACT,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,0BAA0B;YAChD,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC,8BAA8B;YACxD,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,6BAA6B;YACtD,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,6BAA6B;SACzD;KACJ,CAAC;AACN,CAAC,CAAC,CAAA;AAEW,QAAA,SAAS,GAAG,IAAA,mBAAU,EAAC,KAAK,EAAE,GAAG,EAAE;IAC5C,OAAO;QACH,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,cAAc;QAClC,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,sBAAsB;QAC5C,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,oBAAoB;QACxC,cAAc,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,wBAAwB,IAAI,MAAM,EAAE,EAAE,CAAC;QAC5E,eAAe,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,yBAAyB,IAAI,OAAO,EAAE,EAAE,CAAC;KAClF,CAAC;AACN,CAAC,CAAC,CAAC","sourcesContent":["import { registerAs } from '@nestjs/config';\n\nexport const iamConfig = registerAs('iam', () => {\n return {\n passwordlessRegistration: (process.env.IAM_PASSWORD_LESS_REGISTRATION ?? 'false') === 'true',\n iamPasswordRegistrationEnabled: (process.env.IAM_PASSWORD_REGISTRATION_ENABLED ?? 'true') === 'true',\n passwordlessRegistrationValidateWhat: (process.env.IAM_PASSWORD_LESS_REGISTRATION_VALIDATE_WHAT ?? 'email').split(',').map((item) => item.trim()),\n allowPublicRegistration: (process.env.IAM_ALLOW_PUBLIC_REGISTRATION ?? 'true') === 'true',\n activateUserOnRegistration: (process.env.IAM_ACTIVATE_USER_ON_REGISTRATION ?? 'true') === 'true',\n autoLoginUserOnRegistration: (process.env.IAM_AUTO_LOGIN_USER_ON_REGISTRATION ?? 'false') === 'true',\n otpExpiry: parseInt(process.env.IAM_OTP_EXPIRY ?? '10'),\n forgotPasswordVerificationTokenExpiry: parseInt(process.env.IAM_FORGOT_PASSWORD_VERIFICATION_TOKEN_EXPIRY ?? '10'),\n defaultRole: process.env.IAM_DEFAULT_ROLE ?? 'Public',\n dummyOtp: process.env.IAM_OTP_DUMMY,\n forgotPasswordSendVerificationTokenOn: process.env.IAM_FORGOT_PASSWORD_SEND_VERIFICATION_TOKEN_ON ?? 'email',\n forceChangePasswordOnFirstLogin:true,\n PASSWORD_REGEX: process.env.PASSWORD_REGEX || '^$|^(?=.*[a-z])(?=.*[A-Z])(?=.*\\\\d)(?=.*[^\\\\da-zA-Z]).*$',\n PASSWORD_COMPLEXITY_DESC : process.env.PASSWORD_COMPLEXITY_DESC || 'Password must contain at least one uppercase, one lowercase, one number, and one special character.',\n googleOauth: {\n clientID: process.env.IAM_GOOGLE_OAUTH_CLIENT_ID,\n clientSecret: process.env.IAM_GOOGLE_OAUTH_CLIENT_SECRET,\n callbackURL: process.env.IAM_GOOGLE_OAUTH_CALLBACK_URL,\n redirectURL: process.env.IAM_GOOGLE_OAUTH_REDIRECT_URL,\n },\n };\n})\n\nexport const jwtConfig = registerAs('jwt', () => {\n return {\n secret: process.env.IAM_JWT_SECRET,\n audience: process.env.IAM_JWT_TOKEN_AUDIENCE,\n issuer: process.env.IAM_JWT_TOKEN_ISSUER,\n accessTokenTtl: parseInt(process.env.IAM_JWT_ACCESS_TOKEN_TTL ?? '3600', 10),\n refreshTokenTtl: parseInt(process.env.IAM_JWT_REFRESH_TOKEN_TTL ?? '86400', 10),\n };\n});\n"]}
@@ -21,7 +21,7 @@ exports.ERROR_MESSAGES = {
21
21
  USER_ID_MISMATCH: "User ID's do not match.",
22
22
  USERNAME_MISMATCH: "User username's do not match.",
23
23
  INCORRECT_CURRENT_PASSWORD: 'Incorrect current password specified.',
24
- PASSWORD_REUSED: 'This password was previously used, please use a different password.',
24
+ PASSWORD_REUSED: 'Try a different password',
25
25
  INVALID_VERIFICATION_TOKEN: 'Invalid verification token',
26
26
  ACCESS_DENIED: 'Access denied',
27
27
  INVALID_USER_PROFILE: 'Invalid user profile',
@@ -1 +1 @@
1
- {"version":3,"file":"error-messages.js","sourceRoot":"","sources":["../../src/constants/error-messages.ts"],"names":[],"mappings":";;;AAEa,QAAA,cAAc,GAAG;IAE1B,cAAc,EAAE,sBAAsB;IACtC,eAAe,EAAE,gCAAgC;IACjD,aAAa,EAAE,mBAAmB;IAClC,kBAAkB,EAAE,0BAA0B;IAC9C,4BAA4B,EAAE,oCAAoC;IAClE,2BAA2B,EAAE,yCAAyC;IACtE,kCAAkC,EAAE,2CAA2C;IAC/E,6BAA6B,EAAE,iEAAiE;IAChG,6BAA6B,EAAE,gDAAgD;IAC/E,8BAA8B,EAAE,kDAAkD;IAClF,mBAAmB,EAAE,sCAAsC;IAC3D,0BAA0B,EAAE,6CAA6C;IACzE,WAAW,EAAE,cAAc;IAC3B,WAAW,EAAE,kBAAkB;IAC/B,yBAAyB,EAAE,+CAA+C;IAC1E,kBAAkB,EAAE,8DAA8D;IAClF,gBAAgB,EAAE,yBAAyB;IAC3C,iBAAiB,EAAE,+BAA+B;IAClD,0BAA0B,EAAE,uCAAuC;IACnE,eAAe,EAAE,qEAAqE;IACtF,0BAA0B,EAAE,4BAA4B;IACxD,aAAa,EAAE,eAAe;IAC9B,oBAAoB,EAAE,sBAAsB;IAC5C,iCAAiC,EAAE,wDAAwD;IAC3F,aAAa,EAAE,2CAA2C;IAE1D,mBAAmB,EAAE,yCAAyC;IAC9D,YAAY,EAAE,cAAc;IAC5B,sBAAsB,EAAE,+CAA+C;IACvE,oBAAoB,EAAE,uBAAuB;IAC7C,sBAAsB,EAAE,iCAAiC;IAGzD,uBAAuB,EAAE,yCAAyC;IAClE,mBAAmB,EAAE,2CAA2C;IAChE,eAAe,EAAE,4CAA4C;IAC7D,eAAe,EAAE,CAAC,KAAe,EAAE,EAAE,CAAC,uCAAuC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;IAC/F,0BAA0B,EAAE,CAAC,QAAgB,EAAE,EAAE,CAAC,uBAAuB,QAAQ,cAAc;IAC/F,cAAc,EAAE,CAAC,QAAgB,EAAE,EAAE,CAAC,SAAS,QAAQ,cAAc;IACrE,oBAAoB,EAAE,CAAC,UAAkB,EAAE,EAAE,CAAC,eAAe,UAAU,mBAAmB;IAG1F,eAAe,EAAE,uDAAuD;IACxE,eAAe,EAAE,gDAAgD;IAGjE,cAAc,EAAE,iEAAiE;IACjF,sBAAsB,EAAE,iEAAiE;IAGzF,SAAS,EAAE,WAAW;IAItB,eAAe,EAAE,sEAAsE;IAGvF,sBAAsB,EAAE,4BAA4B;IACpD,sBAAsB,EAAE,8BAA8B;IAGtD,2BAA2B,EAAE,8CAA8C;IAC3E,4BAA4B,EAAE,iDAAiD;IAC/E,+BAA+B,EAAE,wJAAwJ;IACzL,6BAA6B,EAAE,yCAAyC;IACxE,gBAAgB,EAAE,4BAA4B;IAI9C,2BAA2B,EAAE,2DAA2D;IACxF,kBAAkB,EAAE,2EAA2E;IAC/F,cAAc,EAAE,CAAC,MAAc,EAAE,EAAE,CAAC,WAAW,MAAM,SAAS;IAI9D,0BAA0B,EAAE,+CAA+C;IAC3E,iDAAiD,EAAE,wDAAwD;IAC3G,2DAA2D,EAAE,kEAAkE;IAC/H,eAAe,EAAE,CAAC,EAAmB,EAAE,EAAE,CAAC,qBAAqB,EAAE,SAAS;IAC1E,kBAAkB,EAAE,CAAC,QAAgB,EAAE,EAAE,CAAC,uDAAuD,QAAQ,yBAAyB;IAClI,iBAAiB,EAAE,gDAAgD;IAGnE,cAAc,EAAE,gBAAgB;IAChC,eAAe,EAAE,oBAAoB;IACrC,yBAAyB,EAAE,+DAA+D;IAG1F,wBAAwB,EAAE,CAAC,EAAmB,EAAE,EAAE,CAAC,0BAA0B,EAAE,aAAa;IAC5F,uBAAuB,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,qBAAqB,KAAK,aAAa;IACnF,uCAAuC,EAAE,CAAC,SAAiB,EAAE,EAAE,CAAC,kEAAkE,SAAS,EAAE;IAC7I,eAAe,EAAE,CAAC,YAAqB,EAAE,EAAE,CAAC,QAAQ,YAAY,CAAC,CAAC,CAAC,wBAAwB,YAAY,GAAG,CAAC,CAAC,CAAC,EAAE,aAAa;IAC5H,kCAAkC,EAAE,yDAAyD;IAG7F,gBAAgB,EAAE,CAAC,UAAkB,EAAE,EAAE,CAAC,oBAAoB,UAAU,aAAa;IACrF,mBAAmB,EAAE,CAAC,EAAmB,EAAE,EAAE,CAAC,kBAAkB,EAAE,aAAa;IAG/E,gBAAgB,EAAE,CAAC,MAAwB,EAAE,EAAE,CAAC,SAAS,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,aAAa;IAChG,oBAAoB,EAAE,6CAA6C;IACnE,kBAAkB,EAAE,2CAA2C;IAG/D,uBAAuB,EAAE,CAAC,EAAmB,EAAE,EAAE,CAAC,wDAAwD,EAAE,GAAG;IAC/G,yBAAyB,EAAE,CAAC,GAAW,EAAE,EAAE,CAAC,iCAAiC,GAAG,EAAE;IAGlF,mCAAmC,EAAE,CAAC,EAAmB,EAAE,EAAE,CAAC,gCAAgC,EAAE,aAAa;IAC7G,gCAAgC,EAAE,kCAAkC;IAGpE,wBAAwB,EAAE,CAAC,QAAgB,EAAE,EAAE,CAAC,6BAA6B,QAAQ,EAAE;IAGvF,gCAAgC,EAAE,gEAAgE;IAClG,+BAA+B,EAAE,iFAAiF;IAClH,6BAA6B,EAAE,uCAAuC;CACzE,CAAC","sourcesContent":["// backend/common/constants/error-messages.ts\n\nexport const ERROR_MESSAGES = {\n //authentication errors\n USER_NOT_FOUND: 'User does not exist.',\n USER_NOT_ACTIVE: 'User profile is not activated.',\n USER_INACTIVE: 'User is inactive.',\n PASSWORD_INCORRECT: 'Password does not match.',\n PUBLIC_REGISTRATION_DISABLED: 'Public registrations are disabled.',\n UNIQUE_CONSTRAINT_VIOLATION: 'A unique constraint violation occurred.',\n PASSWORDLESS_REGISTRATION_DISABLED: 'Passwordless registration is not enabled.',\n REGISTRATION_REQUIRES_CONTACT: 'Either mobile or email is required for initiating registration.',\n EMAIL_REQUIRED_FOR_VALIDATION: 'Email is required for email validation source.',\n MOBILE_REQUIRED_FOR_VALIDATION: 'Mobile is required for mobile validation source.',\n USER_ALREADY_EXISTS: 'User already exists. Please sign in.',\n VALIDATION_SOURCE_REQUIRED: 'At least one validation source is required.',\n INVALID_OTP: 'Invalid OTP.',\n OTP_EXPIRED: 'OTP has expired.',\n INVALID_VERIFICATION_TYPE: 'Invalid type. Must be either email or mobile.',\n NON_LOCAL_PROVIDER: 'User seems to have used a passwordless mode to authenticate.',\n USER_ID_MISMATCH: \"User ID's do not match.\",\n USERNAME_MISMATCH: \"User username's do not match.\",\n INCORRECT_CURRENT_PASSWORD: 'Incorrect current password specified.',\n PASSWORD_REUSED: 'This password was previously used, please use a different password.',\n INVALID_VERIFICATION_TOKEN: 'Invalid verification token',\n ACCESS_DENIED: 'Access denied',\n INVALID_USER_PROFILE: 'Invalid user profile',\n GOOGLE_OAUTH_PROFILE_FETCH_FAILED: 'Failed to fetch user profile from Google OAuth service',\n LOGOUT_FAILED: 'Logout failed due to an unexpected error.',\n\n INVALID_CREDENTIALS: 'Invalid username or password specified.',\n LOGIN_FAILED: 'Login Failed',\n OLD_PASSWORD_INCORRECT: 'You have specified an incorrect old password.',\n INVALID_NEW_PASSWORD: 'Invalid new password.',\n PASSWORDS_DO_NOT_MATCH: 'New passwords are not matching.',\n\n // user management errors\n DELETE_SELF_NOT_ALLOWED: 'Deleting logged-in user is not allowed.',\n DELETE_IDS_REQUIRED: 'At least one ID is required for deletion.',\n USER_MISSING_ID: 'User must exist before initializing roles.',\n ROLES_NOT_FOUND: (roles: string[]) => `The following roles were not found: ${roles.join(', ')}`,\n USER_NOT_FOUND_BY_USERNAME: (username: string) => `User with username '${username}' not found.`,\n ROLE_NOT_FOUND: (roleName: string) => `Role '${roleName}' not found.`,\n PERMISSION_NOT_EXIST: (permission: string) => `Permission '${permission}' does not exist.`,\n\n // session errors\n SESSION_INVALID: 'Your session is no longer valid. Please log in again.',\n SESSION_EXPIRED: 'Your session has expired. Please log in again.',\n\n // filter errors\n GROUP_BY_LIMIT: 'buildFilterQuery: Only 1 Group by field is supported currently.',\n INVALID_GROUP_BY_COUNT: 'Exactly one groupBy field is required to count grouped records.',\n\n // general errors\n FORBIDDEN: 'Forbidden',\n\n\n // database errors\n DUPLICATE_ENTRY: 'Duplicate entry. A record with similar unique fields already exists.',\n\n // validation errors\n ID_REQUIRED_FOR_UPDATE: 'Id is required for update.',\n ID_REQUIRED_FOR_DELETE: 'Id is required for deletion.',\n\n // CRUD service errors\n RELATION_TYPE_NOT_SUPPORTED: 'Relation type not supported in CRUD service.',\n NO_SOFT_DELETED_RECORD_FOUND: 'No soft-deleted record found with the given ID.',\n CONFLICTING_RECORD_ON_UNARCHIVE: 'Another record is conflicting with the record you are attempting to Un-Archive, either delete or change the other record so as to avoid this conflict.',\n NO_SOFT_DELETED_RECORDS_FOUND: 'No matching soft-deleted records found.',\n EMPTY_PATH_PARTS: 'Path parts cannot be empty',\n\n\n // CSV/Excel service errors\n MISSING_HEADERS_OR_FUNCTION: 'Either headers or data records function must be provided.',\n INVALID_CHUNK_SIZE: 'Chunk size must be greater than 0 when data records function is provided.',\n INVALID_FORMAT: (format: string) => `Invalid ${format} format`,\n\n\n //field errors\n INVALID_INVERSE_FIELD_TYPE: 'Only relation fields can have inverse fields.',\n MODEL_AND_MODULE_REQUIRED_TO_UPDATE_INVERSE_FIELD: 'Model and module are required to update inverse field.',\n MODEL_NAME_AND_MODULE_NAME_REQUIRED_TO_CREATE_INVERSE_FIELD: 'Model name and module name are required to create inverse field.',\n FIELD_NOT_FOUND: (id: number | string) => `No field with id #${id} exists`,\n PROVIDER_NOT_FOUND: (provider: string) => `Field incorrectly configured. No provider with name ${provider} registered in backend.`,\n FILE_WRITE_FAILED: 'File creation failed, rolling back transaction',\n\n // file service errors\n FILE_NOT_FOUND: 'File not found',\n FILE_COPY_ERROR: 'Error copying file',\n S3_CLIENT_NOT_INITIALIZED: 'S3 Client not initialized. Please check the S3 configuration.',\n\n // model errors\n MODEL_METADATA_NOT_FOUND: (id: string | number) => `Model metadata with ID ${id} not found.`,\n MODEL_SERVICE_NOT_FOUND: (model: string) => `Model service for ${model} not found.`,\n RELATION_CO_MODEL_NOT_DEFINED_FOR_FIELD: (fieldName: string) => `Relation coModelSingularName is not defined for relation field ${fieldName}`,\n MODEL_NOT_FOUND: (singularName?: string) => `Model${singularName ? ` with singular name \"${singularName}\"` : ''} not found.`,\n MODEL_REQUIRED_FOR_CODE_GENERATION: 'Model ID or Model Name is required for generating code.',\n\n //module errors\n MODULE_NOT_FOUND: (moduleName: string) => `Module with name ${moduleName} not found.`,\n MODULE_ID_NOT_FOUND: (id: string | number) => `Module with ID ${id} not found.`,\n\n //entity errors\n ENTITY_NOT_FOUND: (entity?: string | number) => `Entity${entity ? ' ' + entity : ''} not found.`,\n ENTITY_NAME_REQUIRED: 'Entity name is required to find the entity.',\n ENTITY_ID_REQUIRED: 'Entity ID is required to find the entity.',\n\n // import errors\n NO_ERROR_LOG_FOR_IMPORT: (id: string | number) => `No error log entries found for import transaction ID ${id}.`,\n FILE_READ_FAILED_FROM_URL: (url: string) => `Failed to read file from URL: ${url}`,\n\n // media storage provider errors\n MEDIA_STORAGE_PROVIDER_ID_NOT_FOUND: (id: number | string) => `Media Storage Provider with #${id} not found.`,\n MEDIA_STORAGE_PROVIDER_NOT_FOUND: 'Media Storage Provider not found',\n\n // SQL errors\n UNSUPPORTED_SQL_OPERATOR: (operator: string) => `Unsupported SQL operator: ${operator}`,\n\n // AI interaction errors\n PYTHON_EXECUTABLE_NOT_CONFIGURED: 'SolidX AI MCP python executable or client path not configured.',\n UNABLE_TO_RESOLVE_SOLID_COMMAND: 'Unable to resolve a solid_ command that was used to come up with this response.',\n UNABLE_TO_RESOLVE_MCP_HANDLER: 'Unable to resolve a mcp tool handler.',\n};"]}
1
+ {"version":3,"file":"error-messages.js","sourceRoot":"","sources":["../../src/constants/error-messages.ts"],"names":[],"mappings":";;;AAEa,QAAA,cAAc,GAAG;IAE1B,cAAc,EAAE,sBAAsB;IACtC,eAAe,EAAE,gCAAgC;IACjD,aAAa,EAAE,mBAAmB;IAClC,kBAAkB,EAAE,0BAA0B;IAC9C,4BAA4B,EAAE,oCAAoC;IAClE,2BAA2B,EAAE,yCAAyC;IACtE,kCAAkC,EAAE,2CAA2C;IAC/E,6BAA6B,EAAE,iEAAiE;IAChG,6BAA6B,EAAE,gDAAgD;IAC/E,8BAA8B,EAAE,kDAAkD;IAClF,mBAAmB,EAAE,sCAAsC;IAC3D,0BAA0B,EAAE,6CAA6C;IACzE,WAAW,EAAE,cAAc;IAC3B,WAAW,EAAE,kBAAkB;IAC/B,yBAAyB,EAAE,+CAA+C;IAC1E,kBAAkB,EAAE,8DAA8D;IAClF,gBAAgB,EAAE,yBAAyB;IAC3C,iBAAiB,EAAE,+BAA+B;IAClD,0BAA0B,EAAE,uCAAuC;IACnE,eAAe,EAAE,0BAA0B;IAC3C,0BAA0B,EAAE,4BAA4B;IACxD,aAAa,EAAE,eAAe;IAC9B,oBAAoB,EAAE,sBAAsB;IAC5C,iCAAiC,EAAE,wDAAwD;IAC3F,aAAa,EAAE,2CAA2C;IAE1D,mBAAmB,EAAE,yCAAyC;IAC9D,YAAY,EAAE,cAAc;IAC5B,sBAAsB,EAAE,+CAA+C;IACvE,oBAAoB,EAAE,uBAAuB;IAC7C,sBAAsB,EAAE,iCAAiC;IAGzD,uBAAuB,EAAE,yCAAyC;IAClE,mBAAmB,EAAE,2CAA2C;IAChE,eAAe,EAAE,4CAA4C;IAC7D,eAAe,EAAE,CAAC,KAAe,EAAE,EAAE,CAAC,uCAAuC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;IAC/F,0BAA0B,EAAE,CAAC,QAAgB,EAAE,EAAE,CAAC,uBAAuB,QAAQ,cAAc;IAC/F,cAAc,EAAE,CAAC,QAAgB,EAAE,EAAE,CAAC,SAAS,QAAQ,cAAc;IACrE,oBAAoB,EAAE,CAAC,UAAkB,EAAE,EAAE,CAAC,eAAe,UAAU,mBAAmB;IAG1F,eAAe,EAAE,uDAAuD;IACxE,eAAe,EAAE,gDAAgD;IAGjE,cAAc,EAAE,iEAAiE;IACjF,sBAAsB,EAAE,iEAAiE;IAGzF,SAAS,EAAE,WAAW;IAItB,eAAe,EAAE,sEAAsE;IAGvF,sBAAsB,EAAE,4BAA4B;IACpD,sBAAsB,EAAE,8BAA8B;IAGtD,2BAA2B,EAAE,8CAA8C;IAC3E,4BAA4B,EAAE,iDAAiD;IAC/E,+BAA+B,EAAE,wJAAwJ;IACzL,6BAA6B,EAAE,yCAAyC;IACxE,gBAAgB,EAAE,4BAA4B;IAI9C,2BAA2B,EAAE,2DAA2D;IACxF,kBAAkB,EAAE,2EAA2E;IAC/F,cAAc,EAAE,CAAC,MAAc,EAAE,EAAE,CAAC,WAAW,MAAM,SAAS;IAI9D,0BAA0B,EAAE,+CAA+C;IAC3E,iDAAiD,EAAE,wDAAwD;IAC3G,2DAA2D,EAAE,kEAAkE;IAC/H,eAAe,EAAE,CAAC,EAAmB,EAAE,EAAE,CAAC,qBAAqB,EAAE,SAAS;IAC1E,kBAAkB,EAAE,CAAC,QAAgB,EAAE,EAAE,CAAC,uDAAuD,QAAQ,yBAAyB;IAClI,iBAAiB,EAAE,gDAAgD;IAGnE,cAAc,EAAE,gBAAgB;IAChC,eAAe,EAAE,oBAAoB;IACrC,yBAAyB,EAAE,+DAA+D;IAG1F,wBAAwB,EAAE,CAAC,EAAmB,EAAE,EAAE,CAAC,0BAA0B,EAAE,aAAa;IAC5F,uBAAuB,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,qBAAqB,KAAK,aAAa;IACnF,uCAAuC,EAAE,CAAC,SAAiB,EAAE,EAAE,CAAC,kEAAkE,SAAS,EAAE;IAC7I,eAAe,EAAE,CAAC,YAAqB,EAAE,EAAE,CAAC,QAAQ,YAAY,CAAC,CAAC,CAAC,wBAAwB,YAAY,GAAG,CAAC,CAAC,CAAC,EAAE,aAAa;IAC5H,kCAAkC,EAAE,yDAAyD;IAG7F,gBAAgB,EAAE,CAAC,UAAkB,EAAE,EAAE,CAAC,oBAAoB,UAAU,aAAa;IACrF,mBAAmB,EAAE,CAAC,EAAmB,EAAE,EAAE,CAAC,kBAAkB,EAAE,aAAa;IAG/E,gBAAgB,EAAE,CAAC,MAAwB,EAAE,EAAE,CAAC,SAAS,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,aAAa;IAChG,oBAAoB,EAAE,6CAA6C;IACnE,kBAAkB,EAAE,2CAA2C;IAG/D,uBAAuB,EAAE,CAAC,EAAmB,EAAE,EAAE,CAAC,wDAAwD,EAAE,GAAG;IAC/G,yBAAyB,EAAE,CAAC,GAAW,EAAE,EAAE,CAAC,iCAAiC,GAAG,EAAE;IAGlF,mCAAmC,EAAE,CAAC,EAAmB,EAAE,EAAE,CAAC,gCAAgC,EAAE,aAAa;IAC7G,gCAAgC,EAAE,kCAAkC;IAGpE,wBAAwB,EAAE,CAAC,QAAgB,EAAE,EAAE,CAAC,6BAA6B,QAAQ,EAAE;IAGvF,gCAAgC,EAAE,gEAAgE;IAClG,+BAA+B,EAAE,iFAAiF;IAClH,6BAA6B,EAAE,uCAAuC;CACzE,CAAC","sourcesContent":["// backend/common/constants/error-messages.ts\n\nexport const ERROR_MESSAGES = {\n //authentication errors\n USER_NOT_FOUND: 'User does not exist.',\n USER_NOT_ACTIVE: 'User profile is not activated.',\n USER_INACTIVE: 'User is inactive.',\n PASSWORD_INCORRECT: 'Password does not match.',\n PUBLIC_REGISTRATION_DISABLED: 'Public registrations are disabled.',\n UNIQUE_CONSTRAINT_VIOLATION: 'A unique constraint violation occurred.',\n PASSWORDLESS_REGISTRATION_DISABLED: 'Passwordless registration is not enabled.',\n REGISTRATION_REQUIRES_CONTACT: 'Either mobile or email is required for initiating registration.',\n EMAIL_REQUIRED_FOR_VALIDATION: 'Email is required for email validation source.',\n MOBILE_REQUIRED_FOR_VALIDATION: 'Mobile is required for mobile validation source.',\n USER_ALREADY_EXISTS: 'User already exists. Please sign in.',\n VALIDATION_SOURCE_REQUIRED: 'At least one validation source is required.',\n INVALID_OTP: 'Invalid OTP.',\n OTP_EXPIRED: 'OTP has expired.',\n INVALID_VERIFICATION_TYPE: 'Invalid type. Must be either email or mobile.',\n NON_LOCAL_PROVIDER: 'User seems to have used a passwordless mode to authenticate.',\n USER_ID_MISMATCH: \"User ID's do not match.\",\n USERNAME_MISMATCH: \"User username's do not match.\",\n INCORRECT_CURRENT_PASSWORD: 'Incorrect current password specified.',\n PASSWORD_REUSED: 'Try a different password',\n INVALID_VERIFICATION_TOKEN: 'Invalid verification token',\n ACCESS_DENIED: 'Access denied',\n INVALID_USER_PROFILE: 'Invalid user profile',\n GOOGLE_OAUTH_PROFILE_FETCH_FAILED: 'Failed to fetch user profile from Google OAuth service',\n LOGOUT_FAILED: 'Logout failed due to an unexpected error.',\n\n INVALID_CREDENTIALS: 'Invalid username or password specified.',\n LOGIN_FAILED: 'Login Failed',\n OLD_PASSWORD_INCORRECT: 'You have specified an incorrect old password.',\n INVALID_NEW_PASSWORD: 'Invalid new password.',\n PASSWORDS_DO_NOT_MATCH: 'New passwords are not matching.',\n\n // user management errors\n DELETE_SELF_NOT_ALLOWED: 'Deleting logged-in user is not allowed.',\n DELETE_IDS_REQUIRED: 'At least one ID is required for deletion.',\n USER_MISSING_ID: 'User must exist before initializing roles.',\n ROLES_NOT_FOUND: (roles: string[]) => `The following roles were not found: ${roles.join(', ')}`,\n USER_NOT_FOUND_BY_USERNAME: (username: string) => `User with username '${username}' not found.`,\n ROLE_NOT_FOUND: (roleName: string) => `Role '${roleName}' not found.`,\n PERMISSION_NOT_EXIST: (permission: string) => `Permission '${permission}' does not exist.`,\n\n // session errors\n SESSION_INVALID: 'Your session is no longer valid. Please log in again.',\n SESSION_EXPIRED: 'Your session has expired. Please log in again.',\n\n // filter errors\n GROUP_BY_LIMIT: 'buildFilterQuery: Only 1 Group by field is supported currently.',\n INVALID_GROUP_BY_COUNT: 'Exactly one groupBy field is required to count grouped records.',\n\n // general errors\n FORBIDDEN: 'Forbidden',\n\n\n // database errors\n DUPLICATE_ENTRY: 'Duplicate entry. A record with similar unique fields already exists.',\n\n // validation errors\n ID_REQUIRED_FOR_UPDATE: 'Id is required for update.',\n ID_REQUIRED_FOR_DELETE: 'Id is required for deletion.',\n\n // CRUD service errors\n RELATION_TYPE_NOT_SUPPORTED: 'Relation type not supported in CRUD service.',\n NO_SOFT_DELETED_RECORD_FOUND: 'No soft-deleted record found with the given ID.',\n CONFLICTING_RECORD_ON_UNARCHIVE: 'Another record is conflicting with the record you are attempting to Un-Archive, either delete or change the other record so as to avoid this conflict.',\n NO_SOFT_DELETED_RECORDS_FOUND: 'No matching soft-deleted records found.',\n EMPTY_PATH_PARTS: 'Path parts cannot be empty',\n\n\n // CSV/Excel service errors\n MISSING_HEADERS_OR_FUNCTION: 'Either headers or data records function must be provided.',\n INVALID_CHUNK_SIZE: 'Chunk size must be greater than 0 when data records function is provided.',\n INVALID_FORMAT: (format: string) => `Invalid ${format} format`,\n\n\n //field errors\n INVALID_INVERSE_FIELD_TYPE: 'Only relation fields can have inverse fields.',\n MODEL_AND_MODULE_REQUIRED_TO_UPDATE_INVERSE_FIELD: 'Model and module are required to update inverse field.',\n MODEL_NAME_AND_MODULE_NAME_REQUIRED_TO_CREATE_INVERSE_FIELD: 'Model name and module name are required to create inverse field.',\n FIELD_NOT_FOUND: (id: number | string) => `No field with id #${id} exists`,\n PROVIDER_NOT_FOUND: (provider: string) => `Field incorrectly configured. No provider with name ${provider} registered in backend.`,\n FILE_WRITE_FAILED: 'File creation failed, rolling back transaction',\n\n // file service errors\n FILE_NOT_FOUND: 'File not found',\n FILE_COPY_ERROR: 'Error copying file',\n S3_CLIENT_NOT_INITIALIZED: 'S3 Client not initialized. Please check the S3 configuration.',\n\n // model errors\n MODEL_METADATA_NOT_FOUND: (id: string | number) => `Model metadata with ID ${id} not found.`,\n MODEL_SERVICE_NOT_FOUND: (model: string) => `Model service for ${model} not found.`,\n RELATION_CO_MODEL_NOT_DEFINED_FOR_FIELD: (fieldName: string) => `Relation coModelSingularName is not defined for relation field ${fieldName}`,\n MODEL_NOT_FOUND: (singularName?: string) => `Model${singularName ? ` with singular name \"${singularName}\"` : ''} not found.`,\n MODEL_REQUIRED_FOR_CODE_GENERATION: 'Model ID or Model Name is required for generating code.',\n\n //module errors\n MODULE_NOT_FOUND: (moduleName: string) => `Module with name ${moduleName} not found.`,\n MODULE_ID_NOT_FOUND: (id: string | number) => `Module with ID ${id} not found.`,\n\n //entity errors\n ENTITY_NOT_FOUND: (entity?: string | number) => `Entity${entity ? ' ' + entity : ''} not found.`,\n ENTITY_NAME_REQUIRED: 'Entity name is required to find the entity.',\n ENTITY_ID_REQUIRED: 'Entity ID is required to find the entity.',\n\n // import errors\n NO_ERROR_LOG_FOR_IMPORT: (id: string | number) => `No error log entries found for import transaction ID ${id}.`,\n FILE_READ_FAILED_FROM_URL: (url: string) => `Failed to read file from URL: ${url}`,\n\n // media storage provider errors\n MEDIA_STORAGE_PROVIDER_ID_NOT_FOUND: (id: number | string) => `Media Storage Provider with #${id} not found.`,\n MEDIA_STORAGE_PROVIDER_NOT_FOUND: 'Media Storage Provider not found',\n\n // SQL errors\n UNSUPPORTED_SQL_OPERATOR: (operator: string) => `Unsupported SQL operator: ${operator}`,\n\n // AI interaction errors\n PYTHON_EXECUTABLE_NOT_CONFIGURED: 'SolidX AI MCP python executable or client path not configured.',\n UNABLE_TO_RESOLVE_SOLID_COMMAND: 'Unable to resolve a solid_ command that was used to come up with this response.',\n UNABLE_TO_RESOLVE_MCP_HANDLER: 'Unable to resolve a mcp tool handler.',\n};"]}
@@ -2,6 +2,7 @@ import { AiInteractionService } from '../services/ai-interaction.service';
2
2
  import { CreateAiInteractionDto } from '../dtos/create-ai-interaction.dto';
3
3
  import { UpdateAiInteractionDto } from '../dtos/update-ai-interaction.dto';
4
4
  import { InvokeAiPromptDto } from '../dtos/invoke-ai-prompt.dto';
5
+ import { ActiveUserData } from 'src/interfaces/active-user-data.interface';
5
6
  export declare class AiInteractionController {
6
7
  private readonly service;
7
8
  constructor(service: AiInteractionService);
@@ -40,7 +41,7 @@ export declare class AiInteractionController {
40
41
  findOne(id: string, query: any): Promise<import("..").AiInteraction>;
41
42
  deleteMany(ids: number[]): Promise<any>;
42
43
  delete(id: number): Promise<import("..").AiInteraction>;
43
- triggerMcpClientJob(dto: InvokeAiPromptDto): Promise<any>;
44
+ triggerMcpClientJob(dto: InvokeAiPromptDto, activeUser: ActiveUserData): Promise<any>;
44
45
  applySolidAiInteraction(id: number): Promise<any>;
45
46
  runMcpPrompt(dto: InvokeAiPromptDto): Promise<import("..").McpResponse>;
46
47
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ai-interaction.controller.d.ts","sourceRoot":"","sources":["../../src/controllers/ai-interaction.controller.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,EAAE,sBAAsB,EAAE,MAAM,mCAAmC,CAAC;AAC3E,OAAO,EAAE,sBAAsB,EAAE,MAAM,mCAAmC,CAAC;AAC3E,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAOjE,qBAEa,uBAAuB;IACtB,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAAP,OAAO,EAAE,oBAAoB;IAK1D,MAAM,CAAS,SAAS,EAAE,sBAAsB,EAAmB,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC;IAOpG,UAAU,CAAS,UAAU,EAAE,sBAAsB,EAAE,EAAmB,UAAU,GAAE,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,EAAO;IAQlH,MAAM,CAAc,EAAE,EAAE,MAAM,EAAU,SAAS,EAAE,sBAAsB,EAAmB,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC;IAO7H,aAAa,CAAc,EAAE,EAAE,MAAM,EAAU,SAAS,EAAE,sBAAsB,EAAmB,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC;IAM9H,WAAW,CAAS,GAAG,EAAE,MAAM,EAAE;;;;IAMjC,OAAO,CAAc,EAAE,EAAE,MAAM;;;;IAe/B,QAAQ,CAAU,KAAK,EAAE,GAAG;;;;;;;;;;;;;;;;;;;;IAM5B,OAAO,CAAc,EAAE,EAAE,MAAM,EAAW,KAAK,EAAE,GAAG;IAMpD,UAAU,CAAS,GAAG,EAAE,MAAM,EAAE;IAMhC,MAAM,CAAc,EAAE,EAAE,MAAM;IAM9B,mBAAmB,CAAS,GAAG,EAAE,iBAAiB;IAMlD,uBAAuB,CAAc,EAAE,EAAE,MAAM;IAM/C,YAAY,CAAS,GAAG,EAAE,iBAAiB;CAGlD"}
1
+ {"version":3,"file":"ai-interaction.controller.d.ts","sourceRoot":"","sources":["../../src/controllers/ai-interaction.controller.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,EAAE,sBAAsB,EAAE,MAAM,mCAAmC,CAAC;AAC3E,OAAO,EAAE,sBAAsB,EAAE,MAAM,mCAAmC,CAAC;AAC3E,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAEjE,OAAO,EAAE,cAAc,EAAE,MAAM,2CAA2C,CAAC;AAO3E,qBAEa,uBAAuB;IACtB,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAAP,OAAO,EAAE,oBAAoB;IAK1D,MAAM,CAAS,SAAS,EAAE,sBAAsB,EAAmB,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC;IAOpG,UAAU,CAAS,UAAU,EAAE,sBAAsB,EAAE,EAAmB,UAAU,GAAE,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,EAAO;IAQlH,MAAM,CAAc,EAAE,EAAE,MAAM,EAAU,SAAS,EAAE,sBAAsB,EAAmB,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC;IAO7H,aAAa,CAAc,EAAE,EAAE,MAAM,EAAU,SAAS,EAAE,sBAAsB,EAAmB,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC;IAM9H,WAAW,CAAS,GAAG,EAAE,MAAM,EAAE;;;;IAMjC,OAAO,CAAc,EAAE,EAAE,MAAM;;;;IAe/B,QAAQ,CAAU,KAAK,EAAE,GAAG;;;;;;;;;;;;;;;;;;;;IAM5B,OAAO,CAAc,EAAE,EAAE,MAAM,EAAW,KAAK,EAAE,GAAG;IAMpD,UAAU,CAAS,GAAG,EAAE,MAAM,EAAE;IAMhC,MAAM,CAAc,EAAE,EAAE,MAAM;IAM9B,mBAAmB,CAAS,GAAG,EAAE,iBAAiB,EAAgB,UAAU,EAAE,cAAc;IAM5F,uBAAuB,CAAc,EAAE,EAAE,MAAM;IAM/C,YAAY,CAAS,GAAG,EAAE,iBAAiB;CAGlD"}
@@ -21,6 +21,7 @@ const ai_interaction_service_1 = require("../services/ai-interaction.service");
21
21
  const create_ai_interaction_dto_1 = require("../dtos/create-ai-interaction.dto");
22
22
  const update_ai_interaction_dto_1 = require("../dtos/update-ai-interaction.dto");
23
23
  const invoke_ai_prompt_dto_1 = require("../dtos/invoke-ai-prompt.dto");
24
+ const active_user_decorator_1 = require("../decorators/active-user.decorator");
24
25
  var ShowSoftDeleted;
25
26
  (function (ShowSoftDeleted) {
26
27
  ShowSoftDeleted["INCLUSIVE"] = "inclusive";
@@ -60,8 +61,8 @@ let AiInteractionController = class AiInteractionController {
60
61
  async delete(id) {
61
62
  return this.service.delete(id);
62
63
  }
63
- async triggerMcpClientJob(dto) {
64
- return this.service.triggerMcpClientJob(dto.prompt);
64
+ async triggerMcpClientJob(dto, activeUser) {
65
+ return this.service.triggerMcpClientJob(dto.prompt, activeUser.sub);
65
66
  }
66
67
  async applySolidAiInteraction(id) {
67
68
  return this.service.applySolidAiInteraction(+id);
@@ -186,8 +187,9 @@ __decorate([
186
187
  (0, common_1.Post)('/trigger-mcp-client-job'),
187
188
  openapi.ApiResponse({ status: 201, type: Object }),
188
189
  __param(0, (0, common_1.Body)()),
190
+ __param(1, (0, active_user_decorator_1.ActiveUser)()),
189
191
  __metadata("design:type", Function),
190
- __metadata("design:paramtypes", [invoke_ai_prompt_dto_1.InvokeAiPromptDto]),
192
+ __metadata("design:paramtypes", [invoke_ai_prompt_dto_1.InvokeAiPromptDto, Object]),
191
193
  __metadata("design:returntype", Promise)
192
194
  ], AiInteractionController.prototype, "triggerMcpClientJob", null);
193
195
  __decorate([
@@ -1 +1 @@
1
- {"version":3,"file":"ai-interaction.controller.js","sourceRoot":"","sources":["../../src/controllers/ai-interaction.controller.ts"],"names":[],"mappings":"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","sourcesContent":["import { Controller, Post, Body, Param, UploadedFiles, UseInterceptors, Put, Get, Query, Delete, Patch } from '@nestjs/common';\nimport { AnyFilesInterceptor } from \"@nestjs/platform-express\";\nimport { ApiBearerAuth, ApiQuery, ApiTags } from '@nestjs/swagger';\nimport { AiInteractionService } from '../services/ai-interaction.service';\nimport { CreateAiInteractionDto } from '../dtos/create-ai-interaction.dto';\nimport { UpdateAiInteractionDto } from '../dtos/update-ai-interaction.dto';\nimport { InvokeAiPromptDto } from '../dtos/invoke-ai-prompt.dto';\n\nenum ShowSoftDeleted {\n INCLUSIVE = \"inclusive\",\n EXCLUSIVE = \"exclusive\",\n}\n\n@ApiTags('Solid Core')\n@Controller('ai-interaction')\nexport class AiInteractionController {\n constructor(private readonly service: AiInteractionService) { }\n\n @ApiBearerAuth(\"jwt\")\n @Post()\n @UseInterceptors(AnyFilesInterceptor())\n create(@Body() createDto: CreateAiInteractionDto, @UploadedFiles() files: Array<Express.Multer.File>) {\n return this.service.create(createDto, files);\n }\n\n @ApiBearerAuth(\"jwt\")\n @Post('/bulk')\n @UseInterceptors(AnyFilesInterceptor())\n insertMany(@Body() createDtos: CreateAiInteractionDto[], @UploadedFiles() filesArray: Express.Multer.File[][] = []) {\n return this.service.insertMany(createDtos, filesArray);\n }\n\n\n @ApiBearerAuth(\"jwt\")\n @Put(':id')\n @UseInterceptors(AnyFilesInterceptor())\n update(@Param('id') id: number, @Body() updateDto: UpdateAiInteractionDto, @UploadedFiles() files: Array<Express.Multer.File>) {\n return this.service.update(id, updateDto, files);\n }\n\n @ApiBearerAuth(\"jwt\")\n @Patch(':id')\n @UseInterceptors(AnyFilesInterceptor())\n partialUpdate(@Param('id') id: number, @Body() updateDto: UpdateAiInteractionDto, @UploadedFiles() files: Array<Express.Multer.File>) {\n return this.service.update(id, updateDto, files, true);\n }\n\n @ApiBearerAuth(\"jwt\")\n @Post('/bulk-recover')\n async recoverMany(@Body() ids: number[]) {\n return this.service.recoverMany(ids);\n }\n\n @ApiBearerAuth(\"jwt\")\n @Get('/recover/:id')\n async recover(@Param('id') id: number) {\n return this.service.recover(id);\n }\n\n @ApiBearerAuth(\"jwt\")\n @ApiQuery({ name: 'showSoftDeleted', required: false, enum: ShowSoftDeleted })\n @ApiQuery({ name: 'limit', required: false, type: Number })\n @ApiQuery({ name: 'offset', required: false, type: Number })\n @ApiQuery({ name: 'fields', required: false, type: Array })\n @ApiQuery({ name: 'sort', required: false, type: Array })\n @ApiQuery({ name: 'groupBy', required: false, type: Array })\n @ApiQuery({ name: 'populate', required: false, type: Array })\n @ApiQuery({ name: 'populateMedia', required: false, type: Array })\n @ApiQuery({ name: 'filters', required: false, type: Array })\n @Get()\n async findMany(@Query() query: any) {\n return this.service.find(query);\n }\n\n @ApiBearerAuth(\"jwt\")\n @Get(':id')\n async findOne(@Param('id') id: string, @Query() query: any) {\n return this.service.findOne(+id, query);\n }\n\n @ApiBearerAuth(\"jwt\")\n @Delete('/bulk')\n async deleteMany(@Body() ids: number[]) {\n return this.service.deleteMany(ids);\n }\n\n @ApiBearerAuth(\"jwt\")\n @Delete(':id')\n async delete(@Param('id') id: number) {\n return this.service.delete(id);\n }\n\n @ApiBearerAuth(\"jwt\")\n @Post('/trigger-mcp-client-job')\n async triggerMcpClientJob(@Body() dto: InvokeAiPromptDto) {\n return this.service.triggerMcpClientJob(dto.prompt);\n }\n\n @ApiBearerAuth(\"jwt\")\n @Post(':id/apply-solid-ai-interaction')\n async applySolidAiInteraction(@Param('id') id: number) {\n return this.service.applySolidAiInteraction(+id);\n }\n\n @ApiBearerAuth(\"jwt\")\n @Post('/run-mcp-prompt')\n async runMcpPrompt(@Body() dto: InvokeAiPromptDto) {\n return this.service.runMcpPrompt(dto.prompt);\n }\n}\n"]}
1
+ {"version":3,"file":"ai-interaction.controller.js","sourceRoot":"","sources":["../../src/controllers/ai-interaction.controller.ts"],"names":[],"mappings":"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","sourcesContent":["import { Controller, Post, Body, Param, UploadedFiles, UseInterceptors, Put, Get, Query, Delete, Patch } from '@nestjs/common';\nimport { AnyFilesInterceptor } from \"@nestjs/platform-express\";\nimport { ApiBearerAuth, ApiQuery, ApiTags } from '@nestjs/swagger';\nimport { AiInteractionService } from '../services/ai-interaction.service';\nimport { CreateAiInteractionDto } from '../dtos/create-ai-interaction.dto';\nimport { UpdateAiInteractionDto } from '../dtos/update-ai-interaction.dto';\nimport { InvokeAiPromptDto } from '../dtos/invoke-ai-prompt.dto';\nimport { ActiveUser } from 'src/decorators/active-user.decorator';\nimport { ActiveUserData } from 'src/interfaces/active-user-data.interface';\n\nenum ShowSoftDeleted {\n INCLUSIVE = \"inclusive\",\n EXCLUSIVE = \"exclusive\",\n}\n\n@ApiTags('Solid Core')\n@Controller('ai-interaction')\nexport class AiInteractionController {\n constructor(private readonly service: AiInteractionService) { }\n\n @ApiBearerAuth(\"jwt\")\n @Post()\n @UseInterceptors(AnyFilesInterceptor())\n create(@Body() createDto: CreateAiInteractionDto, @UploadedFiles() files: Array<Express.Multer.File>) {\n return this.service.create(createDto, files);\n }\n\n @ApiBearerAuth(\"jwt\")\n @Post('/bulk')\n @UseInterceptors(AnyFilesInterceptor())\n insertMany(@Body() createDtos: CreateAiInteractionDto[], @UploadedFiles() filesArray: Express.Multer.File[][] = []) {\n return this.service.insertMany(createDtos, filesArray);\n }\n\n\n @ApiBearerAuth(\"jwt\")\n @Put(':id')\n @UseInterceptors(AnyFilesInterceptor())\n update(@Param('id') id: number, @Body() updateDto: UpdateAiInteractionDto, @UploadedFiles() files: Array<Express.Multer.File>) {\n return this.service.update(id, updateDto, files);\n }\n\n @ApiBearerAuth(\"jwt\")\n @Patch(':id')\n @UseInterceptors(AnyFilesInterceptor())\n partialUpdate(@Param('id') id: number, @Body() updateDto: UpdateAiInteractionDto, @UploadedFiles() files: Array<Express.Multer.File>) {\n return this.service.update(id, updateDto, files, true);\n }\n\n @ApiBearerAuth(\"jwt\")\n @Post('/bulk-recover')\n async recoverMany(@Body() ids: number[]) {\n return this.service.recoverMany(ids);\n }\n\n @ApiBearerAuth(\"jwt\")\n @Get('/recover/:id')\n async recover(@Param('id') id: number) {\n return this.service.recover(id);\n }\n\n @ApiBearerAuth(\"jwt\")\n @ApiQuery({ name: 'showSoftDeleted', required: false, enum: ShowSoftDeleted })\n @ApiQuery({ name: 'limit', required: false, type: Number })\n @ApiQuery({ name: 'offset', required: false, type: Number })\n @ApiQuery({ name: 'fields', required: false, type: Array })\n @ApiQuery({ name: 'sort', required: false, type: Array })\n @ApiQuery({ name: 'groupBy', required: false, type: Array })\n @ApiQuery({ name: 'populate', required: false, type: Array })\n @ApiQuery({ name: 'populateMedia', required: false, type: Array })\n @ApiQuery({ name: 'filters', required: false, type: Array })\n @Get()\n async findMany(@Query() query: any) {\n return this.service.find(query);\n }\n\n @ApiBearerAuth(\"jwt\")\n @Get(':id')\n async findOne(@Param('id') id: string, @Query() query: any) {\n return this.service.findOne(+id, query);\n }\n\n @ApiBearerAuth(\"jwt\")\n @Delete('/bulk')\n async deleteMany(@Body() ids: number[]) {\n return this.service.deleteMany(ids);\n }\n\n @ApiBearerAuth(\"jwt\")\n @Delete(':id')\n async delete(@Param('id') id: number) {\n return this.service.delete(id);\n }\n\n @ApiBearerAuth(\"jwt\")\n @Post('/trigger-mcp-client-job')\n async triggerMcpClientJob(@Body() dto: InvokeAiPromptDto, @ActiveUser() activeUser: ActiveUserData) {\n return this.service.triggerMcpClientJob(dto.prompt, activeUser.sub);\n }\n\n @ApiBearerAuth(\"jwt\")\n @Post(':id/apply-solid-ai-interaction')\n async applySolidAiInteraction(@Param('id') id: number) {\n return this.service.applySolidAiInteraction(+id);\n }\n\n @ApiBearerAuth(\"jwt\")\n @Post('/run-mcp-prompt')\n async runMcpPrompt(@Body() dto: InvokeAiPromptDto) {\n return this.service.runMcpPrompt(dto.prompt);\n }\n}\n"]}
@@ -1,12 +1,12 @@
1
- import { AuthenticationService } from '../services/authentication.service';
2
- import { SignInDto } from '../dtos/sign-in.dto';
3
- import { SignUpDto } from '../dtos/sign-up.dto';
4
1
  import { Response } from 'express';
5
- import { RefreshTokenDto } from '../dtos/refresh-token.dto';
6
- import { InitiateForgotPasswordDto } from '../dtos/initiate-forgot-password.dto';
7
- import { ConfirmForgotPasswordDto } from '../dtos/confirm-forgot-password.dto';
8
2
  import { ChangePasswordDto } from "../dtos/change-password.dto";
3
+ import { ConfirmForgotPasswordDto } from '../dtos/confirm-forgot-password.dto';
4
+ import { InitiateForgotPasswordDto } from '../dtos/initiate-forgot-password.dto';
5
+ import { RefreshTokenDto } from '../dtos/refresh-token.dto';
6
+ import { SignInDto } from '../dtos/sign-in.dto';
7
+ import { SignUpDto } from '../dtos/sign-up.dto';
9
8
  import { ActiveUserData } from "../interfaces/active-user-data.interface";
9
+ import { AuthenticationService } from '../services/authentication.service';
10
10
  export declare class AuthenticationController {
11
11
  private readonly authService;
12
12
  private readonly logger;
@@ -1 +1 @@
1
- {"version":3,"file":"authentication.controller.d.ts","sourceRoot":"","sources":["../../src/controllers/authentication.controller.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAC3E,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACnC,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAI5D,OAAO,EAAE,yBAAyB,EAAE,MAAM,sCAAsC,CAAC;AACjF,OAAO,EAAE,wBAAwB,EAAE,MAAM,qCAAqC,CAAC;AAC/E,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAEhE,OAAO,EAAE,cAAc,EAAE,MAAM,0CAA0C,CAAC;AAK1E,qBAEa,wBAAwB;IAGrB,OAAO,CAAC,QAAQ,CAAC,WAAW;IAFxC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA6C;gBAEvC,WAAW,EAAE,qBAAqB;IAI/D,MAAM,CAAS,SAAS,EAAE,SAAS;IAMnC,aAAa,CAAS,SAAS,EAAE,SAAS,EAAgB,UAAU,EAAE,cAAc;IAQ9E,MAAM,CACoB,QAAQ,EAAE,QAAQ,EACtC,SAAS,EAAE,SAAS;;;;;;;;;;;;IAoBhC,aAAa,CAAS,eAAe,EAAE,eAAe;;;;IAMtD,sBAAsB,CAAS,yBAAyB,EAAE,yBAAyB;;;;;;;;;;;;;IAMnF,qBAAqB,CAAS,wBAAwB,EAAE,wBAAwB;;;;;;;IAMhF,cAAc,CAAS,iBAAiB,EAAE,iBAAiB,EAAgB,UAAU,EAAE,cAAc;IAMrG,EAAE,CACgB,UAAU,EAAE,cAAc;;;;;;;;;;;IAQtC,MAAM;;;CAGf"}
1
+ {"version":3,"file":"authentication.controller.d.ts","sourceRoot":"","sources":["../../src/controllers/authentication.controller.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAGnC,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAE,wBAAwB,EAAE,MAAM,qCAAqC,CAAC;AAC/E,OAAO,EAAE,yBAAyB,EAAE,MAAM,sCAAsC,CAAC;AACjF,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,0CAA0C,CAAC;AAC1E,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAI3E,qBAIa,wBAAwB;IAGrB,OAAO,CAAC,QAAQ,CAAC,WAAW;IAFxC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA6C;gBAEvC,WAAW,EAAE,qBAAqB;IAK/D,MAAM,CAAS,SAAS,EAAE,SAAS;IAMnC,aAAa,CAAS,SAAS,EAAE,SAAS,EAAgB,UAAU,EAAE,cAAc;IAS9E,MAAM,CACoB,QAAQ,EAAE,QAAQ,EACtC,SAAS,EAAE,SAAS;;;;;;;;;;;;IAqBhC,aAAa,CAAS,eAAe,EAAE,eAAe;;;;IAOtD,sBAAsB,CAAS,yBAAyB,EAAE,yBAAyB;;;;;;;;;;;;;IAOnF,qBAAqB,CAAS,wBAAwB,EAAE,wBAAwB;;;;;;;IAMhF,cAAc,CAAS,iBAAiB,EAAE,iBAAiB,EAAgB,UAAU,EAAE,cAAc;IAMrG,EAAE,CACgB,UAAU,EAAE,cAAc;;;;;;;;;;;IAQtC,MAAM;;;CAGf"}
@@ -16,16 +16,17 @@ Object.defineProperty(exports, "__esModule", { value: true });
16
16
  exports.AuthenticationController = void 0;
17
17
  const openapi = require("@nestjs/swagger");
18
18
  const common_1 = require("@nestjs/common");
19
- const authentication_service_1 = require("../services/authentication.service");
20
- const sign_in_dto_1 = require("../dtos/sign-in.dto");
21
- const sign_up_dto_1 = require("../dtos/sign-up.dto");
22
- const refresh_token_dto_1 = require("../dtos/refresh-token.dto");
23
19
  const swagger_1 = require("@nestjs/swagger");
20
+ const throttler_1 = require("@nestjs/throttler");
21
+ const active_user_decorator_1 = require("../decorators/active-user.decorator");
24
22
  const public_decorator_1 = require("../decorators/public.decorator");
25
- const initiate_forgot_password_dto_1 = require("../dtos/initiate-forgot-password.dto");
26
- const confirm_forgot_password_dto_1 = require("../dtos/confirm-forgot-password.dto");
27
23
  const change_password_dto_1 = require("../dtos/change-password.dto");
28
- const active_user_decorator_1 = require("../decorators/active-user.decorator");
24
+ const confirm_forgot_password_dto_1 = require("../dtos/confirm-forgot-password.dto");
25
+ const initiate_forgot_password_dto_1 = require("../dtos/initiate-forgot-password.dto");
26
+ const refresh_token_dto_1 = require("../dtos/refresh-token.dto");
27
+ const sign_in_dto_1 = require("../dtos/sign-in.dto");
28
+ const sign_up_dto_1 = require("../dtos/sign-up.dto");
29
+ const authentication_service_1 = require("../services/authentication.service");
29
30
  let AuthenticationController = AuthenticationController_1 = class AuthenticationController {
30
31
  constructor(authService) {
31
32
  this.authService = authService;
@@ -62,6 +63,7 @@ let AuthenticationController = AuthenticationController_1 = class Authentication
62
63
  exports.AuthenticationController = AuthenticationController;
63
64
  __decorate([
64
65
  (0, public_decorator_1.Public)(),
66
+ (0, throttler_1.SkipThrottle)({ login: false }),
65
67
  (0, common_1.Post)('register'),
66
68
  openapi.ApiResponse({ status: 201, type: require("../entities/user.entity").User }),
67
69
  __param(0, (0, common_1.Body)()),
@@ -81,6 +83,7 @@ __decorate([
81
83
  ], AuthenticationController.prototype, "signUpPrivate", null);
82
84
  __decorate([
83
85
  (0, public_decorator_1.Public)(),
86
+ (0, throttler_1.SkipThrottle)({ login: false }),
84
87
  (0, common_1.HttpCode)(common_1.HttpStatus.OK),
85
88
  (0, common_1.Post)('authenticate'),
86
89
  openapi.ApiResponse({ status: common_1.HttpStatus.OK }),
@@ -92,6 +95,7 @@ __decorate([
92
95
  ], AuthenticationController.prototype, "signIn", null);
93
96
  __decorate([
94
97
  (0, public_decorator_1.Public)(),
98
+ (0, throttler_1.SkipThrottle)({ login: false }),
95
99
  (0, common_1.HttpCode)(common_1.HttpStatus.OK),
96
100
  (0, common_1.Post)('refresh-tokens'),
97
101
  openapi.ApiResponse({ status: common_1.HttpStatus.OK }),
@@ -102,6 +106,7 @@ __decorate([
102
106
  ], AuthenticationController.prototype, "refreshTokens", null);
103
107
  __decorate([
104
108
  (0, public_decorator_1.Public)(),
109
+ (0, throttler_1.SkipThrottle)({ login: false }),
105
110
  (0, common_1.Post)('initiate/forgot-password'),
106
111
  openapi.ApiResponse({ status: 201 }),
107
112
  __param(0, (0, common_1.Body)()),
@@ -111,6 +116,7 @@ __decorate([
111
116
  ], AuthenticationController.prototype, "initiateForgotPassword", null);
112
117
  __decorate([
113
118
  (0, public_decorator_1.Public)(),
119
+ (0, throttler_1.SkipThrottle)({ login: false }),
114
120
  (0, common_1.Post)('confirm/forgot-password'),
115
121
  openapi.ApiResponse({ status: 201 }),
116
122
  __param(0, (0, common_1.Body)()),
@@ -149,6 +155,8 @@ __decorate([
149
155
  exports.AuthenticationController = AuthenticationController = AuthenticationController_1 = __decorate([
150
156
  (0, common_1.Controller)('iam'),
151
157
  (0, swagger_1.ApiTags)("Iam"),
158
+ (0, common_1.UseGuards)(throttler_1.ThrottlerGuard),
159
+ (0, throttler_1.SkipThrottle)({ login: true, short: true, burst: true, sustained: true }),
152
160
  __metadata("design:paramtypes", [authentication_service_1.AuthenticationService])
153
161
  ], AuthenticationController);
154
162
  //# sourceMappingURL=authentication.controller.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"authentication.controller.js","sourceRoot":"","sources":["../../src/controllers/authentication.controller.ts"],"names":[],"mappings":"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","sourcesContent":["import { Body, Controller, Get, HttpCode, HttpStatus, Logger, Post, Res, UseGuards } from '@nestjs/common';\nimport { AuthenticationService } from '../services/authentication.service';\nimport { SignInDto } from '../dtos/sign-in.dto';\nimport { SignUpDto } from '../dtos/sign-up.dto';\nimport { Response } from 'express';\nimport { RefreshTokenDto } from '../dtos/refresh-token.dto';\nimport { ApiBearerAuth, ApiTags } from '@nestjs/swagger';\nimport { LocalAuthGuard } from '../passport-strategies/local.strategy';\nimport { Public } from '../decorators/public.decorator';\nimport { InitiateForgotPasswordDto } from '../dtos/initiate-forgot-password.dto';\nimport { ConfirmForgotPasswordDto } from '../dtos/confirm-forgot-password.dto';\nimport { ChangePasswordDto } from \"../dtos/change-password.dto\";\nimport { ActiveUser } from \"../decorators/active-user.decorator\";\nimport { ActiveUserData } from \"../interfaces/active-user-data.interface\";\nimport { RegisterPrivateDto } from '../dtos/register-private.dto';\n\n\n// @Auth(AuthType.None)\n@Controller('iam')\n@ApiTags(\"Iam\")\nexport class AuthenticationController {\n private readonly logger = new Logger(AuthenticationController.name);\n\n constructor(private readonly authService: AuthenticationService) { }\n\n @Public()\n @Post('register')\n signUp(@Body() signUpDto: SignUpDto) {\n return this.authService.signUp(signUpDto);\n }\n\n @ApiBearerAuth(\"jwt\")\n @Post('register-private')\n signUpPrivate(@Body() signUpDto: SignUpDto, @ActiveUser() activeUser: ActiveUserData) {\n return this.authService.signUp(signUpDto, activeUser);\n }\n\n @Public()\n // @UseGuards(LocalAuthGuard)\n @HttpCode(HttpStatus.OK) // by default @Post does 201, we wanted 200 - hence using @HttpCode(HttpStatus.OK)\n @Post('authenticate')\n async signIn(\n @Res({ passthrough: true }) response: Response,\n @Body() signInDto: SignInDto\n ) {\n // This means that we are passing the token back in plain text. \n // This is less secure. \n // console.log(\"signInDto in Signin Controller\", signInDto);\n\n return this.authService.signIn(signInDto);\n\n // This means we are setting the token as a http only cookie.\n // const accessToken = await this.authService.signIn(signInDto);\n // response.cookie('accessToken', accessToken, {\n // secure: true,\n // httpOnly: true,\n // sameSite: true,\n // });\n }\n\n @Public()\n @HttpCode(HttpStatus.OK) // changed since the default is 201\n @Post('refresh-tokens')\n refreshTokens(@Body() refreshTokenDto: RefreshTokenDto) {\n return this.authService.refreshTokens(refreshTokenDto);\n }\n\n @Public()\n @Post('initiate/forgot-password')\n initiateForgotPassword(@Body() initiateForgotPasswordDto: InitiateForgotPasswordDto) {\n return this.authService.initiateForgotPassword(initiateForgotPasswordDto);\n }\n\n @Public()\n @Post('confirm/forgot-password')\n confirmForgotPassword(@Body() confirmForgotPasswordDto: ConfirmForgotPasswordDto) {\n return this.authService.confirmForgotPassword(confirmForgotPasswordDto);\n }\n\n @ApiBearerAuth(\"jwt\")\n @Post('change-password')\n changePassword(@Body() changePasswordDto: ChangePasswordDto, @ActiveUser() activeUser: ActiveUserData) {\n return this.authService.changePassword(changePasswordDto, activeUser);\n }\n\n @ApiBearerAuth(\"jwt\")\n @Get('me')\n me(\n @ActiveUser() activeUser: ActiveUserData\n ) {\n return this.authService.me(activeUser);\n }\n\n @ApiBearerAuth(\"jwt\")\n @Post('logout')\n @HttpCode(HttpStatus.OK)\n async logout() {\n return this.authService.logout();\n }\n}\n"]}
1
+ {"version":3,"file":"authentication.controller.js","sourceRoot":"","sources":["../../src/controllers/authentication.controller.ts"],"names":[],"mappings":"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","sourcesContent":["import { Body, Controller, Get, HttpCode, HttpStatus, Logger, Post, Res, UseGuards } from '@nestjs/common';\nimport { ApiBearerAuth, ApiTags } from '@nestjs/swagger';\nimport { SkipThrottle, ThrottlerGuard } from '@nestjs/throttler';\nimport { Response } from 'express';\nimport { ActiveUser } from \"../decorators/active-user.decorator\";\nimport { Public } from '../decorators/public.decorator';\nimport { ChangePasswordDto } from \"../dtos/change-password.dto\";\nimport { ConfirmForgotPasswordDto } from '../dtos/confirm-forgot-password.dto';\nimport { InitiateForgotPasswordDto } from '../dtos/initiate-forgot-password.dto';\nimport { RefreshTokenDto } from '../dtos/refresh-token.dto';\nimport { SignInDto } from '../dtos/sign-in.dto';\nimport { SignUpDto } from '../dtos/sign-up.dto';\nimport { ActiveUserData } from \"../interfaces/active-user-data.interface\";\nimport { AuthenticationService } from '../services/authentication.service';\n\n\n// @Auth(AuthType.None)\n@Controller('iam')\n@ApiTags(\"Iam\")\n@UseGuards(ThrottlerGuard)\n@SkipThrottle({login: true, short: true, burst: true, sustained: true}) // disable all sets by default for this controller\nexport class AuthenticationController {\n private readonly logger = new Logger(AuthenticationController.name);\n\n constructor(private readonly authService: AuthenticationService) { }\n\n @Public()\n @SkipThrottle({ login: false }) //Enable the login throttle only \n @Post('register')\n signUp(@Body() signUpDto: SignUpDto) {\n return this.authService.signUp(signUpDto);\n }\n\n @ApiBearerAuth(\"jwt\")\n @Post('register-private')\n signUpPrivate(@Body() signUpDto: SignUpDto, @ActiveUser() activeUser: ActiveUserData) {\n return this.authService.signUp(signUpDto, activeUser);\n }\n\n @Public()\n // @UseGuards(LocalAuthGuard)\n @SkipThrottle({ login: false }) //Enable the login throttle only\n @HttpCode(HttpStatus.OK) // by default @Post does 201, we wanted 200 - hence using @HttpCode(HttpStatus.OK)\n @Post('authenticate')\n async signIn(\n @Res({ passthrough: true }) response: Response,\n @Body() signInDto: SignInDto\n ) {\n // This means that we are passing the token back in plain text. \n // This is less secure. \n // console.log(\"signInDto in Signin Controller\", signInDto);\n\n return this.authService.signIn(signInDto);\n\n // This means we are setting the token as a http only cookie.\n // const accessToken = await this.authService.signIn(signInDto);\n // response.cookie('accessToken', accessToken, {\n // secure: true,\n // httpOnly: true,\n // sameSite: true,\n // });\n }\n\n @Public()\n @SkipThrottle({ login: false }) //Enable the login throttle only\n @HttpCode(HttpStatus.OK) // changed since the default is 201\n @Post('refresh-tokens')\n refreshTokens(@Body() refreshTokenDto: RefreshTokenDto) {\n return this.authService.refreshTokens(refreshTokenDto);\n }\n\n @Public()\n @SkipThrottle({ login: false }) //Enable the login throttle only\n @Post('initiate/forgot-password')\n initiateForgotPassword(@Body() initiateForgotPasswordDto: InitiateForgotPasswordDto) {\n return this.authService.initiateForgotPassword(initiateForgotPasswordDto);\n }\n\n @Public()\n @SkipThrottle({ login: false }) //Enable the login throttle only\n @Post('confirm/forgot-password')\n confirmForgotPassword(@Body() confirmForgotPasswordDto: ConfirmForgotPasswordDto) {\n return this.authService.confirmForgotPassword(confirmForgotPasswordDto);\n }\n\n @ApiBearerAuth(\"jwt\")\n @Post('change-password')\n changePassword(@Body() changePasswordDto: ChangePasswordDto, @ActiveUser() activeUser: ActiveUserData) {\n return this.authService.changePassword(changePasswordDto, activeUser);\n }\n\n @ApiBearerAuth(\"jwt\")\n @Get('me')\n me(\n @ActiveUser() activeUser: ActiveUserData\n ) {\n return this.authService.me(activeUser);\n }\n\n @ApiBearerAuth(\"jwt\")\n @Post('logout')\n @HttpCode(HttpStatus.OK)\n async logout() {\n return this.authService.logout();\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"email-template.controller.d.ts","sourceRoot":"","sources":["../../src/controllers/email-template.controller.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,EAAE,sBAAsB,EAAE,MAAM,mCAAmC,CAAC;AAC3E,OAAO,EAAE,sBAAsB,EAAE,MAAM,mCAAmC,CAAC;AAW3E,qBAEa,uBAAuB;IACtB,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAAP,OAAO,EAAE,oBAAoB;IAKxD,MAAM,CAAS,SAAS,EAAE,sBAAsB,EAAmB,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC;IAOpG,UAAU,CAAS,UAAU,EAAE,sBAAsB,EAAE,EAAmB,UAAU,GAAE,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,EAAO;IAOlH,MAAM,CAAc,EAAE,EAAE,MAAM,EAAU,SAAS,EAAE,sBAAsB,EAAmB,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC;IAgBvH,QAAQ,CAAU,KAAK,EAAE,GAAG;;;;;;;;;;;;;;;;;;;;IAM5B,OAAO,CAAc,EAAE,EAAE,MAAM,EAAW,KAAK,EAAE,GAAG;IAKpD,UAAU,CAAS,GAAG,EAAE,MAAM,EAAE;IAMhC,MAAM,CAAc,EAAE,EAAE,MAAM;IAStC,uBAAuB,CAAwB,YAAY,EAAE,MAAM;CAuFpE"}
1
+ {"version":3,"file":"email-template.controller.d.ts","sourceRoot":"","sources":["../../src/controllers/email-template.controller.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,EAAE,sBAAsB,EAAE,MAAM,mCAAmC,CAAC;AAC3E,OAAO,EAAE,sBAAsB,EAAE,MAAM,mCAAmC,CAAC;AAY3E,qBAIa,uBAAuB;IACtB,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAAP,OAAO,EAAE,oBAAoB;IAKxD,MAAM,CAAS,SAAS,EAAE,sBAAsB,EAAmB,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC;IAOpG,UAAU,CAAS,UAAU,EAAE,sBAAsB,EAAE,EAAmB,UAAU,GAAE,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,EAAO;IAOlH,MAAM,CAAc,EAAE,EAAE,MAAM,EAAU,SAAS,EAAE,sBAAsB,EAAmB,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC;IAgBvH,QAAQ,CAAU,KAAK,EAAE,GAAG;;;;;;;;;;;;;;;;;;;;IAM5B,OAAO,CAAc,EAAE,EAAE,MAAM,EAAW,KAAK,EAAE,GAAG;IAKpD,UAAU,CAAS,GAAG,EAAE,MAAM,EAAE;IAMhC,MAAM,CAAc,EAAE,EAAE,MAAM;IAStC,uBAAuB,CAAwB,YAAY,EAAE,MAAM;CAuFpE"}
@@ -22,6 +22,7 @@ const update_email_template_dto_1 = require("../dtos/update-email-template.dto")
22
22
  const public_decorator_1 = require("../decorators/public.decorator");
23
23
  const Mailgen = require("mailgen");
24
24
  const platform_express_1 = require("@nestjs/platform-express");
25
+ const throttler_1 = require("@nestjs/throttler");
25
26
  let EmailTemplateController = class EmailTemplateController {
26
27
  constructor(service) {
27
28
  this.service = service;
@@ -207,6 +208,8 @@ __decorate([
207
208
  exports.EmailTemplateController = EmailTemplateController = __decorate([
208
209
  (0, common_1.Controller)('email-template'),
209
210
  (0, swagger_1.ApiTags)("Common"),
211
+ (0, common_1.UseGuards)(throttler_1.ThrottlerGuard),
212
+ (0, throttler_1.SkipThrottle)({ short: false, login: true, burst: true, sustained: true }),
210
213
  __metadata("design:paramtypes", [email_template_service_1.EmailTemplateService])
211
214
  ], EmailTemplateController);
212
215
  //# sourceMappingURL=email-template.controller.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"email-template.controller.js","sourceRoot":"","sources":["../../src/controllers/email-template.controller.ts"],"names":[],"mappings":"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","sourcesContent":["import { Body, Controller, Delete, Get, Header, Param, Patch, Post, Put, Query, UploadedFiles, UseInterceptors } from '@nestjs/common';\nimport { ApiBearerAuth, ApiQuery, ApiTags } from '@nestjs/swagger';\nimport { PaginationQueryDto } from 'src/dtos/pagination-query.dto';\nimport { Roles } from 'src/decorators/roles.decorator';\nimport { EmailTemplateService } from '../services/email-template.service';\nimport { CreateEmailTemplateDto } from '../dtos/create-email-template.dto';\nimport { UpdateEmailTemplateDto } from '../dtos/update-email-template.dto';\nimport { Public } from 'src/decorators/public.decorator';\n\n\n\n// TODO: esInterop not working somehow, defaulted to using the require syntax to import Mailgen. Figure a better way to do this. \n// import { Mailgen } from 'mailgen';\nimport Mailgen = require('mailgen');\nimport { AnyFilesInterceptor } from '@nestjs/platform-express';\n\n\n@Controller('email-template')\n@ApiTags(\"Common\")\nexport class EmailTemplateController {\n constructor(private readonly service: EmailTemplateService) { }\n\n @Public()\n @Post()\n @UseInterceptors(AnyFilesInterceptor())\n create(@Body() createDto: CreateEmailTemplateDto, @UploadedFiles() files: Array<Express.Multer.File>) {\n return this.service.create(createDto, files);\n }\n \n @Public()\n @Post('/bulk')\n @UseInterceptors(AnyFilesInterceptor())\n insertMany(@Body() createDtos: CreateEmailTemplateDto[], @UploadedFiles() filesArray: Express.Multer.File[][] = []) {\n return this.service.insertMany(createDtos, filesArray);\n }\n \n @Public()\n @Put(':id')\n @UseInterceptors(AnyFilesInterceptor())\n update(@Param('id') id: number, @Body() updateDto: UpdateEmailTemplateDto, @UploadedFiles() files: Array<Express.Multer.File>) {\n return this.service.update(id, updateDto, files);\n }\n \n @Public()\n @ApiQuery({ name: 'showSoftDeleted', required: false, type: Boolean })\n @ApiQuery({ name: 'showOnlySoftDeleted', required: false, type: Boolean })\n @ApiQuery({ name: 'limit', required: false, type: Number })\n @ApiQuery({ name: 'offset', required: false, type: Number })\n @ApiQuery({ name: 'fields', required: false, type: Array })\n @ApiQuery({ name: 'sort', required: false, type: Array })\n @ApiQuery({ name: 'groupBy', required: false, type: Array })\n @ApiQuery({ name: 'populate', required: false, type: Array })\n @ApiQuery({ name: 'populateMedia', required: false, type: Array })\n @ApiQuery({ name: 'filters', required: false, type: Array })\n @Get()\n async findMany(@Query() query: any) {\n return this.service.find(query);\n }\n \n @Public()\n @Get(':id')\n async findOne(@Param('id') id: string, @Query() query: any) {\n return this.service.findOne(+id, query);\n }\n \n @Delete('/bulk')\n async deleteMany(@Body() ids: number[]) {\n return this.service.deleteMany(ids);\n }\n \n @Public()\n @Delete(':id')\n async delete(@Param('id') id: number) {\n return this.service.delete(id);\n }\n // /api/email-templates/mailgen-template/otp-template\n // @ApiBearerAuth(\"jwt\")\n // @Roles('Admin')\n @Public()\n @Get('mailgen-template/:templateType')\n @Header('content-type', 'text/html')\n generateMailgenTemplate(@Param('templateType') templateType: string) {\n const appName = process.env.SOLID_APP_NAME;\n const appUrl = process.env.SOLID_APP_WEBSITE_URL;\n\n // Configure mailgen by setting a theme and your product info\n var mailGenerator = new Mailgen({\n theme: 'default',\n product: {\n // Appears in header & footer of e-mails\n name: appName,\n link: appUrl\n // Optional product logo\n // logo: 'https://mailgen.js/img/logo.png'\n }\n });\n\n let email = null;\n if (templateType === 'otp-on-register') {\n email = {\n body: {\n name: 'John Appleseed',\n intro: `Welcome to ${appName}! We\\'re very excited to have you on board.`,\n action: {\n instructions: `To get started with ${appName}, please verify your account using the below verification code.`,\n button: {\n color: '#22BC66', // Optional action button color\n text: `321455`,\n link: null\n }\n },\n outro: 'Need help, or have questions? Just reply to this email, we\\'d love to help.'\n }\n };\n }\n if (templateType === 'otp-on-login') {\n email = {\n body: {\n name: 'John Appleseed',\n intro: `Welcome to ${appName}!`,\n action: {\n instructions: `Login to ${appName}, using the below verification code.`,\n button: {\n color: '#22BC66', // Optional action button color\n text: `321455`,\n link: null\n }\n },\n outro: 'Need help, or have questions? Just reply to this email, we\\'d love to help.'\n }\n };\n }\n if (templateType === 'forgot-password') {\n email = {\n body: {\n name: 'John Appleseed',\n intro: `Welcome to ${appName}!`,\n action: {\n instructions: `Click on the below link to reset your password. Please note that this link will expire in 10 minutes.`,\n button: {\n color: '#22BC66', // Optional action button color\n text: `Reset Password`,\n link: `https://example.com`\n }\n },\n outro: 'Need help, or have questions? Just reply to this email, we\\'d love to help.'\n }\n };\n }\n\n // Generate an HTML email with the provided contents\n var emailBody = mailGenerator.generate(email);\n\n // Generate the plaintext version of the e-mail (for clients that do not support HTML)\n // var emailText = mailGenerator.generatePlaintext(email);\n\n // Optionally, preview the generated HTML e-mail by writing it to a local file\n // require('fs').writeFileSync('preview.html', emailBody, 'utf8');\n\n // `emailBody` now contains the HTML body,\n // and `emailText` contains the textual version.\n //\n // It's up to you to send the e-mail.\n // Check out nodemailer to accomplish this:\n // https://nodemailer.com/\n return emailBody;\n }\n\n}\n"]}
1
+ {"version":3,"file":"email-template.controller.js","sourceRoot":"","sources":["../../src/controllers/email-template.controller.ts"],"names":[],"mappings":"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","sourcesContent":["import { Body, Controller, Delete, Get, Header, Param, Patch, Post, Put, Query, UploadedFiles, UseGuards, UseInterceptors } from '@nestjs/common';\nimport { ApiBearerAuth, ApiQuery, ApiTags } from '@nestjs/swagger';\nimport { PaginationQueryDto } from 'src/dtos/pagination-query.dto';\nimport { Roles } from 'src/decorators/roles.decorator';\nimport { EmailTemplateService } from '../services/email-template.service';\nimport { CreateEmailTemplateDto } from '../dtos/create-email-template.dto';\nimport { UpdateEmailTemplateDto } from '../dtos/update-email-template.dto';\nimport { Public } from 'src/decorators/public.decorator';\n\n\n\n// TODO: esInterop not working somehow, defaulted to using the require syntax to import Mailgen. Figure a better way to do this. \n// import { Mailgen } from 'mailgen';\nimport Mailgen = require('mailgen');\nimport { AnyFilesInterceptor } from '@nestjs/platform-express';\nimport { ThrottlerGuard, SkipThrottle } from '@nestjs/throttler';\n\n\n@Controller('email-template')\n@ApiTags(\"Common\")\n@UseGuards(ThrottlerGuard)\n@SkipThrottle({ short: false, login: true, burst: true, sustained: true }) //Enable the short throttle only \nexport class EmailTemplateController {\n constructor(private readonly service: EmailTemplateService) { }\n\n @Public()\n @Post()\n @UseInterceptors(AnyFilesInterceptor())\n create(@Body() createDto: CreateEmailTemplateDto, @UploadedFiles() files: Array<Express.Multer.File>) {\n return this.service.create(createDto, files);\n }\n \n @Public()\n @Post('/bulk')\n @UseInterceptors(AnyFilesInterceptor())\n insertMany(@Body() createDtos: CreateEmailTemplateDto[], @UploadedFiles() filesArray: Express.Multer.File[][] = []) {\n return this.service.insertMany(createDtos, filesArray);\n }\n \n @Public()\n @Put(':id')\n @UseInterceptors(AnyFilesInterceptor())\n update(@Param('id') id: number, @Body() updateDto: UpdateEmailTemplateDto, @UploadedFiles() files: Array<Express.Multer.File>) {\n return this.service.update(id, updateDto, files);\n }\n \n @Public()\n @ApiQuery({ name: 'showSoftDeleted', required: false, type: Boolean })\n @ApiQuery({ name: 'showOnlySoftDeleted', required: false, type: Boolean })\n @ApiQuery({ name: 'limit', required: false, type: Number })\n @ApiQuery({ name: 'offset', required: false, type: Number })\n @ApiQuery({ name: 'fields', required: false, type: Array })\n @ApiQuery({ name: 'sort', required: false, type: Array })\n @ApiQuery({ name: 'groupBy', required: false, type: Array })\n @ApiQuery({ name: 'populate', required: false, type: Array })\n @ApiQuery({ name: 'populateMedia', required: false, type: Array })\n @ApiQuery({ name: 'filters', required: false, type: Array })\n @Get()\n async findMany(@Query() query: any) {\n return this.service.find(query);\n }\n \n @Public()\n @Get(':id')\n async findOne(@Param('id') id: string, @Query() query: any) {\n return this.service.findOne(+id, query);\n }\n \n @Delete('/bulk')\n async deleteMany(@Body() ids: number[]) {\n return this.service.deleteMany(ids);\n }\n \n @Public()\n @Delete(':id')\n async delete(@Param('id') id: number) {\n return this.service.delete(id);\n }\n // /api/email-templates/mailgen-template/otp-template\n // @ApiBearerAuth(\"jwt\")\n // @Roles('Admin')\n @Public()\n @Get('mailgen-template/:templateType')\n @Header('content-type', 'text/html')\n generateMailgenTemplate(@Param('templateType') templateType: string) {\n const appName = process.env.SOLID_APP_NAME;\n const appUrl = process.env.SOLID_APP_WEBSITE_URL;\n\n // Configure mailgen by setting a theme and your product info\n var mailGenerator = new Mailgen({\n theme: 'default',\n product: {\n // Appears in header & footer of e-mails\n name: appName,\n link: appUrl\n // Optional product logo\n // logo: 'https://mailgen.js/img/logo.png'\n }\n });\n\n let email = null;\n if (templateType === 'otp-on-register') {\n email = {\n body: {\n name: 'John Appleseed',\n intro: `Welcome to ${appName}! We\\'re very excited to have you on board.`,\n action: {\n instructions: `To get started with ${appName}, please verify your account using the below verification code.`,\n button: {\n color: '#22BC66', // Optional action button color\n text: `321455`,\n link: null\n }\n },\n outro: 'Need help, or have questions? Just reply to this email, we\\'d love to help.'\n }\n };\n }\n if (templateType === 'otp-on-login') {\n email = {\n body: {\n name: 'John Appleseed',\n intro: `Welcome to ${appName}!`,\n action: {\n instructions: `Login to ${appName}, using the below verification code.`,\n button: {\n color: '#22BC66', // Optional action button color\n text: `321455`,\n link: null\n }\n },\n outro: 'Need help, or have questions? Just reply to this email, we\\'d love to help.'\n }\n };\n }\n if (templateType === 'forgot-password') {\n email = {\n body: {\n name: 'John Appleseed',\n intro: `Welcome to ${appName}!`,\n action: {\n instructions: `Click on the below link to reset your password. Please note that this link will expire in 10 minutes.`,\n button: {\n color: '#22BC66', // Optional action button color\n text: `Reset Password`,\n link: `https://example.com`\n }\n },\n outro: 'Need help, or have questions? Just reply to this email, we\\'d love to help.'\n }\n };\n }\n\n // Generate an HTML email with the provided contents\n var emailBody = mailGenerator.generate(email);\n\n // Generate the plaintext version of the e-mail (for clients that do not support HTML)\n // var emailText = mailGenerator.generatePlaintext(email);\n\n // Optionally, preview the generated HTML e-mail by writing it to a local file\n // require('fs').writeFileSync('preview.html', emailBody, 'utf8');\n\n // `emailBody` now contains the HTML body,\n // and `emailText` contains the textual version.\n //\n // It's up to you to send the e-mail.\n // Check out nodemailer to accomplish this:\n // https://nodemailer.com/\n return emailBody;\n }\n\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"google-authentication.controller.d.ts","sourceRoot":"","sources":["../../src/controllers/google-authentication.controller.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAK3E,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAEvD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAIjD,qBAGa,8BAA8B;IAEZ,OAAO,CAAC,gBAAgB;IAC/C,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,WAAW;gBAFG,gBAAgB,EAAE,UAAU,CAAC,OAAO,SAAS,CAAC,EAC5D,WAAW,EAAE,WAAW,EACxB,WAAW,EAAE,qBAAqB;IAMjD,OAAO;IAIb,OAAO,CAAC,qBAAqB;IAS7B,kBAAkB,CAAQ,GAAG,EAAE,OAAO,EAAS,GAAG,EAAE,QAAQ;IA0BtD,uBAAuB,CAAsB,UAAU,KAAA;IAkBvD,UAAU,CAAsB,UAAU,KAAA;;;;;;;;;;;CAInD"}
1
+ {"version":3,"file":"google-authentication.controller.d.ts","sourceRoot":"","sources":["../../src/controllers/google-authentication.controller.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAK3E,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAEvD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAMjD,qBAKa,8BAA8B;IAEZ,OAAO,CAAC,gBAAgB;IAC/C,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,WAAW;gBAFG,gBAAgB,EAAE,UAAU,CAAC,OAAO,SAAS,CAAC,EAC5D,WAAW,EAAE,WAAW,EACxB,WAAW,EAAE,qBAAqB;IAMjD,OAAO;IAIb,OAAO,CAAC,qBAAqB;IAS7B,kBAAkB,CAAQ,GAAG,EAAE,OAAO,EAAS,GAAG,EAAE,QAAQ;IA0BtD,uBAAuB,CAAsB,UAAU,KAAA;IAkBvD,UAAU,CAAsB,UAAU,KAAA;;;;;;;;;;;CAInD"}
@@ -24,6 +24,7 @@ const user_service_1 = require("../services/user.service");
24
24
  const public_decorator_1 = require("../decorators/public.decorator");
25
25
  const iam_config_1 = require("../config/iam.config");
26
26
  const google_oauth_helper_1 = require("../helpers/google-oauth.helper");
27
+ const throttler_1 = require("@nestjs/throttler");
27
28
  let GoogleAuthenticationController = class GoogleAuthenticationController {
28
29
  constructor(iamConfiguration, userService, authService) {
29
30
  this.iamConfiguration = iamConfiguration;
@@ -98,6 +99,8 @@ exports.GoogleAuthenticationController = GoogleAuthenticationController = __deco
98
99
  (0, auth_decorator_1.Auth)(auth_type_enum_1.AuthType.None),
99
100
  (0, common_1.Controller)('iam/google'),
100
101
  (0, swagger_1.ApiTags)("Iam"),
102
+ (0, common_1.UseGuards)(throttler_1.ThrottlerGuard),
103
+ (0, throttler_1.SkipThrottle)({ login: false, short: false, burst: true, sustained: true }),
101
104
  __param(0, (0, common_1.Inject)(iam_config_1.iamConfig.KEY)),
102
105
  __metadata("design:paramtypes", [void 0, user_service_1.UserService,
103
106
  authentication_service_1.AuthenticationService])
@@ -1 +1 @@
1
- {"version":3,"file":"google-authentication.controller.js","sourceRoot":"","sources":["../../src/controllers/google-authentication.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAmH;AACnH,+EAA2E;AAC3E,iEAAoD;AACpD,4DAAmD;AACnD,6CAAoD;AACpD,wFAAgF;AAGhF,2DAAuD;AACvD,qEAAwD;AACxD,qDAAiD;AACjD,wEAA0E;AAMnE,IAAM,8BAA8B,GAApC,MAAM,8BAA8B;IACvC,YACmC,gBAA8C,EAC5D,WAAwB,EACxB,WAAkC;QAFpB,qBAAgB,GAAhB,gBAAgB,CAA8B;QAC5D,gBAAW,GAAX,WAAW,CAAa;QACxB,gBAAW,GAAX,WAAW,CAAuB;IACnD,CAAC;IAKC,AAAN,KAAK,CAAC,OAAO;QACT,IAAI,CAAC,qBAAqB,EAAE,CAAC;IACjC,CAAC;IAEO,qBAAqB;QACzB,IAAI,CAAC,IAAA,6CAAuB,EAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC;YAClD,MAAM,IAAI,qCAA4B,CAAC,gCAAgC,CAAC,CAAC;QAC7E,CAAC;IACL,CAAC;IAKD,kBAAkB,CAAQ,GAAY,EAAS,GAAa;QACxD,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC7B,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;QAYtB,OAAO,GAAG,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,WAAW,eAAe,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;IAC7G,CAAC;IAWK,AAAN,KAAK,CAAC,uBAAuB,CAAsB,UAAU;QACzD,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC7B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC;QAEpE,OAAO,IAAI,CAAC,UAAU,CAAC,CAAC;QAExB,OAAO,IAAI,CAAC;IAChB,CAAC;IAWK,AAAN,KAAK,CAAC,UAAU,CAAsB,UAAU;QAC5C,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC7B,OAAO,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;IAC1D,CAAC;CACJ,CAAA;AAvEY,wEAA8B;AAUjC;IAHL,IAAA,yBAAM,GAAE;IACR,IAAA,kBAAS,EAAC,wCAAgB,CAAC;IAC3B,IAAA,YAAG,EAAC,SAAS,CAAC;;;;;6DAGd;AAWD;IAHC,IAAA,yBAAM,GAAE;IACR,IAAA,YAAG,EAAC,kBAAkB,CAAC;IACvB,IAAA,kBAAS,EAAC,wCAAgB,CAAC;;IACR,WAAA,IAAA,YAAG,GAAE,CAAA;IAAgB,WAAA,IAAA,YAAG,GAAE,CAAA;;;;wEAe7C;AAWK;IAFL,IAAA,yBAAM,GAAE;IACR,IAAA,YAAG,EAAC,gBAAgB,CAAC;;IACS,WAAA,IAAA,cAAK,EAAC,YAAY,CAAC,CAAA;;;;6EAOjD;AAWK;IAHL,IAAA,yBAAM,GAAE;IACR,IAAA,YAAG,EAAC,cAAc,CAAC;IACnB,IAAA,kBAAQ,EAAC,EAAE,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;;IAC7C,WAAA,IAAA,cAAK,EAAC,YAAY,CAAC,CAAA;;;;gEAGpC;yCAtEQ,8BAA8B;IAH1C,IAAA,qBAAI,EAAC,yBAAQ,CAAC,IAAI,CAAC;IACnB,IAAA,mBAAU,EAAC,YAAY,CAAC;IACxB,IAAA,iBAAO,EAAC,KAAK,CAAC;IAGN,WAAA,IAAA,eAAM,EAAC,sBAAS,CAAC,GAAG,CAAC,CAAA;6CACQ,0BAAW;QACX,8CAAqB;GAJ9C,8BAA8B,CAuE1C","sourcesContent":["import { Controller, Get, Inject, InternalServerErrorException, Query, Req, Res, UseGuards } from '@nestjs/common';\nimport { AuthenticationService } from '../services/authentication.service';\nimport { Auth } from '../decorators/auth.decorator';\nimport { AuthType } from '../enums/auth-type.enum';\nimport { ApiQuery, ApiTags } from '@nestjs/swagger';\nimport { GoogleOauthGuard } from '../passport-strategies/google-oauth.strategy';\nimport { Request, Response } from 'express';\nimport { ConfigType } from '@nestjs/config';\nimport { UserService } from '../services/user.service';\nimport { Public } from '../decorators/public.decorator';\nimport { iamConfig } from '../config/iam.config';\nimport { isGoogleOAuthConfigured } from 'src/helpers/google-oauth.helper';\n\n\n@Auth(AuthType.None)\n@Controller('iam/google')\n@ApiTags(\"Iam\")\nexport class GoogleAuthenticationController {\n constructor(\n @Inject(iamConfig.KEY) private iamConfiguration: ConfigType<typeof iamConfig>,\n private readonly userService: UserService,\n private readonly authService: AuthenticationService,\n ) { }\n\n @Public()\n @UseGuards(GoogleOauthGuard)\n @Get('connect')\n async connect() {\n this.validateConfiguration();\n }\n\n private validateConfiguration() {\n if (!isGoogleOAuthConfigured(this.iamConfiguration)) {\n throw new InternalServerErrorException('Google OAuth is not configured');\n }\n }\n\n @Public()\n @Get('connect/callback')\n @UseGuards(GoogleOauthGuard)\n googleAuthCallback(@Req() req: Request, @Res() res: Response) {\n this.validateConfiguration();\n const user = req.user;\n\n // console.log(`Found user: ${JSON.stringify(user)}`);\n // const token = await this.authService.signIn(req.user);\n // res.cookie('access_token', token, {\n // maxAge: 2592000000,\n // sameSite: true,\n // secure: false,\n // });\n // return req.user;\n // return res;\n\n return res.redirect(`${this.iamConfiguration.googleOauth.redirectURL}?accessCode=${user['accessCode']}`);\n }\n\n /**\n * This is just a dummy endpoint where we are passing in the accessCode, this will be configured in the .env as an environment variable and \n * will be passed the accessCode, using the accessCode the UI code on this page will mostly invoke the /iam/google/auth endpoint which will finally generate the JWT token.\n * \n * @param accessCode \n * @returns \n */\n @Public()\n @Get('dummy-redirect')\n async dummyGoogleAuthRedirect(@Query('accessCode') accessCode) {\n this.validateConfiguration();\n const user = await this.userService.findOneByAccessCode(accessCode);\n\n delete user['password'];\n\n return user;\n }\n\n /**\n * Use this endpoint to authenticate using an accessCode with Google.\n * \n * @param accessCode \n * @returns \n */\n @Public()\n @Get('authenticate')\n @ApiQuery({ name: 'accessCode', required: true, type: String })\n async googleAuth(@Query('accessCode') accessCode) {\n this.validateConfiguration();\n return this.authService.signInUsingGoogle(accessCode);\n }\n}\n"]}
1
+ {"version":3,"file":"google-authentication.controller.js","sourceRoot":"","sources":["../../src/controllers/google-authentication.controller.ts"],"names":[],"mappings":"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","sourcesContent":["import { Controller, Get, Inject, InternalServerErrorException, Query, Req, Res, UseGuards } from '@nestjs/common';\nimport { AuthenticationService } from '../services/authentication.service';\nimport { Auth } from '../decorators/auth.decorator';\nimport { AuthType } from '../enums/auth-type.enum';\nimport { ApiQuery, ApiTags } from '@nestjs/swagger';\nimport { GoogleOauthGuard } from '../passport-strategies/google-oauth.strategy';\nimport { Request, Response } from 'express';\nimport { ConfigType } from '@nestjs/config';\nimport { UserService } from '../services/user.service';\nimport { Public } from '../decorators/public.decorator';\nimport { iamConfig } from '../config/iam.config';\nimport { isGoogleOAuthConfigured } from 'src/helpers/google-oauth.helper';\nimport { ThrottlerGuard, SkipThrottle } from '@nestjs/throttler';\n\n\n\n@Auth(AuthType.None)\n@Controller('iam/google')\n@ApiTags(\"Iam\")\n@UseGuards(ThrottlerGuard)\n@SkipThrottle({ login: false, short: false, burst: true, sustained: true }) //Enable the login throttle only \nexport class GoogleAuthenticationController {\n constructor(\n @Inject(iamConfig.KEY) private iamConfiguration: ConfigType<typeof iamConfig>,\n private readonly userService: UserService,\n private readonly authService: AuthenticationService,\n ) { }\n\n @Public()\n @UseGuards(GoogleOauthGuard)\n @Get('connect')\n async connect() {\n this.validateConfiguration();\n }\n\n private validateConfiguration() {\n if (!isGoogleOAuthConfigured(this.iamConfiguration)) {\n throw new InternalServerErrorException('Google OAuth is not configured');\n }\n }\n\n @Public()\n @Get('connect/callback')\n @UseGuards(GoogleOauthGuard)\n googleAuthCallback(@Req() req: Request, @Res() res: Response) {\n this.validateConfiguration();\n const user = req.user;\n\n // console.log(`Found user: ${JSON.stringify(user)}`);\n // const token = await this.authService.signIn(req.user);\n // res.cookie('access_token', token, {\n // maxAge: 2592000000,\n // sameSite: true,\n // secure: false,\n // });\n // return req.user;\n // return res;\n\n return res.redirect(`${this.iamConfiguration.googleOauth.redirectURL}?accessCode=${user['accessCode']}`);\n }\n\n /**\n * This is just a dummy endpoint where we are passing in the accessCode, this will be configured in the .env as an environment variable and \n * will be passed the accessCode, using the accessCode the UI code on this page will mostly invoke the /iam/google/auth endpoint which will finally generate the JWT token.\n * \n * @param accessCode \n * @returns \n */\n @Public()\n @Get('dummy-redirect')\n async dummyGoogleAuthRedirect(@Query('accessCode') accessCode) {\n this.validateConfiguration();\n const user = await this.userService.findOneByAccessCode(accessCode);\n\n delete user['password'];\n\n return user;\n }\n\n /**\n * Use this endpoint to authenticate using an accessCode with Google.\n * \n * @param accessCode \n * @returns \n */\n @Public()\n @Get('authenticate')\n @ApiQuery({ name: 'accessCode', required: true, type: String })\n async googleAuth(@Query('accessCode') accessCode) {\n this.validateConfiguration();\n return this.authService.signInUsingGoogle(accessCode);\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"media.controller.d.ts","sourceRoot":"","sources":["../../src/controllers/media.controller.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAO3D,qBAEa,eAAe;IACd,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAAP,OAAO,EAAE,YAAY;IAKlD,MAAM,CAAS,SAAS,EAAE,cAAc,EAAmB,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC;IAO5F,UAAU,CAAS,UAAU,EAAE,cAAc,EAAE,EAAmB,UAAU,GAAE,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,EAAO;IAQ1G,MAAM,CAAc,EAAE,EAAE,MAAM,EAAU,SAAS,EAAE,cAAc,EAAmB,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC;IAOrH,aAAa,CAAc,EAAE,EAAE,MAAM,EAAU,SAAS,EAAE,cAAc,EAAmB,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC;IAQ5H,MAAM,CAAkB,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAU,SAAS,EAAE,cAAc;IAQtF,WAAW,CAAS,GAAG,EAAE,MAAM,EAAE;;;;IAMjC,OAAO,CAAc,EAAE,EAAE,MAAM;;;;IAe/B,QAAQ,CAAU,KAAK,EAAE,GAAG;;;;;;;;;;;;;;;;;;;;IAM5B,OAAO,CAAc,EAAE,EAAE,MAAM,EAAW,KAAK,EAAE,GAAG;IAMpD,UAAU,CAAS,GAAG,EAAE,MAAM,EAAE;IAMhC,MAAM,CAAc,EAAE,EAAE,MAAM;CAKrC"}
1
+ {"version":3,"file":"media.controller.d.ts","sourceRoot":"","sources":["../../src/controllers/media.controller.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAQ3D,qBAIa,eAAe;IACd,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAAP,OAAO,EAAE,YAAY;IAKlD,MAAM,CAAS,SAAS,EAAE,cAAc,EAAmB,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC;IAO5F,UAAU,CAAS,UAAU,EAAE,cAAc,EAAE,EAAmB,UAAU,GAAE,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,EAAO;IAQ1G,MAAM,CAAc,EAAE,EAAE,MAAM,EAAU,SAAS,EAAE,cAAc,EAAmB,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC;IAOrH,aAAa,CAAc,EAAE,EAAE,MAAM,EAAU,SAAS,EAAE,cAAc,EAAmB,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC;IAS5H,MAAM,CAAkB,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAU,SAAS,EAAE,cAAc;IAQtF,WAAW,CAAS,GAAG,EAAE,MAAM,EAAE;;;;IAMjC,OAAO,CAAc,EAAE,EAAE,MAAM;;;;IAe/B,QAAQ,CAAU,KAAK,EAAE,GAAG;;;;;;;;;;;;;;;;;;;;IAM5B,OAAO,CAAc,EAAE,EAAE,MAAM,EAAW,KAAK,EAAE,GAAG;IAMpD,UAAU,CAAS,GAAG,EAAE,MAAM,EAAE;IAMhC,MAAM,CAAc,EAAE,EAAE,MAAM;CAKrC"}
@@ -21,6 +21,7 @@ const public_decorator_1 = require("../decorators/public.decorator");
21
21
  const media_service_1 = require("../services/media.service");
22
22
  const create_media_dto_1 = require("../dtos/create-media.dto");
23
23
  const update_media_dto_1 = require("../dtos/update-media.dto");
24
+ const throttler_1 = require("@nestjs/throttler");
24
25
  var ShowSoftDeleted;
25
26
  (function (ShowSoftDeleted) {
26
27
  ShowSoftDeleted["INCLUSIVE"] = "inclusive";
@@ -113,6 +114,7 @@ __decorate([
113
114
  ], MediaController.prototype, "partialUpdate", null);
114
115
  __decorate([
115
116
  (0, public_decorator_1.Public)(),
117
+ (0, throttler_1.SkipThrottle)({ short: false, login: true, burst: true, sustained: true }),
116
118
  (0, swagger_1.ApiBearerAuth)("jwt"),
117
119
  (0, common_1.Post)('/upload'),
118
120
  (0, common_1.UseInterceptors)((0, platform_express_1.AnyFilesInterceptor)()),
@@ -190,6 +192,8 @@ __decorate([
190
192
  exports.MediaController = MediaController = __decorate([
191
193
  (0, swagger_1.ApiTags)('Solid Core'),
192
194
  (0, common_1.Controller)('media'),
195
+ (0, common_1.UseGuards)(throttler_1.ThrottlerGuard),
196
+ (0, throttler_1.SkipThrottle)({ short: true, login: true, burst: true, sustained: true }),
193
197
  __metadata("design:paramtypes", [media_service_1.MediaService])
194
198
  ], MediaController);
195
199
  //# sourceMappingURL=media.controller.js.map