@hed-hog/core 0.0.390 → 0.0.394
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +39 -0
- package/dist/access-log/access-log.controller.d.ts.map +1 -1
- package/dist/access-log/access-log.controller.js +1 -1
- package/dist/access-log/access-log.controller.js.map +1 -1
- package/dist/access-log/access-log.interceptor.d.ts.map +1 -1
- package/dist/access-log/access-log.interceptor.js +8 -5
- package/dist/access-log/access-log.interceptor.js.map +1 -1
- package/dist/access-log/access-log.service.d.ts +4 -0
- package/dist/access-log/access-log.service.d.ts.map +1 -1
- package/dist/access-log/access-log.service.js +31 -4
- package/dist/access-log/access-log.service.js.map +1 -1
- package/dist/access-log/dto/query-access-log.dto.d.ts +2 -0
- package/dist/access-log/dto/query-access-log.dto.d.ts.map +1 -1
- package/dist/access-log/dto/query-access-log.dto.js +5 -0
- package/dist/access-log/dto/query-access-log.dto.js.map +1 -1
- package/dist/ai/ai.controller.d.ts +12 -8
- package/dist/ai/ai.controller.d.ts.map +1 -1
- package/dist/ai/ai.controller.js +17 -2
- package/dist/ai/ai.controller.js.map +1 -1
- package/dist/ai/ai.module.d.ts.map +1 -1
- package/dist/ai/ai.module.js +3 -2
- package/dist/ai/ai.module.js.map +1 -1
- package/dist/ai/ai.service.d.ts +30 -1
- package/dist/ai/ai.service.d.ts.map +1 -1
- package/dist/ai/ai.service.js +97 -3
- package/dist/ai/ai.service.js.map +1 -1
- package/dist/ai/dto/richtext-edit-html.dto.d.ts +5 -0
- package/dist/ai/dto/richtext-edit-html.dto.d.ts.map +1 -0
- package/dist/ai/dto/richtext-edit-html.dto.js +27 -0
- package/dist/ai/dto/richtext-edit-html.dto.js.map +1 -0
- package/dist/ai/richtext-ai.prompts.d.ts +5 -0
- package/dist/ai/richtext-ai.prompts.d.ts.map +1 -0
- package/dist/ai/richtext-ai.prompts.js +57 -0
- package/dist/ai/richtext-ai.prompts.js.map +1 -0
- package/dist/ai/richtext-ai.service.d.ts +34 -0
- package/dist/ai/richtext-ai.service.d.ts.map +1 -0
- package/dist/ai/richtext-ai.service.js +95 -0
- package/dist/ai/richtext-ai.service.js.map +1 -0
- package/dist/ai-instruction/ai-instruction.controller.d.ts +5 -5
- package/dist/auth/auth.controller.d.ts +66 -7
- package/dist/auth/auth.controller.d.ts.map +1 -1
- package/dist/auth/auth.controller.js +67 -23
- package/dist/auth/auth.controller.js.map +1 -1
- package/dist/auth/auth.module.d.ts.map +1 -1
- package/dist/auth/auth.module.js +2 -0
- package/dist/auth/auth.module.js.map +1 -1
- package/dist/auth/auth.service.d.ts +136 -4
- package/dist/auth/auth.service.d.ts.map +1 -1
- package/dist/auth/auth.service.js +246 -48
- package/dist/auth/auth.service.js.map +1 -1
- package/dist/auth/dto/confirm-email.dto.d.ts +4 -0
- package/dist/auth/dto/confirm-email.dto.d.ts.map +1 -0
- package/dist/auth/dto/confirm-email.dto.js +22 -0
- package/dist/auth/dto/confirm-email.dto.js.map +1 -0
- package/dist/auth/dto/resend-confirmation.dto.d.ts +8 -0
- package/dist/auth/dto/resend-confirmation.dto.d.ts.map +1 -0
- package/dist/auth/dto/resend-confirmation.dto.js +36 -0
- package/dist/auth/dto/resend-confirmation.dto.js.map +1 -0
- package/dist/authorize/authorize.controller.d.ts +1 -1
- package/dist/authorize/authorize.controller.d.ts.map +1 -1
- package/dist/authorize/authorize.controller.js +4 -2
- package/dist/authorize/authorize.controller.js.map +1 -1
- package/dist/authorize/authorize.service.d.ts +7 -0
- package/dist/authorize/authorize.service.d.ts.map +1 -1
- package/dist/authorize/authorize.service.js +1 -1
- package/dist/authorize/authorize.service.js.map +1 -1
- package/dist/challenge/challenge.service.d.ts +18 -5
- package/dist/challenge/challenge.service.d.ts.map +1 -1
- package/dist/challenge/challenge.service.js +50 -3
- package/dist/challenge/challenge.service.js.map +1 -1
- package/dist/core.module.d.ts.map +1 -1
- package/dist/core.module.js +17 -0
- package/dist/core.module.js.map +1 -1
- package/dist/dashboard/dashboard/dashboard.controller.d.ts +6 -6
- package/dist/dashboard/dashboard/dashboard.service.d.ts +6 -6
- package/dist/dashboard/dashboard-component/dashboard-component.controller.d.ts +4 -4
- package/dist/dashboard/dashboard-component/dashboard-component.service.d.ts +4 -4
- package/dist/dashboard/dashboard-component-role/dashboard-component-role.controller.d.ts +1 -1
- package/dist/dashboard/dashboard-component-role/dashboard-component-role.service.d.ts +1 -1
- package/dist/dashboard/dashboard-core/dashboard-core.controller.d.ts +2 -2
- package/dist/dashboard/dashboard-core/dashboard-core.service.d.ts +2 -2
- package/dist/dashboard/dashboard-item/dashboard-item.controller.d.ts +2 -2
- package/dist/dashboard/dashboard-item/dashboard-item.service.d.ts +2 -2
- package/dist/file/file.controller.d.ts +8 -1
- package/dist/file/file.controller.d.ts.map +1 -1
- package/dist/file/file.controller.js +45 -7
- package/dist/file/file.controller.js.map +1 -1
- package/dist/file/file.service.d.ts +128 -1
- package/dist/file/file.service.d.ts.map +1 -1
- package/dist/file/file.service.js +319 -8
- package/dist/file/file.service.js.map +1 -1
- package/dist/file/image-optimization.service.d.ts +43 -0
- package/dist/file/image-optimization.service.d.ts.map +1 -1
- package/dist/file/image-optimization.service.js +154 -0
- package/dist/file/image-optimization.service.js.map +1 -1
- package/dist/file/provider/abstract.provider.d.ts +16 -0
- package/dist/file/provider/abstract.provider.d.ts.map +1 -1
- package/dist/file/provider/abstract.provider.js +4 -0
- package/dist/file/provider/abstract.provider.js.map +1 -1
- package/dist/file/provider/gcs.provider.d.ts +2 -0
- package/dist/file/provider/gcs.provider.d.ts.map +1 -1
- package/dist/file/provider/gcs.provider.js +10 -0
- package/dist/file/provider/gcs.provider.js.map +1 -1
- package/dist/file/provider/local.provider.d.ts +1 -0
- package/dist/file/provider/local.provider.d.ts.map +1 -1
- package/dist/file/provider/local.provider.js +13 -0
- package/dist/file/provider/local.provider.js.map +1 -1
- package/dist/file/provider/s3.provider.d.ts +5 -0
- package/dist/file/provider/s3.provider.d.ts.map +1 -1
- package/dist/file/provider/s3.provider.js +15 -0
- package/dist/file/provider/s3.provider.js.map +1 -1
- package/dist/file/provider/spaces.provider.d.ts +5 -0
- package/dist/file/provider/spaces.provider.d.ts.map +1 -1
- package/dist/file/provider/spaces.provider.js +16 -0
- package/dist/file/provider/spaces.provider.js.map +1 -1
- package/dist/impersonation/dto/redeem-impersonation.dto.d.ts +4 -0
- package/dist/impersonation/dto/redeem-impersonation.dto.d.ts.map +1 -0
- package/dist/impersonation/dto/redeem-impersonation.dto.js +23 -0
- package/dist/impersonation/dto/redeem-impersonation.dto.js.map +1 -0
- package/dist/impersonation/dto/start-impersonation.dto.d.ts +7 -0
- package/dist/impersonation/dto/start-impersonation.dto.d.ts.map +1 -0
- package/dist/impersonation/dto/start-impersonation.dto.js +27 -0
- package/dist/impersonation/dto/start-impersonation.dto.js.map +1 -0
- package/dist/impersonation/impersonation-restrictions.d.ts +26 -0
- package/dist/impersonation/impersonation-restrictions.d.ts.map +1 -0
- package/dist/impersonation/impersonation-restrictions.js +76 -0
- package/dist/impersonation/impersonation-restrictions.js.map +1 -0
- package/dist/impersonation/impersonation.controller.d.ts +90 -0
- package/dist/impersonation/impersonation.controller.d.ts.map +1 -0
- package/dist/impersonation/impersonation.controller.js +135 -0
- package/dist/impersonation/impersonation.controller.js.map +1 -0
- package/dist/impersonation/impersonation.module.d.ts +8 -0
- package/dist/impersonation/impersonation.module.d.ts.map +1 -0
- package/dist/impersonation/impersonation.module.js +44 -0
- package/dist/impersonation/impersonation.module.js.map +1 -0
- package/dist/impersonation/impersonation.service.d.ts +164 -0
- package/dist/impersonation/impersonation.service.d.ts.map +1 -0
- package/dist/impersonation/impersonation.service.js +408 -0
- package/dist/impersonation/impersonation.service.js.map +1 -0
- package/dist/index.d.ts +17 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +19 -0
- package/dist/index.js.map +1 -1
- package/dist/integration/services/outbox-polling.coordinator.d.ts +2 -0
- package/dist/integration/services/outbox-polling.coordinator.d.ts.map +1 -1
- package/dist/integration/services/outbox-polling.coordinator.js +50 -30
- package/dist/integration/services/outbox-polling.coordinator.js.map +1 -1
- package/dist/integration/services/outbox.service.d.ts.map +1 -1
- package/dist/integration/services/outbox.service.js +5 -1
- package/dist/integration/services/outbox.service.js.map +1 -1
- package/dist/integration-profile/integration-profile.secrets.d.ts.map +1 -1
- package/dist/integration-profile/integration-profile.secrets.js +3 -0
- package/dist/integration-profile/integration-profile.secrets.js.map +1 -1
- package/dist/integration-profile/integration-profile.utils.d.ts +14 -0
- package/dist/integration-profile/integration-profile.utils.d.ts.map +1 -1
- package/dist/integration-profile/integration-profile.utils.js +26 -0
- package/dist/integration-profile/integration-profile.utils.js.map +1 -1
- package/dist/integration-profile/testers/email.testers.d.ts.map +1 -1
- package/dist/integration-profile/testers/email.testers.js +28 -0
- package/dist/integration-profile/testers/email.testers.js.map +1 -1
- package/dist/language/en.json +11 -0
- package/dist/language/pt.json +11 -0
- package/dist/mail/dto/send.dto.d.ts +38 -1
- package/dist/mail/dto/send.dto.d.ts.map +1 -1
- package/dist/mail/dto/send.dto.js +10 -0
- package/dist/mail/dto/send.dto.js.map +1 -1
- package/dist/mail/mail.controller.d.ts +1 -0
- package/dist/mail/mail.controller.d.ts.map +1 -1
- package/dist/mail/mail.module.d.ts.map +1 -1
- package/dist/mail/mail.module.js +2 -0
- package/dist/mail/mail.module.js.map +1 -1
- package/dist/mail/mail.service.d.ts +48 -4
- package/dist/mail/mail.service.d.ts.map +1 -1
- package/dist/mail/mail.service.js +187 -35
- package/dist/mail/mail.service.js.map +1 -1
- package/dist/mail-delivery/mail-delivery-provision.service.d.ts +21 -0
- package/dist/mail-delivery/mail-delivery-provision.service.d.ts.map +1 -0
- package/dist/mail-delivery/mail-delivery-provision.service.js +64 -0
- package/dist/mail-delivery/mail-delivery-provision.service.js.map +1 -0
- package/dist/mail-delivery/mail-delivery.constants.d.ts +17 -0
- package/dist/mail-delivery/mail-delivery.constants.d.ts.map +1 -0
- package/dist/mail-delivery/mail-delivery.constants.js +31 -0
- package/dist/mail-delivery/mail-delivery.constants.js.map +1 -0
- package/dist/mail-delivery/mail-delivery.controller.d.ts +19 -0
- package/dist/mail-delivery/mail-delivery.controller.d.ts.map +1 -0
- package/dist/mail-delivery/mail-delivery.controller.js +53 -0
- package/dist/mail-delivery/mail-delivery.controller.js.map +1 -0
- package/dist/mail-delivery/mail-delivery.module.d.ts +7 -0
- package/dist/mail-delivery/mail-delivery.module.d.ts.map +1 -0
- package/dist/mail-delivery/mail-delivery.module.js +36 -0
- package/dist/mail-delivery/mail-delivery.module.js.map +1 -0
- package/dist/mail-delivery/mail-delivery.service.d.ts +38 -0
- package/dist/mail-delivery/mail-delivery.service.d.ts.map +1 -0
- package/dist/mail-delivery/mail-delivery.service.js +140 -0
- package/dist/mail-delivery/mail-delivery.service.js.map +1 -0
- package/dist/mail-delivery/ses-event.parser.d.ts +27 -0
- package/dist/mail-delivery/ses-event.parser.d.ts.map +1 -0
- package/dist/mail-delivery/ses-event.parser.js +131 -0
- package/dist/mail-delivery/ses-event.parser.js.map +1 -0
- package/dist/mail-delivery/ses-webhook.service.d.ts +58 -0
- package/dist/mail-delivery/ses-webhook.service.d.ts.map +1 -0
- package/dist/mail-delivery/ses-webhook.service.js +214 -0
- package/dist/mail-delivery/ses-webhook.service.js.map +1 -0
- package/dist/mail-delivery/sns-message.util.d.ts +38 -0
- package/dist/mail-delivery/sns-message.util.d.ts.map +1 -0
- package/dist/mail-delivery/sns-message.util.js +109 -0
- package/dist/mail-delivery/sns-message.util.js.map +1 -0
- package/dist/mail-sent/dto/query-mail-sent-list.dto.d.ts +5 -0
- package/dist/mail-sent/dto/query-mail-sent-list.dto.d.ts.map +1 -1
- package/dist/mail-sent/dto/query-mail-sent-list.dto.js +6 -0
- package/dist/mail-sent/dto/query-mail-sent-list.dto.js.map +1 -1
- package/dist/mail-sent/mail-sent.controller.d.ts +39 -0
- package/dist/mail-sent/mail-sent.controller.d.ts.map +1 -1
- package/dist/mail-sent/mail-sent.service.d.ts +39 -0
- package/dist/mail-sent/mail-sent.service.d.ts.map +1 -1
- package/dist/mail-sent/mail-sent.service.js +45 -4
- package/dist/mail-sent/mail-sent.service.js.map +1 -1
- package/dist/mailbox/mailbox-fetcher.registry.d.ts +100 -0
- package/dist/mailbox/mailbox-fetcher.registry.d.ts.map +1 -0
- package/dist/mailbox/mailbox-fetcher.registry.js +59 -0
- package/dist/mailbox/mailbox-fetcher.registry.js.map +1 -0
- package/dist/mailbox/mailbox.module.d.ts +8 -0
- package/dist/mailbox/mailbox.module.d.ts.map +1 -0
- package/dist/mailbox/mailbox.module.js +27 -0
- package/dist/mailbox/mailbox.module.js.map +1 -0
- package/dist/meeting/meeting-provider.registry.d.ts +155 -0
- package/dist/meeting/meeting-provider.registry.d.ts.map +1 -0
- package/dist/meeting/meeting-provider.registry.js +53 -0
- package/dist/meeting/meeting-provider.registry.js.map +1 -0
- package/dist/meeting/meeting.constants.d.ts +47 -0
- package/dist/meeting/meeting.constants.d.ts.map +1 -0
- package/dist/meeting/meeting.constants.js +21 -0
- package/dist/meeting/meeting.constants.js.map +1 -0
- package/dist/meeting/meeting.module.d.ts +7 -0
- package/dist/meeting/meeting.module.d.ts.map +1 -0
- package/dist/meeting/meeting.module.js +26 -0
- package/dist/meeting/meeting.module.js.map +1 -0
- package/dist/middlewares/locale-injection.middleware.d.ts +12 -0
- package/dist/middlewares/locale-injection.middleware.d.ts.map +1 -1
- package/dist/middlewares/locale-injection.middleware.js +20 -4
- package/dist/middlewares/locale-injection.middleware.js.map +1 -1
- package/dist/oauth/providers/google.provider.d.ts +7 -0
- package/dist/oauth/providers/google.provider.d.ts.map +1 -1
- package/dist/oauth/providers/google.provider.js +43 -13
- package/dist/oauth/providers/google.provider.js.map +1 -1
- package/dist/observability/monitored-cron.d.ts +34 -0
- package/dist/observability/monitored-cron.d.ts.map +1 -0
- package/dist/observability/monitored-cron.js +118 -0
- package/dist/observability/monitored-cron.js.map +1 -0
- package/dist/pairing/dto/approve-reverse-pairing.dto.d.ts +12 -0
- package/dist/pairing/dto/approve-reverse-pairing.dto.d.ts.map +1 -0
- package/dist/pairing/dto/approve-reverse-pairing.dto.js +30 -0
- package/dist/pairing/dto/approve-reverse-pairing.dto.js.map +1 -0
- package/dist/pairing/dto/claim-pairing.dto.d.ts +11 -0
- package/dist/pairing/dto/claim-pairing.dto.d.ts.map +1 -0
- package/dist/pairing/dto/claim-pairing.dto.js +35 -0
- package/dist/pairing/dto/claim-pairing.dto.js.map +1 -0
- package/dist/pairing/dto/confirm-pairing.dto.d.ts +10 -0
- package/dist/pairing/dto/confirm-pairing.dto.d.ts.map +1 -0
- package/dist/pairing/dto/confirm-pairing.dto.js +24 -0
- package/dist/pairing/dto/confirm-pairing.dto.js.map +1 -0
- package/dist/pairing/dto/poll-reverse-pairing.dto.d.ts +5 -0
- package/dist/pairing/dto/poll-reverse-pairing.dto.d.ts.map +1 -0
- package/dist/pairing/dto/poll-reverse-pairing.dto.js +24 -0
- package/dist/pairing/dto/poll-reverse-pairing.dto.js.map +1 -0
- package/dist/pairing/dto/start-pairing.dto.d.ts +11 -0
- package/dist/pairing/dto/start-pairing.dto.d.ts.map +1 -0
- package/dist/pairing/dto/start-pairing.dto.js +30 -0
- package/dist/pairing/dto/start-pairing.dto.js.map +1 -0
- package/dist/pairing/dto/start-reverse-pairing.dto.d.ts +24 -0
- package/dist/pairing/dto/start-reverse-pairing.dto.d.ts.map +1 -0
- package/dist/pairing/dto/start-reverse-pairing.dto.js +47 -0
- package/dist/pairing/dto/start-reverse-pairing.dto.js.map +1 -0
- package/dist/pairing/pairing.controller.d.ts +118 -0
- package/dist/pairing/pairing.controller.d.ts.map +1 -0
- package/dist/pairing/pairing.controller.js +296 -0
- package/dist/pairing/pairing.controller.js.map +1 -0
- package/dist/pairing/pairing.module.d.ts +10 -0
- package/dist/pairing/pairing.module.d.ts.map +1 -0
- package/dist/pairing/pairing.module.js +40 -0
- package/dist/pairing/pairing.module.js.map +1 -0
- package/dist/pairing/pairing.service.d.ts +238 -0
- package/dist/pairing/pairing.service.d.ts.map +1 -0
- package/dist/pairing/pairing.service.js +495 -0
- package/dist/pairing/pairing.service.js.map +1 -0
- package/dist/pdf/pdf.service.d.ts +3 -6
- package/dist/pdf/pdf.service.d.ts.map +1 -1
- package/dist/pdf/pdf.service.js +8 -20
- package/dist/pdf/pdf.service.js.map +1 -1
- package/dist/profile/profile.controller.d.ts +11 -0
- package/dist/profile/profile.controller.d.ts.map +1 -1
- package/dist/profile/profile.service.d.ts +11 -0
- package/dist/profile/profile.service.d.ts.map +1 -1
- package/dist/profile/profile.service.js +20 -11
- package/dist/profile/profile.service.js.map +1 -1
- package/dist/redis/redis-pubsub.d.ts.map +1 -1
- package/dist/redis/redis-pubsub.js +44 -0
- package/dist/redis/redis-pubsub.js.map +1 -1
- package/dist/role/guards/role.guard.d.ts +5 -0
- package/dist/role/guards/role.guard.d.ts.map +1 -1
- package/dist/role/guards/role.guard.js +41 -39
- package/dist/role/guards/role.guard.js.map +1 -1
- package/dist/session/session.controller.d.ts +2 -0
- package/dist/session/session.controller.d.ts.map +1 -1
- package/dist/session/session.service.d.ts +39 -0
- package/dist/session/session.service.d.ts.map +1 -1
- package/dist/session/session.service.js +91 -8
- package/dist/session/session.service.js.map +1 -1
- package/dist/setting/brand-asset.service.d.ts +48 -0
- package/dist/setting/brand-asset.service.d.ts.map +1 -0
- package/dist/setting/brand-asset.service.js +130 -0
- package/dist/setting/brand-asset.service.js.map +1 -0
- package/dist/setting/setting.module.d.ts.map +1 -1
- package/dist/setting/setting.module.js +3 -2
- package/dist/setting/setting.module.js.map +1 -1
- package/dist/setting/setting.service.d.ts +33 -0
- package/dist/setting/setting.service.d.ts.map +1 -1
- package/dist/setting/setting.service.js +88 -0
- package/dist/setting/setting.service.js.map +1 -1
- package/dist/token/token.service.d.ts +23 -2
- package/dist/token/token.service.d.ts.map +1 -1
- package/dist/token/token.service.js +39 -4
- package/dist/token/token.service.js.map +1 -1
- package/dist/user/user.controller.d.ts +8 -22
- package/dist/user/user.controller.d.ts.map +1 -1
- package/dist/user/user.service.d.ts +44 -24
- package/dist/user/user.service.d.ts.map +1 -1
- package/dist/user/user.service.js +89 -6
- package/dist/user/user.service.js.map +1 -1
- package/dist/user-device/user-device.controller.d.ts +54 -0
- package/dist/user-device/user-device.controller.d.ts.map +1 -0
- package/dist/user-device/user-device.controller.js +103 -0
- package/dist/user-device/user-device.controller.js.map +1 -0
- package/dist/user-device/user-device.module.d.ts +3 -0
- package/dist/user-device/user-device.module.d.ts.map +1 -0
- package/dist/user-device/user-device.module.js +26 -0
- package/dist/user-device/user-device.module.js.map +1 -0
- package/dist/user-device/user-device.service.d.ts +71 -0
- package/dist/user-device/user-device.service.d.ts.map +1 -0
- package/dist/user-device/user-device.service.js +158 -0
- package/dist/user-device/user-device.service.js.map +1 -0
- package/dist/utils/device-key.d.ts +23 -0
- package/dist/utils/device-key.d.ts.map +1 -0
- package/dist/utils/device-key.js +31 -0
- package/dist/utils/device-key.js.map +1 -0
- package/dist/utils/geo-ip.d.ts +38 -0
- package/dist/utils/geo-ip.d.ts.map +1 -0
- package/dist/utils/geo-ip.js +122 -0
- package/dist/utils/geo-ip.js.map +1 -0
- package/dist/utils/locale-context.d.ts +10 -7
- package/dist/utils/locale-context.d.ts.map +1 -1
- package/dist/utils/locale-context.js +14 -8
- package/dist/utils/locale-context.js.map +1 -1
- package/dist/utils/security-event-vars.d.ts +56 -0
- package/dist/utils/security-event-vars.d.ts.map +1 -0
- package/dist/utils/security-event-vars.js +109 -0
- package/dist/utils/security-event-vars.js.map +1 -0
- package/dist/utils/user-agent.d.ts +19 -0
- package/dist/utils/user-agent.d.ts.map +1 -0
- package/dist/utils/user-agent.js +36 -0
- package/dist/utils/user-agent.js.map +1 -0
- package/dist/webhook-integration/webhook-integration.service.d.ts +5 -0
- package/dist/webhook-integration/webhook-integration.service.d.ts.map +1 -1
- package/dist/webhook-integration/webhook-integration.service.js +50 -4
- package/dist/webhook-integration/webhook-integration.service.js.map +1 -1
- package/dist/webhook-integration/webhook-protocol.registry.d.ts +6 -0
- package/dist/webhook-integration/webhook-protocol.registry.d.ts.map +1 -1
- package/dist/webhook-integration/webhook-protocol.registry.js.map +1 -1
- package/hedhog/data/integration_provider.yaml +9 -0
- package/hedhog/data/mail.yaml +198 -62
- package/hedhog/data/mail_layout.yaml +43 -33
- package/hedhog/data/menu.yaml +2 -0
- package/hedhog/data/role.yaml +16 -0
- package/hedhog/data/route.yaml +172 -3
- package/hedhog/data/setting_group.yaml +178 -2
- package/hedhog/data/setting_subgroup.yaml +8 -0
- package/hedhog/frontend/app/_lib/hooks/use-core-access.test.tsx.ejs +125 -0
- package/hedhog/frontend/app/_lib/hooks/use-core-access.ts.ejs +29 -0
- package/hedhog/frontend/app/_lib/hooks/use-impersonation-access.test.ts.ejs +71 -0
- package/hedhog/frontend/app/_lib/hooks/use-impersonation-access.ts.ejs +32 -0
- package/hedhog/frontend/app/access-log/page.tsx.ejs +96 -22
- package/hedhog/frontend/app/account/components/active-sessions.tsx.ejs +17 -1
- package/hedhog/frontend/app/account/components/known-devices.tsx.ejs +89 -0
- package/hedhog/frontend/app/account/components/profile-form.tsx.ejs +2 -1
- package/hedhog/frontend/app/account/components/user-devices-list.tsx.ejs +186 -0
- package/hedhog/frontend/app/account/devices/page.tsx.ejs +5 -0
- package/hedhog/frontend/app/account/layout.tsx.ejs +2 -0
- package/hedhog/frontend/app/configurations/[slug]/components/setting-field.test.tsx.ejs +298 -0
- package/hedhog/frontend/app/configurations/[slug]/components/setting-field.tsx.ejs +376 -1236
- package/hedhog/frontend/app/mail/log/page.tsx.ejs +210 -3
- package/hedhog/frontend/app/mail/template/page.tsx.ejs +190 -132
- package/hedhog/frontend/app/users/active-session.tsx.ejs +58 -11
- package/hedhog/frontend/app/users/page.tsx.ejs +69 -10
- package/hedhog/frontend/app/users/simulate-access-dialog.test.tsx.ejs +202 -0
- package/hedhog/frontend/app/users/simulate-access-dialog.tsx.ejs +170 -0
- package/hedhog/frontend/app/users/user-activity-timeline.tsx.ejs +19 -0
- package/hedhog/frontend/app/users/user-devices.tsx.ejs +89 -0
- package/hedhog/frontend/app/users/user-logs.tsx.ejs +13 -1
- package/hedhog/frontend/app/users/user-sheet.tsx.ejs +46 -24
- package/hedhog/frontend/messages/en.json +146 -48
- package/hedhog/frontend/messages/pt.json +146 -48
- package/hedhog/table/access_log.yaml +7 -0
- package/hedhog/table/file.yaml +8 -0
- package/hedhog/table/mail_delivery_event.yaml +76 -0
- package/hedhog/table/mail_sent.yaml +23 -0
- package/hedhog/table/user_activity.yaml +9 -0
- package/hedhog/table/user_device.yaml +52 -0
- package/hedhog/table/user_session.yaml +20 -1
- package/package.json +6 -5
- package/src/access-log/access-log.controller.ts +1 -0
- package/src/access-log/access-log.interceptor.ts +5 -1
- package/src/access-log/access-log.service.spec.ts +33 -2
- package/src/access-log/access-log.service.ts +38 -0
- package/src/access-log/dto/query-access-log.dto.ts +5 -0
- package/src/ai/ai.controller.ts +9 -0
- package/src/ai/ai.module.ts +3 -2
- package/src/ai/ai.service.ts +150 -13
- package/src/ai/dto/richtext-edit-html.dto.ts +11 -0
- package/src/ai/richtext-ai.prompts.ts +57 -0
- package/src/ai/richtext-ai.service.ts +109 -0
- package/src/auth/auth.controller.ts +47 -8
- package/src/auth/auth.module.ts +2 -0
- package/src/auth/auth.service.spec.ts +383 -6
- package/src/auth/auth.service.ts +345 -56
- package/src/auth/dto/confirm-email.dto.ts +7 -0
- package/src/auth/dto/resend-confirmation.dto.ts +20 -0
- package/src/authorize/authorize.controller.ts +2 -0
- package/src/authorize/authorize.service.spec.ts +23 -0
- package/src/authorize/authorize.service.ts +8 -0
- package/src/challenge/challenge.service.spec.ts +73 -0
- package/src/challenge/challenge.service.ts +62 -3
- package/src/core.module.ts +19 -0
- package/src/file/file.controller.ts +54 -4
- package/src/file/file.service.spec.ts +275 -105
- package/src/file/file.service.ts +409 -14
- package/src/file/image-optimization.service.spec.ts +92 -0
- package/src/file/image-optimization.service.ts +202 -0
- package/src/file/provider/abstract.provider.ts +23 -0
- package/src/file/provider/gcs.provider.ts +17 -0
- package/src/file/provider/local.provider.ts +21 -0
- package/src/file/provider/s3.provider.ts +25 -0
- package/src/file/provider/spaces.provider.ts +26 -0
- package/src/impersonation/dto/redeem-impersonation.dto.ts +8 -0
- package/src/impersonation/dto/start-impersonation.dto.ts +13 -0
- package/src/impersonation/impersonation-restrictions.ts +84 -0
- package/src/impersonation/impersonation.controller.ts +109 -0
- package/src/impersonation/impersonation.module.ts +31 -0
- package/src/impersonation/impersonation.service.spec.ts +427 -0
- package/src/impersonation/impersonation.service.ts +577 -0
- package/src/index.ts +21 -0
- package/src/integration/services/outbox-polling.coordinator.spec.ts +90 -0
- package/src/integration/services/outbox-polling.coordinator.ts +62 -40
- package/src/integration/services/outbox.service.spec.ts +8 -0
- package/src/integration/services/outbox.service.ts +19 -13
- package/src/integration-profile/integration-profile.secrets.ts +3 -0
- package/src/integration-profile/integration-profile.utils.ts +38 -0
- package/src/integration-profile/testers/email.testers.ts +34 -1
- package/src/language/en.json +11 -0
- package/src/language/pt.json +11 -0
- package/src/mail/dto/send.dto.ts +46 -2
- package/src/mail/mail-template.spec.ts +79 -2
- package/src/mail/mail.module.ts +2 -0
- package/src/mail/mail.service.spec.ts +307 -6
- package/src/mail/mail.service.ts +227 -30
- package/src/mail-delivery/mail-delivery-provision.service.ts +66 -0
- package/src/mail-delivery/mail-delivery.constants.ts +31 -0
- package/src/mail-delivery/mail-delivery.controller.ts +38 -0
- package/src/mail-delivery/mail-delivery.module.ts +23 -0
- package/src/mail-delivery/mail-delivery.service.spec.ts +136 -0
- package/src/mail-delivery/mail-delivery.service.ts +152 -0
- package/src/mail-delivery/ses-event.parser.spec.ts +140 -0
- package/src/mail-delivery/ses-event.parser.ts +191 -0
- package/src/mail-delivery/ses-webhook.service.spec.ts +170 -0
- package/src/mail-delivery/ses-webhook.service.ts +240 -0
- package/src/mail-delivery/sns-message.util.spec.ts +163 -0
- package/src/mail-delivery/sns-message.util.ts +125 -0
- package/src/mail-sent/dto/query-mail-sent-list.dto.ts +15 -0
- package/src/mail-sent/mail-sent.service.ts +46 -2
- package/src/mailbox/mailbox-fetcher.registry.ts +132 -0
- package/src/mailbox/mailbox.module.ts +14 -0
- package/src/meeting/meeting-provider.registry.ts +193 -0
- package/src/meeting/meeting.constants.ts +53 -0
- package/src/meeting/meeting.module.ts +13 -0
- package/src/middlewares/locale-injection.middleware.ts +25 -6
- package/src/oauth/providers/google.provider.ts +49 -15
- package/src/observability/monitored-cron.spec.ts +102 -0
- package/src/observability/monitored-cron.ts +110 -0
- package/src/pairing/dto/approve-reverse-pairing.dto.ts +20 -0
- package/src/pairing/dto/claim-pairing.dto.ts +19 -0
- package/src/pairing/dto/confirm-pairing.dto.ts +14 -0
- package/src/pairing/dto/poll-reverse-pairing.dto.ts +9 -0
- package/src/pairing/dto/start-pairing.dto.ts +19 -0
- package/src/pairing/dto/start-reverse-pairing.dto.ts +45 -0
- package/src/pairing/pairing.controller.ts +246 -0
- package/src/pairing/pairing.module.ts +27 -0
- package/src/pairing/pairing.service.spec.ts +462 -0
- package/src/pairing/pairing.service.ts +614 -0
- package/src/pdf/pdf.service.ts +6 -24
- package/src/profile/profile.service.ts +26 -8
- package/src/redis/redis-pubsub.ts +11 -0
- package/src/role/guards/role.guard.spec.ts +75 -0
- package/src/role/guards/role.guard.ts +64 -46
- package/src/session/session.service.spec.ts +81 -0
- package/src/session/session.service.ts +93 -6
- package/src/setting/brand-asset.service.ts +137 -0
- package/src/setting/setting.module.ts +3 -2
- package/src/setting/setting.service.spec.ts +79 -1
- package/src/setting/setting.service.ts +109 -1
- package/src/token/token.service.spec.ts +62 -0
- package/src/token/token.service.ts +57 -3
- package/src/user/user.service.spec.ts +33 -2
- package/src/user/user.service.ts +108 -6
- package/src/user-device/user-device.controller.ts +77 -0
- package/src/user-device/user-device.module.ts +13 -0
- package/src/user-device/user-device.service.spec.ts +234 -0
- package/src/user-device/user-device.service.ts +168 -0
- package/src/utils/device-key.spec.ts +57 -0
- package/src/utils/device-key.ts +32 -0
- package/src/utils/geo-ip.spec.ts +134 -0
- package/src/utils/geo-ip.ts +93 -0
- package/src/utils/locale-context.spec.ts +27 -1
- package/src/utils/locale-context.ts +15 -12
- package/src/utils/security-event-vars.spec.ts +161 -0
- package/src/utils/security-event-vars.ts +153 -0
- package/src/utils/user-agent.spec.ts +37 -0
- package/src/utils/user-agent.ts +46 -0
- package/src/webhook-integration/webhook-integration.service.ts +57 -3
- package/src/webhook-integration/webhook-protocol.registry.ts +6 -0
|
@@ -111,6 +111,19 @@ class LocalProvider extends abstract_provider_1.AbstractProvider {
|
|
|
111
111
|
await (0, promises_1.copyFile)(sourcePath, (0, path_1.join)(storagePath, targetFilename));
|
|
112
112
|
return targetFilename;
|
|
113
113
|
}
|
|
114
|
+
async copy(sourcePath, destination, filename) {
|
|
115
|
+
const fullSourcePath = this.resolveFilepath(sourcePath);
|
|
116
|
+
if (!(0, fs_1.existsSync)(fullSourcePath)) {
|
|
117
|
+
throw new common_1.BadRequestException(`File not found: ${fullSourcePath}`);
|
|
118
|
+
}
|
|
119
|
+
const storagePath = (0, path_1.join)(this.setting['storage-local-path'], destination);
|
|
120
|
+
if (!(0, fs_1.existsSync)(storagePath)) {
|
|
121
|
+
await this.createFolderRecursive(storagePath);
|
|
122
|
+
}
|
|
123
|
+
const storedFilename = this.getFilename(filename);
|
|
124
|
+
await (0, promises_1.copyFile)(fullSourcePath, (0, path_1.join)(storagePath, storedFilename));
|
|
125
|
+
return storedFilename;
|
|
126
|
+
}
|
|
114
127
|
async delete(filepath) {
|
|
115
128
|
const fullPath = this.resolveFilepath(filepath);
|
|
116
129
|
if (!(0, fs_1.existsSync)(fullPath)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"local.provider.js","sourceRoot":"","sources":["../../../src/file/provider/local.provider.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"local.provider.js","sourceRoot":"","sources":["../../../src/file/provider/local.provider.ts"],"names":[],"mappings":"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"}
|
|
@@ -17,6 +17,11 @@ export declare class S3Provider extends AbstractProvider {
|
|
|
17
17
|
filename?: string;
|
|
18
18
|
mimetype?: string;
|
|
19
19
|
}): Promise<any>;
|
|
20
|
+
/**
|
|
21
|
+
* Server-side copy — the bytes never leave S3. Capped at 5GB per object by CopyObject;
|
|
22
|
+
* FileService catches the failure and falls back to streaming through a temp file.
|
|
23
|
+
*/
|
|
24
|
+
copy(sourcePath: string, destination: string, filename: string): Promise<string>;
|
|
20
25
|
delete(filepath: string): Promise<any>;
|
|
21
26
|
readStream(filepath: string, options?: {
|
|
22
27
|
start?: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"s3.provider.d.ts","sourceRoot":"","sources":["../../../src/file/provider/s3.provider.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"s3.provider.d.ts","sourceRoot":"","sources":["../../../src/file/provider/s3.provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAOH,EAAE,EACF,QAAQ,EACX,MAAM,oBAAoB,CAAC;AAM5B,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAClC,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAEvD,qBAAa,UAAW,SAAQ,gBAAgB;IAIlC,OAAO,CAAC,OAAO;IAH3B,OAAO,CAAC,EAAE,CAAiB;IAC3B,OAAO,CAAC,QAAQ,CAAuB;gBAEnB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAInD,OAAO,CAAC,YAAY;IAOd,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAiBzC,cAAc;IAwCd,SAAS;IAsBT,WAAW;IAcX,gBAAgB,CACpB,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,GAAG,CAAC;IAaT,MAAM,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC;IAa3D,cAAc,CAClB,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,GACjD,OAAO,CAAC,GAAG,CAAC;IAwBf;;;OAGG;IACG,IAAI,CACR,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,MAAM,CAAC;IAgBZ,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAYtC,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,QAAQ,CAAC;IAc3F,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAWxC,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,SAAO,GAAG,OAAO,CAAC,MAAM,CAAC;CAUjE"}
|
|
@@ -156,6 +156,21 @@ class S3Provider extends abstract_provider_1.AbstractProvider {
|
|
|
156
156
|
await upload.done();
|
|
157
157
|
return storedFilename;
|
|
158
158
|
}
|
|
159
|
+
/**
|
|
160
|
+
* Server-side copy — the bytes never leave S3. Capped at 5GB per object by CopyObject;
|
|
161
|
+
* FileService catches the failure and falls back to streaming through a temp file.
|
|
162
|
+
*/
|
|
163
|
+
async copy(sourcePath, destination, filename) {
|
|
164
|
+
const s3 = await this.getClient();
|
|
165
|
+
const bucket = this.setting['storage-s3-bucket'];
|
|
166
|
+
const storedFilename = this.getFilename(filename);
|
|
167
|
+
await s3.send(new client_s3_1.CopyObjectCommand({
|
|
168
|
+
Bucket: bucket,
|
|
169
|
+
Key: [destination, storedFilename].join('/'),
|
|
170
|
+
CopySource: encodeURI(`${bucket}/${this.resolveS3Key(sourcePath)}`),
|
|
171
|
+
}));
|
|
172
|
+
return storedFilename;
|
|
173
|
+
}
|
|
159
174
|
async delete(filepath) {
|
|
160
175
|
const s3 = await this.getClient();
|
|
161
176
|
const key = this.resolveS3Key(filepath);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"s3.provider.js","sourceRoot":"","sources":["../../../src/file/provider/s3.provider.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"s3.provider.js","sourceRoot":"","sources":["../../../src/file/provider/s3.provider.ts"],"names":[],"mappings":"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"}
|
|
@@ -19,6 +19,11 @@ export declare class SpacesProvider extends AbstractProvider {
|
|
|
19
19
|
filename?: string;
|
|
20
20
|
mimetype?: string;
|
|
21
21
|
}): Promise<any>;
|
|
22
|
+
/**
|
|
23
|
+
* Server-side copy — the bytes never leave Spaces. Capped at 5GB per object by CopyObject;
|
|
24
|
+
* FileService catches the failure and falls back to streaming through a temp file.
|
|
25
|
+
*/
|
|
26
|
+
copy(sourcePath: string, destination: string, filename: string): Promise<string>;
|
|
22
27
|
delete(filepath: string): Promise<any>;
|
|
23
28
|
readStream(filepath: string, options?: {
|
|
24
29
|
start?: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spaces.provider.d.ts","sourceRoot":"","sources":["../../../src/file/provider/spaces.provider.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"spaces.provider.d.ts","sourceRoot":"","sources":["../../../src/file/provider/spaces.provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAOH,EAAE,EACF,QAAQ,EACX,MAAM,oBAAoB,CAAC;AAM5B,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAClC,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAEvD,qBAAa,cAAe,SAAQ,gBAAgB;IAItC,OAAO,CAAC,OAAO;IAH3B,OAAO,CAAC,EAAE,CAAiB;IAC3B,OAAO,CAAC,QAAQ,CAAuB;gBAEnB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAInD,OAAO,KAAK,QAAQ,GAEnB;IAED,OAAO,KAAK,SAAS,GAMpB;IAED,OAAO,CAAC,UAAU;IAOZ,cAAc;IAwCd,SAAS;IAyBT,WAAW;IAkBX,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAkBzC,MAAM,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC;IAe3D,gBAAgB,CACpB,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,GAAG,CAAC;IAeT,cAAc,CAClB,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,GACjD,OAAO,CAAC,GAAG,CAAC;IA0Bf;;;OAGG;IACG,IAAI,CACR,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,MAAM,CAAC;IAiBZ,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAYtC,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,QAAQ,CAAC;IAc3F,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAYxC,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,SAAO,GAAG,OAAO,CAAC,MAAM,CAAC;CASjE"}
|
|
@@ -171,6 +171,22 @@ class SpacesProvider extends abstract_provider_1.AbstractProvider {
|
|
|
171
171
|
await upload.done();
|
|
172
172
|
return storedFilename;
|
|
173
173
|
}
|
|
174
|
+
/**
|
|
175
|
+
* Server-side copy — the bytes never leave Spaces. Capped at 5GB per object by CopyObject;
|
|
176
|
+
* FileService catches the failure and falls back to streaming through a temp file.
|
|
177
|
+
*/
|
|
178
|
+
async copy(sourcePath, destination, filename) {
|
|
179
|
+
const s3 = await this.getClient();
|
|
180
|
+
const bucket = this.setting['storage-spaces-bucket'];
|
|
181
|
+
const storedFilename = this.getFilename(filename);
|
|
182
|
+
await s3.send(new client_s3_1.CopyObjectCommand({
|
|
183
|
+
Bucket: bucket,
|
|
184
|
+
Key: [destination, storedFilename].join('/'),
|
|
185
|
+
CopySource: encodeURI(`${bucket}/${this.resolveKey(sourcePath)}`),
|
|
186
|
+
ACL: 'public-read',
|
|
187
|
+
}));
|
|
188
|
+
return storedFilename;
|
|
189
|
+
}
|
|
174
190
|
async delete(filepath) {
|
|
175
191
|
const s3 = await this.getClient();
|
|
176
192
|
const key = this.resolveKey(filepath);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spaces.provider.js","sourceRoot":"","sources":["../../../src/file/provider/spaces.provider.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"spaces.provider.js","sourceRoot":"","sources":["../../../src/file/provider/spaces.provider.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"redeem-impersonation.dto.d.ts","sourceRoot":"","sources":["../../../src/impersonation/dto/redeem-impersonation.dto.ts"],"names":[],"mappings":"AAEA,qBAAa,sBAAsB;IAIjC,IAAI,EAAE,MAAM,CAAC;CACd"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.RedeemImpersonationDTO = void 0;
|
|
13
|
+
const class_validator_1 = require("class-validator");
|
|
14
|
+
class RedeemImpersonationDTO {
|
|
15
|
+
}
|
|
16
|
+
exports.RedeemImpersonationDTO = RedeemImpersonationDTO;
|
|
17
|
+
__decorate([
|
|
18
|
+
(0, class_validator_1.IsString)(),
|
|
19
|
+
(0, class_validator_1.MinLength)(16),
|
|
20
|
+
(0, class_validator_1.MaxLength)(255),
|
|
21
|
+
__metadata("design:type", String)
|
|
22
|
+
], RedeemImpersonationDTO.prototype, "code", void 0);
|
|
23
|
+
//# sourceMappingURL=redeem-impersonation.dto.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"redeem-impersonation.dto.js","sourceRoot":"","sources":["../../../src/impersonation/dto/redeem-impersonation.dto.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qDAAiE;AAEjE,MAAa,sBAAsB;CAKlC;AALD,wDAKC;AADC;IAHC,IAAA,0BAAQ,GAAE;IACV,IAAA,2BAAS,EAAC,EAAE,CAAC;IACb,IAAA,2BAAS,EAAC,GAAG,CAAC;;oDACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"start-impersonation.dto.d.ts","sourceRoot":"","sources":["../../../src/impersonation/dto/start-impersonation.dto.ts"],"names":[],"mappings":"AAEA,qBAAa,qBAAqB;IAChC,6CAA6C;IAE7C,GAAG,EAAE,MAAM,CAAC;IAEZ,uEAAuE;IAIvE,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.StartImpersonationDTO = void 0;
|
|
13
|
+
const class_validator_1 = require("class-validator");
|
|
14
|
+
class StartImpersonationDTO {
|
|
15
|
+
}
|
|
16
|
+
exports.StartImpersonationDTO = StartImpersonationDTO;
|
|
17
|
+
__decorate([
|
|
18
|
+
(0, class_validator_1.IsIn)(['admin', 'class', 'partners']),
|
|
19
|
+
__metadata("design:type", String)
|
|
20
|
+
], StartImpersonationDTO.prototype, "app", void 0);
|
|
21
|
+
__decorate([
|
|
22
|
+
(0, class_validator_1.IsOptional)(),
|
|
23
|
+
(0, class_validator_1.IsString)(),
|
|
24
|
+
(0, class_validator_1.MaxLength)(255),
|
|
25
|
+
__metadata("design:type", String)
|
|
26
|
+
], StartImpersonationDTO.prototype, "reason", void 0);
|
|
27
|
+
//# sourceMappingURL=start-impersonation.dto.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"start-impersonation.dto.js","sourceRoot":"","sources":["../../../src/impersonation/dto/start-impersonation.dto.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qDAAwE;AAExE,MAAa,qBAAqB;CAUjC;AAVD,sDAUC;AAPC;IADC,IAAA,sBAAI,EAAC,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;;kDACzB;AAMZ;IAHC,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;IACV,IAAA,2BAAS,EAAC,GAAG,CAAC;;qDACC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Rotas bloqueadas enquanto uma sessao simulada esta ativa.
|
|
3
|
+
*
|
|
4
|
+
* POR QUE ISTO EXISTE
|
|
5
|
+
*
|
|
6
|
+
* Numa simulacao o JWT tem `sub` = ALVO, entao para todo o resto do sistema o
|
|
7
|
+
* request E o alvo. Isso e o desejado (o RoleGuard resolve os papeis do alvo),
|
|
8
|
+
* mas abre buracos em qualquer endpoint que transforme "quem eu sou" em algo
|
|
9
|
+
* duravel. O caso mais grave e `GET /auth/desktop-token`: ele e `@NoRole()` e
|
|
10
|
+
* chama `getAuthenticationPayload` para `@User().id`, ou seja, o operador
|
|
11
|
+
* cunharia para o alvo uma sessao completa, RENOVAVEL e de 30 dias — furando o
|
|
12
|
+
* teto de 30 minutos e saindo da trilha de auditoria.
|
|
13
|
+
*
|
|
14
|
+
* `POST /auth/logout` e igualmente perigoso pelo motivo oposto: ele le
|
|
15
|
+
* `req.cookies['rt']`, que na mesma origem e o cookie do OPERADOR, e revogaria
|
|
16
|
+
* a sessao real dele.
|
|
17
|
+
*
|
|
18
|
+
* Por isso a checagem roda ANTES dos atalhos de `@Public()` e `@NoRole()` no
|
|
19
|
+
* RoleGuard — sao justamente esses dois decorators que protegem as rotas
|
|
20
|
+
* perigosas.
|
|
21
|
+
*/
|
|
22
|
+
export declare function isRestrictedDuringImpersonation(httpMethod: string, fullPath: string): boolean;
|
|
23
|
+
export declare const IMPERSONATION_RESTRICTED_EXACT: Set<string>;
|
|
24
|
+
export declare const IMPERSONATION_RESTRICTED_PREFIXES: string[];
|
|
25
|
+
export declare const IMPERSONATION_ALWAYS_ALLOWED: Set<string>;
|
|
26
|
+
//# sourceMappingURL=impersonation-restrictions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"impersonation-restrictions.d.ts","sourceRoot":"","sources":["../../src/impersonation/impersonation-restrictions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AA0CH,wBAAgB,+BAA+B,CAC7C,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,GACf,OAAO,CAcT;AAED,eAAO,MAAM,8BAA8B,aAAmB,CAAC;AAC/D,eAAO,MAAM,iCAAiC,UAAsB,CAAC;AACrE,eAAO,MAAM,4BAA4B,aAAiB,CAAC"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Rotas bloqueadas enquanto uma sessao simulada esta ativa.
|
|
4
|
+
*
|
|
5
|
+
* POR QUE ISTO EXISTE
|
|
6
|
+
*
|
|
7
|
+
* Numa simulacao o JWT tem `sub` = ALVO, entao para todo o resto do sistema o
|
|
8
|
+
* request E o alvo. Isso e o desejado (o RoleGuard resolve os papeis do alvo),
|
|
9
|
+
* mas abre buracos em qualquer endpoint que transforme "quem eu sou" em algo
|
|
10
|
+
* duravel. O caso mais grave e `GET /auth/desktop-token`: ele e `@NoRole()` e
|
|
11
|
+
* chama `getAuthenticationPayload` para `@User().id`, ou seja, o operador
|
|
12
|
+
* cunharia para o alvo uma sessao completa, RENOVAVEL e de 30 dias — furando o
|
|
13
|
+
* teto de 30 minutos e saindo da trilha de auditoria.
|
|
14
|
+
*
|
|
15
|
+
* `POST /auth/logout` e igualmente perigoso pelo motivo oposto: ele le
|
|
16
|
+
* `req.cookies['rt']`, que na mesma origem e o cookie do OPERADOR, e revogaria
|
|
17
|
+
* a sessao real dele.
|
|
18
|
+
*
|
|
19
|
+
* Por isso a checagem roda ANTES dos atalhos de `@Public()` e `@NoRole()` no
|
|
20
|
+
* RoleGuard — sao justamente esses dois decorators que protegem as rotas
|
|
21
|
+
* perigosas.
|
|
22
|
+
*/
|
|
23
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
24
|
+
exports.IMPERSONATION_ALWAYS_ALLOWED = exports.IMPERSONATION_RESTRICTED_PREFIXES = exports.IMPERSONATION_RESTRICTED_EXACT = void 0;
|
|
25
|
+
exports.isRestrictedDuringImpersonation = isRestrictedDuringImpersonation;
|
|
26
|
+
/** `METHOD /path` exatos, no formato que o RoleGuard monta a partir do Nest. */
|
|
27
|
+
const RESTRICTED_EXACT = new Set([
|
|
28
|
+
// Emissao de credencial duravel para o alvo.
|
|
29
|
+
'GET /auth/desktop-token',
|
|
30
|
+
'POST /auth/token',
|
|
31
|
+
// Mexe no cookie `rt`, que e do operador.
|
|
32
|
+
'POST /auth/logout',
|
|
33
|
+
// Encerrar sessao alheia a partir de uma simulacao.
|
|
34
|
+
'DELETE /sessions/:sessionId/revoke',
|
|
35
|
+
'DELETE /sessions/revoke-all',
|
|
36
|
+
'DELETE /sessions/revoke-all-other',
|
|
37
|
+
// Tomada de conta.
|
|
38
|
+
'PUT /profile/change-password',
|
|
39
|
+
'PUT /profile/change-email',
|
|
40
|
+
'DELETE /profile/account',
|
|
41
|
+
'PATCH /user/:userId/reset-password',
|
|
42
|
+
// Simulacao aninhada.
|
|
43
|
+
'POST /impersonation/start',
|
|
44
|
+
]);
|
|
45
|
+
/** Familias inteiras: pareamento, OAuth e todo o material de segunda etapa. */
|
|
46
|
+
const RESTRICTED_PREFIXES = [
|
|
47
|
+
'/auth/pairing',
|
|
48
|
+
'/auth/authorize',
|
|
49
|
+
'/profile/mfa',
|
|
50
|
+
'/profile/totp',
|
|
51
|
+
'/profile/webauthn',
|
|
52
|
+
'/profile/recovery-codes',
|
|
53
|
+
'/profile/email',
|
|
54
|
+
];
|
|
55
|
+
/**
|
|
56
|
+
* Precisam funcionar justamente porque a sessao e simulada — sem elas o
|
|
57
|
+
* operador nao conseguiria sair.
|
|
58
|
+
*/
|
|
59
|
+
const ALWAYS_ALLOWED = new Set([
|
|
60
|
+
'POST /impersonation/stop',
|
|
61
|
+
'GET /impersonation/session',
|
|
62
|
+
]);
|
|
63
|
+
function isRestrictedDuringImpersonation(httpMethod, fullPath) {
|
|
64
|
+
const key = `${httpMethod} ${fullPath}`;
|
|
65
|
+
if (ALWAYS_ALLOWED.has(key)) {
|
|
66
|
+
return false;
|
|
67
|
+
}
|
|
68
|
+
if (RESTRICTED_EXACT.has(key)) {
|
|
69
|
+
return true;
|
|
70
|
+
}
|
|
71
|
+
return RESTRICTED_PREFIXES.some((prefix) => fullPath === prefix || fullPath.startsWith(`${prefix}/`));
|
|
72
|
+
}
|
|
73
|
+
exports.IMPERSONATION_RESTRICTED_EXACT = RESTRICTED_EXACT;
|
|
74
|
+
exports.IMPERSONATION_RESTRICTED_PREFIXES = RESTRICTED_PREFIXES;
|
|
75
|
+
exports.IMPERSONATION_ALWAYS_ALLOWED = ALWAYS_ALLOWED;
|
|
76
|
+
//# sourceMappingURL=impersonation-restrictions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"impersonation-restrictions.js","sourceRoot":"","sources":["../../src/impersonation/impersonation-restrictions.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;;;AA0CH,0EAiBC;AAzDD,gFAAgF;AAChF,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC;IAC/B,6CAA6C;IAC7C,yBAAyB;IACzB,kBAAkB;IAClB,0CAA0C;IAC1C,mBAAmB;IACnB,oDAAoD;IACpD,oCAAoC;IACpC,6BAA6B;IAC7B,mCAAmC;IACnC,mBAAmB;IACnB,8BAA8B;IAC9B,2BAA2B;IAC3B,yBAAyB;IACzB,oCAAoC;IACpC,sBAAsB;IACtB,2BAA2B;CAC5B,CAAC,CAAC;AAEH,+EAA+E;AAC/E,MAAM,mBAAmB,GAAG;IAC1B,eAAe;IACf,iBAAiB;IACjB,cAAc;IACd,eAAe;IACf,mBAAmB;IACnB,yBAAyB;IACzB,gBAAgB;CACjB,CAAC;AAEF;;;GAGG;AACH,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC;IAC7B,0BAA0B;IAC1B,4BAA4B;CAC7B,CAAC,CAAC;AAEH,SAAgB,+BAA+B,CAC7C,UAAkB,EAClB,QAAgB;IAEhB,MAAM,GAAG,GAAG,GAAG,UAAU,IAAI,QAAQ,EAAE,CAAC;IAExC,IAAI,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;QAC5B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;QAC9B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,mBAAmB,CAAC,IAAI,CAC7B,CAAC,MAAM,EAAE,EAAE,CAAC,QAAQ,KAAK,MAAM,IAAI,QAAQ,CAAC,UAAU,CAAC,GAAG,MAAM,GAAG,CAAC,CACrE,CAAC;AACJ,CAAC;AAEY,QAAA,8BAA8B,GAAG,gBAAgB,CAAC;AAClD,QAAA,iCAAiC,GAAG,mBAAmB,CAAC;AACxD,QAAA,4BAA4B,GAAG,cAAc,CAAC"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import { ImpersonationContext } from '@hed-hog/api';
|
|
2
|
+
import { RedeemImpersonationDTO } from './dto/redeem-impersonation.dto';
|
|
3
|
+
import { StartImpersonationDTO } from './dto/start-impersonation.dto';
|
|
4
|
+
import { ImpersonationService } from './impersonation.service';
|
|
5
|
+
/**
|
|
6
|
+
* Quem chama o quê:
|
|
7
|
+
* - `start` e `history`: a aba do OPERADOR, com papel administrativo;
|
|
8
|
+
* - `redeem`: a aba NOVA, que ainda nao tem sessao nenhuma — por isso @Public();
|
|
9
|
+
* - `stop` e `session`: a propria sessao SIMULADA, cujos papeis sao os do alvo
|
|
10
|
+
* (um aluno, por exemplo) — por isso @NoRole(), e nao @Role().
|
|
11
|
+
*/
|
|
12
|
+
export declare class ImpersonationController {
|
|
13
|
+
private readonly service;
|
|
14
|
+
constructor(service: ImpersonationService);
|
|
15
|
+
start(locale: string, operator: any, impersonation: ImpersonationContext, body: StartImpersonationDTO & {
|
|
16
|
+
targetUserId: number;
|
|
17
|
+
}, ipAddress: string, userAgent: string): Promise<{
|
|
18
|
+
url: string;
|
|
19
|
+
expiresAt: string;
|
|
20
|
+
}>;
|
|
21
|
+
redeem(locale: string, { code }: RedeemImpersonationDTO, ipAddress: string, userAgent: string): Promise<{
|
|
22
|
+
accessToken: string;
|
|
23
|
+
expiresAt: string;
|
|
24
|
+
sessionId: number;
|
|
25
|
+
app: string;
|
|
26
|
+
operator: {
|
|
27
|
+
id: number;
|
|
28
|
+
name: string;
|
|
29
|
+
};
|
|
30
|
+
target: {
|
|
31
|
+
id: number;
|
|
32
|
+
name: string;
|
|
33
|
+
};
|
|
34
|
+
}>;
|
|
35
|
+
stop(target: any, impersonation: ImpersonationContext, ipAddress: string): Promise<{
|
|
36
|
+
ended: boolean;
|
|
37
|
+
}>;
|
|
38
|
+
session(impersonation: ImpersonationContext): Promise<{
|
|
39
|
+
active: false;
|
|
40
|
+
operator?: undefined;
|
|
41
|
+
target?: undefined;
|
|
42
|
+
reason?: undefined;
|
|
43
|
+
expiresAt?: undefined;
|
|
44
|
+
} | {
|
|
45
|
+
active: true;
|
|
46
|
+
operator: {
|
|
47
|
+
id: number;
|
|
48
|
+
name: string;
|
|
49
|
+
};
|
|
50
|
+
target: {
|
|
51
|
+
id: number;
|
|
52
|
+
name: string;
|
|
53
|
+
};
|
|
54
|
+
reason: string;
|
|
55
|
+
expiresAt: string;
|
|
56
|
+
}>;
|
|
57
|
+
apps(): Promise<{
|
|
58
|
+
apps: {
|
|
59
|
+
key: string;
|
|
60
|
+
url: string;
|
|
61
|
+
}[];
|
|
62
|
+
}>;
|
|
63
|
+
history(paginationParams: any, targetUserId?: string): Promise<{
|
|
64
|
+
data: {
|
|
65
|
+
id: any;
|
|
66
|
+
app: any;
|
|
67
|
+
reason: any;
|
|
68
|
+
sessionId: any;
|
|
69
|
+
operator: {
|
|
70
|
+
id: number;
|
|
71
|
+
name: string;
|
|
72
|
+
};
|
|
73
|
+
target: {
|
|
74
|
+
id: number;
|
|
75
|
+
name: string;
|
|
76
|
+
};
|
|
77
|
+
issuedIp: any;
|
|
78
|
+
redeemedIp: any;
|
|
79
|
+
consumedAt: any;
|
|
80
|
+
endedAt: any;
|
|
81
|
+
expiresAt: any;
|
|
82
|
+
createdAt: any;
|
|
83
|
+
}[];
|
|
84
|
+
total: any;
|
|
85
|
+
lastPage: number;
|
|
86
|
+
page: number;
|
|
87
|
+
pageSize: number;
|
|
88
|
+
}>;
|
|
89
|
+
}
|
|
90
|
+
//# sourceMappingURL=impersonation.controller.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"impersonation.controller.d.ts","sourceRoot":"","sources":["../../src/impersonation/impersonation.controller.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,oBAAoB,EAA8B,MAAM,cAAc,CAAC;AAgB/F,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AACxE,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAE/D;;;;;;GAMG;AACH,qBAEa,uBAAuB;IAGhC,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAAP,OAAO,EAAE,oBAAoB;IAM1C,KAAK,CACC,MAAM,EAAE,MAAM,EAChB,QAAQ,KAAA,EACC,aAAa,EAAE,oBAAoB,EAC5C,IAAI,EAAE,qBAAqB,GAAG;QAAE,YAAY,EAAE,MAAM,CAAA;KAAE,EACxD,SAAS,EAAE,MAAM,EACA,SAAS,EAAE,MAAM;;;;IAkBpC,MAAM,CACA,MAAM,EAAE,MAAM,EAChB,EAAE,IAAI,EAAE,EAAE,sBAAsB,EAClC,SAAS,EAAE,MAAM,EACA,SAAS,EAAE,MAAM;;;;;;;;;;;;;;IAOpC,IAAI,CACA,MAAM,KAAA,EACG,aAAa,EAAE,oBAAoB,EAC9C,SAAS,EAAE,MAAM;;;IAYnB,OAAO,CAAkB,aAAa,EAAE,oBAAoB;;;;;;;;;;;;;;;;;;;IAO5D,IAAI;;;;;;IAKJ,OAAO,CACG,gBAAgB,KAAA,EACP,YAAY,CAAC,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;CAM/C"}
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.ImpersonationController = void 0;
|
|
16
|
+
const api_1 = require("@hed-hog/api");
|
|
17
|
+
const api_locale_1 = require("@hed-hog/api-locale");
|
|
18
|
+
const api_pagination_1 = require("@hed-hog/api-pagination");
|
|
19
|
+
const common_1 = require("@nestjs/common");
|
|
20
|
+
const throttler_1 = require("@nestjs/throttler");
|
|
21
|
+
const redeem_impersonation_dto_1 = require("./dto/redeem-impersonation.dto");
|
|
22
|
+
const impersonation_service_1 = require("./impersonation.service");
|
|
23
|
+
/**
|
|
24
|
+
* Quem chama o quê:
|
|
25
|
+
* - `start` e `history`: a aba do OPERADOR, com papel administrativo;
|
|
26
|
+
* - `redeem`: a aba NOVA, que ainda nao tem sessao nenhuma — por isso @Public();
|
|
27
|
+
* - `stop` e `session`: a propria sessao SIMULADA, cujos papeis sao os do alvo
|
|
28
|
+
* (um aluno, por exemplo) — por isso @NoRole(), e nao @Role().
|
|
29
|
+
*/
|
|
30
|
+
let ImpersonationController = class ImpersonationController {
|
|
31
|
+
constructor(service) {
|
|
32
|
+
this.service = service;
|
|
33
|
+
}
|
|
34
|
+
async start(locale, operator, impersonation, body, ipAddress, userAgent) {
|
|
35
|
+
return this.service.start({
|
|
36
|
+
locale,
|
|
37
|
+
operatorUserId: operator.id,
|
|
38
|
+
targetUserId: Number(body.targetUserId),
|
|
39
|
+
app: body.app,
|
|
40
|
+
reason: body.reason,
|
|
41
|
+
isImpersonating: impersonation.active,
|
|
42
|
+
ipAddress,
|
|
43
|
+
userAgent,
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
async redeem(locale, { code }, ipAddress, userAgent) {
|
|
47
|
+
return this.service.redeem({ locale, code, ipAddress, userAgent });
|
|
48
|
+
}
|
|
49
|
+
async stop(target, impersonation, ipAddress) {
|
|
50
|
+
return this.service.stop({
|
|
51
|
+
sessionId: impersonation.sessionId,
|
|
52
|
+
targetUserId: target.id,
|
|
53
|
+
operatorUserId: impersonation.operatorUserId,
|
|
54
|
+
ipAddress,
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
async session(impersonation) {
|
|
58
|
+
return this.service.currentSession(impersonation.active ? impersonation.sessionId : null);
|
|
59
|
+
}
|
|
60
|
+
async apps() {
|
|
61
|
+
return { apps: await this.service.listRedeemableApps() };
|
|
62
|
+
}
|
|
63
|
+
async history(paginationParams, targetUserId) {
|
|
64
|
+
return this.service.history(paginationParams, {
|
|
65
|
+
targetUserId: targetUserId ? Number(targetUserId) : undefined,
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
};
|
|
69
|
+
exports.ImpersonationController = ImpersonationController;
|
|
70
|
+
__decorate([
|
|
71
|
+
(0, common_1.UseGuards)(throttler_1.ThrottlerGuard),
|
|
72
|
+
(0, throttler_1.Throttle)({ default: { limit: 10, ttl: 60000 } }),
|
|
73
|
+
(0, common_1.Post)('start'),
|
|
74
|
+
__param(0, (0, api_locale_1.Locale)()),
|
|
75
|
+
__param(1, (0, api_1.User)()),
|
|
76
|
+
__param(2, (0, api_1.Impersonation)()),
|
|
77
|
+
__param(3, (0, common_1.Body)()),
|
|
78
|
+
__param(4, (0, common_1.Ip)()),
|
|
79
|
+
__param(5, (0, common_1.Headers)('user-agent')),
|
|
80
|
+
__metadata("design:type", Function),
|
|
81
|
+
__metadata("design:paramtypes", [String, Object, Object, Object, String, String]),
|
|
82
|
+
__metadata("design:returntype", Promise)
|
|
83
|
+
], ImpersonationController.prototype, "start", null);
|
|
84
|
+
__decorate([
|
|
85
|
+
(0, api_1.Public)(),
|
|
86
|
+
(0, common_1.UseGuards)(throttler_1.ThrottlerGuard),
|
|
87
|
+
(0, throttler_1.Throttle)({ default: { limit: 20, ttl: 60000 } }),
|
|
88
|
+
(0, common_1.Post)('redeem'),
|
|
89
|
+
__param(0, (0, api_locale_1.Locale)()),
|
|
90
|
+
__param(1, (0, common_1.Body)()),
|
|
91
|
+
__param(2, (0, common_1.Ip)()),
|
|
92
|
+
__param(3, (0, common_1.Headers)('user-agent')),
|
|
93
|
+
__metadata("design:type", Function),
|
|
94
|
+
__metadata("design:paramtypes", [String, redeem_impersonation_dto_1.RedeemImpersonationDTO, String, String]),
|
|
95
|
+
__metadata("design:returntype", Promise)
|
|
96
|
+
], ImpersonationController.prototype, "redeem", null);
|
|
97
|
+
__decorate([
|
|
98
|
+
(0, api_1.NoRole)(),
|
|
99
|
+
(0, common_1.Post)('stop'),
|
|
100
|
+
__param(0, (0, api_1.User)()),
|
|
101
|
+
__param(1, (0, api_1.Impersonation)()),
|
|
102
|
+
__param(2, (0, common_1.Ip)()),
|
|
103
|
+
__metadata("design:type", Function),
|
|
104
|
+
__metadata("design:paramtypes", [Object, Object, String]),
|
|
105
|
+
__metadata("design:returntype", Promise)
|
|
106
|
+
], ImpersonationController.prototype, "stop", null);
|
|
107
|
+
__decorate([
|
|
108
|
+
(0, api_1.NoRole)(),
|
|
109
|
+
(0, common_1.Get)('session'),
|
|
110
|
+
__param(0, (0, api_1.Impersonation)()),
|
|
111
|
+
__metadata("design:type", Function),
|
|
112
|
+
__metadata("design:paramtypes", [Object]),
|
|
113
|
+
__metadata("design:returntype", Promise)
|
|
114
|
+
], ImpersonationController.prototype, "session", null);
|
|
115
|
+
__decorate([
|
|
116
|
+
(0, common_1.Get)('apps'),
|
|
117
|
+
__metadata("design:type", Function),
|
|
118
|
+
__metadata("design:paramtypes", []),
|
|
119
|
+
__metadata("design:returntype", Promise)
|
|
120
|
+
], ImpersonationController.prototype, "apps", null);
|
|
121
|
+
__decorate([
|
|
122
|
+
(0, common_1.Get)('history'),
|
|
123
|
+
__param(0, (0, api_pagination_1.Pagination)()),
|
|
124
|
+
__param(1, (0, common_1.Query)('targetUserId')),
|
|
125
|
+
__metadata("design:type", Function),
|
|
126
|
+
__metadata("design:paramtypes", [Object, String]),
|
|
127
|
+
__metadata("design:returntype", Promise)
|
|
128
|
+
], ImpersonationController.prototype, "history", null);
|
|
129
|
+
exports.ImpersonationController = ImpersonationController = __decorate([
|
|
130
|
+
(0, api_1.Role)(),
|
|
131
|
+
(0, common_1.Controller)('impersonation'),
|
|
132
|
+
__param(0, (0, common_1.Inject)((0, common_1.forwardRef)(() => impersonation_service_1.ImpersonationService))),
|
|
133
|
+
__metadata("design:paramtypes", [impersonation_service_1.ImpersonationService])
|
|
134
|
+
], ImpersonationController);
|
|
135
|
+
//# sourceMappingURL=impersonation.controller.js.map
|