@hed-hog/core 0.0.371 → 0.0.374
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 +83 -1
- package/dist/integration-profile/integration-profile.secrets.d.ts.map +1 -1
- package/dist/integration-profile/integration-profile.secrets.js +4 -0
- package/dist/integration-profile/integration-profile.secrets.js.map +1 -1
- package/dist/integration-profile/integration-profile.utils.d.ts +6 -0
- package/dist/integration-profile/integration-profile.utils.d.ts.map +1 -1
- package/dist/integration-profile/integration-profile.utils.js +1 -1
- package/dist/integration-profile/integration-profile.utils.js.map +1 -1
- package/dist/oauth/oauth.controller.d.ts +11 -3
- package/dist/oauth/oauth.controller.d.ts.map +1 -1
- package/dist/oauth/oauth.controller.js +52 -14
- package/dist/oauth/oauth.controller.js.map +1 -1
- package/dist/oauth/oauth.module.d.ts.map +1 -1
- package/dist/oauth/oauth.module.js +4 -0
- package/dist/oauth/oauth.module.js.map +1 -1
- package/dist/oauth/oauth.service.d.ts +38 -2
- package/dist/oauth/oauth.service.d.ts.map +1 -1
- package/dist/oauth/oauth.service.js +122 -5
- package/dist/oauth/oauth.service.js.map +1 -1
- package/dist/oauth/providers/apple.provider.d.ts +34 -0
- package/dist/oauth/providers/apple.provider.d.ts.map +1 -0
- package/dist/oauth/providers/apple.provider.js +197 -0
- package/dist/oauth/providers/apple.provider.js.map +1 -0
- package/dist/oauth/providers/facebook.provider.d.ts +1 -1
- package/dist/oauth/providers/facebook.provider.d.ts.map +1 -1
- package/dist/oauth/providers/facebook.provider.js +3 -2
- package/dist/oauth/providers/facebook.provider.js.map +1 -1
- package/dist/oauth/providers/google.provider.d.ts +1 -1
- package/dist/oauth/providers/google.provider.d.ts.map +1 -1
- package/dist/oauth/providers/google.provider.js +3 -2
- package/dist/oauth/providers/google.provider.js.map +1 -1
- package/dist/oauth/providers/linkedin.provider.d.ts +25 -0
- package/dist/oauth/providers/linkedin.provider.d.ts.map +1 -0
- package/dist/oauth/providers/linkedin.provider.js +99 -0
- package/dist/oauth/providers/linkedin.provider.js.map +1 -0
- package/dist/oauth/providers/microsoft-entra-id.provider.js +1 -1
- package/dist/oauth/providers/microsoft-entra-id.provider.js.map +1 -1
- package/dist/oauth/providers/microsoft.provider.d.ts +1 -1
- package/dist/oauth/providers/microsoft.provider.d.ts.map +1 -1
- package/dist/oauth/providers/microsoft.provider.js +3 -2
- package/dist/oauth/providers/microsoft.provider.js.map +1 -1
- package/dist/pdf/pdf.service.d.ts.map +1 -1
- package/dist/pdf/pdf.service.js +19 -2
- package/dist/pdf/pdf.service.js.map +1 -1
- package/dist/setting/setting.service.d.ts.map +1 -1
- package/dist/setting/setting.service.js +4 -1
- package/dist/setting/setting.service.js.map +1 -1
- package/hedhog/data/integration_provider.yaml +16 -0
- package/hedhog/data/setting_group.yaml +98 -0
- package/hedhog/data/setting_subgroup.yaml +16 -0
- package/hedhog/frontend/app/configurations/[slug]/components/setting-field.tsx.ejs +2 -0
- package/hedhog/frontend/app/dashboard/dashboard.css.ejs +11 -11
- package/hedhog/frontend/app/integration/profiles/page.tsx.ejs +57 -9
- package/hedhog/frontend/app/menu/page.tsx.ejs +1 -1
- package/hedhog/frontend/app/users/user-sheet.tsx.ejs +8 -0
- package/hedhog/frontend/messages/en.json +35 -0
- package/hedhog/frontend/messages/pt.json +35 -0
- package/hedhog/table/user_account.yaml +1 -0
- package/package.json +4 -4
- package/src/access-log/access-log.service.spec.ts +235 -0
- package/src/ai-instruction/ai-prompt-builder.service.spec.ts +250 -0
- package/src/auth/auth.service.spec.ts +891 -0
- package/src/auth/guards/auth.guard.spec.ts +177 -0
- package/src/challenge/challenge.service.spec.ts +334 -0
- package/src/dashboard/dashboard-core/dashboard-core.service.spec.ts +193 -0
- package/src/file/image-optimization.service.spec.ts +283 -0
- package/src/file/provider/provider.factory.spec.ts +111 -0
- package/src/install/install.service.spec.ts +139 -0
- package/src/integration/services/event-subscriber.registry.spec.ts +143 -0
- package/src/integration/services/inbox.service.spec.ts +183 -0
- package/src/integration/services/integration-link.service.spec.ts +217 -0
- package/src/integration/services/outbox.service.spec.ts +290 -0
- package/src/integration-profile/integration-credential-crypto.service.spec.ts +289 -0
- package/src/integration-profile/integration-profile.secrets.ts +4 -0
- package/src/integration-profile/integration-profile.utils.spec.ts +332 -0
- package/src/integration-profile/integration-profile.utils.ts +14 -1
- package/src/locale/locale.service.spec.ts +78 -0
- package/src/mail/mail.service.spec.ts +257 -0
- package/src/mcp/guards/mcp-auth.guard.spec.ts +87 -0
- package/src/mcp/guards/mcp-permission.guard.spec.ts +64 -0
- package/src/mcp/mcp-api-key.service.spec.ts +125 -0
- package/src/mcp/mcp-registry.service.spec.ts +96 -0
- package/src/mcp/mcp-server.service.spec.ts +187 -0
- package/src/menu/menu.service.spec.ts +76 -0
- package/src/notification/notification.service.spec.ts +297 -0
- package/src/oauth/oauth.controller.ts +53 -10
- package/src/oauth/oauth.module.ts +4 -0
- package/src/oauth/oauth.service.spec.ts +332 -0
- package/src/oauth/oauth.service.ts +156 -1
- package/src/oauth/providers/apple.provider.ts +175 -0
- package/src/oauth/providers/facebook.provider.ts +3 -2
- package/src/oauth/providers/google.provider.ts +3 -2
- package/src/oauth/providers/linkedin.provider.ts +96 -0
- package/src/oauth/providers/microsoft-entra-id.provider.ts +1 -1
- package/src/oauth/providers/microsoft.provider.ts +3 -2
- package/src/pdf/pdf.service.ts +20 -2
- package/src/role/guards/role.guard.spec.ts +157 -0
- package/src/role/role.service.spec.ts +179 -0
- package/src/session/session.service.spec.ts +376 -0
- package/src/setting/setting.service.spec.ts +316 -0
- package/src/setting/setting.service.ts +4 -1
- package/src/task/task.service.spec.ts +47 -0
- package/src/token/token.service.spec.ts +351 -0
- package/src/user/user.service.spec.ts +256 -0
- package/src/utils/locale-context.spec.ts +22 -0
- package/src/utils/webauthn-origin.spec.ts +73 -0
- package/src/webhook-integration/integration-event-catalog.service.spec.ts +149 -0
package/README.md
CHANGED
|
@@ -9,7 +9,7 @@ O módulo `@hed-hog/core` é o núcleo do monorepo HedHog, responsável por forn
|
|
|
9
9
|
|
|
10
10
|
## 2. Escopo e responsabilidades
|
|
11
11
|
|
|
12
|
-
- Gerenciamento de autenticação e autorização, incluindo MFA, WebAuthn, recuperação de senha e
|
|
12
|
+
- Gerenciamento de autenticação e autorização, incluindo MFA, WebAuthn, recuperação de senha, sessões e login social via OAuth (Google, Facebook, GitHub, Microsoft, Microsoft Entra ID, Apple, LinkedIn) com hub de callback multi-app.
|
|
13
13
|
- Serviços de inteligência artificial para chat e agentes AI com suporte a OpenAI e Gemini.
|
|
14
14
|
- Gestão de dashboards, componentes, roles e usuários associados.
|
|
15
15
|
- Informações do sistema operacional, hardware, banco de dados e módulos instalados.
|
|
@@ -51,6 +51,23 @@ O módulo `@hed-hog/core` é o núcleo do monorepo HedHog, responsável por forn
|
|
|
51
51
|
| POST | `/auth/logout` | Pública | Logout e invalida refresh token. | Body: `{ refreshToken?: string }`<br>Cookies: `rt` opcional | `{ success: true }` | 400: Refresh token não fornecido |
|
|
52
52
|
| POST | `/auth/forgot-reset` | Pública | Reseta senha via código de recuperação. | Body: `ResetDTO` (password: string, code: string) | Tokens de acesso e refresh | 400: Código inválido ou expirado |
|
|
53
53
|
|
|
54
|
+
### Módulo OAuth (`/oauth`)
|
|
55
|
+
|
|
56
|
+
> **Padrão de hub multi-app**: cada provider precisa de **apenas uma URL de callback registrada** (`${url}/callback/:provider`, sem sufixo de fluxo — GitHub usa `${api-url}/oauth/github/callback`, e Apple usa `${api-url}/oauth/apple/callback`, ambos por só aceitarem uma callback URL). O fluxo (`login`/`register`/`connect`) e o app que iniciou a autenticação (ex.: `training`) viajam assinados no parâmetro `state` (`hhweb.<app>.<flow>.<assinatura>`, HMAC via `SecurityService`), nunca no path. O app configurado na setting `url` funciona como **hub**: ao receber o callback do provider, ele decide localmente (fluxo próprio) ou reencaminha o browser para a página de callback do app que iniciou o fluxo, resolvendo a origem via setting `app-urls`. Providers suportados: Google, Facebook, GitHub, Microsoft, Microsoft Entra ID, Apple (Sign in with Apple) e LinkedIn.
|
|
57
|
+
|
|
58
|
+
| Método | Path | Autenticação | Descrição | Parâmetros / Query / Body | Resposta | Erros Comuns |
|
|
59
|
+
|--------|----------------------------------|--------------|------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------|------------------------------------------------------------------------|----------------------------------------------------------------------|
|
|
60
|
+
| GET | `/oauth/github/callback` | Pública | Bounce exclusivo do GitHub (única callback URL aceita pelo provider); repassa o `code` para o frontend correto. | Query: `code`, `state?` | Redirect 302 para `${origem}/callback/github/<flow>?code=...&state=...` | - |
|
|
61
|
+
| POST | `/oauth/apple/callback` | Pública | Bounce exclusivo da Apple: ela exige `response_mode=form_post` quando `scope` é solicitado, então POSTa `code`/`state` em vez de um redirect GET. Converte de volta para um redirect GET, igual ao bounce do GitHub. | Body: `code`, `state?` | Redirect 302 para `${origem}/callback/apple/<flow>?code=...&state=...` | - |
|
|
62
|
+
| GET | `/oauth/:provider/login` | Pública | Inicia o fluxo de login, redirecionando para a tela de autorização do provider. | Path: `provider`<br>Query: `redirectApp?` (chave em `app-urls` do app iniciador) | Redirect 302 para a URL de autorização do provider | 400: provider não habilitado ou não suportado |
|
|
63
|
+
| GET | `/oauth/:provider/register` | Pública | Inicia o fluxo de cadastro via OAuth. | Path: `provider`<br>Query: `redirectApp?` | Redirect 302 para a URL de autorização do provider | 400: provider não habilitado ou não suportado |
|
|
64
|
+
| GET | `/oauth/:provider/connect` | Pública | Inicia o fluxo de vinculação de conta a um usuário já autenticado no app de destino. | Path: `provider`<br>Query: `redirectApp?` | Redirect 302 para a URL de autorização do provider | 400: provider não habilitado ou não suportado |
|
|
65
|
+
| GET | `/oauth/:provider/mobile/auth-url` | Pública | Retorna a URL de autorização para apps nativos (Electron/React Native) interceptarem o redirect. | Path: `provider`<br>Query: `redirectUri` (custom scheme do app nativo) | `{ authUrl: string }` | 400: redirect URI inválida ou provider não habilitado |
|
|
66
|
+
| GET | `/oauth/:provider/callback/login` | Pública | Troca o `code` por tokens de acesso após o hub reencaminhar para a página de login do app. | Path: `provider`<br>Query: `code`, `state?`, `redirectUri?` | `{ accessToken: string, refreshToken?: string }` + cookie `rt` (httpOnly) | 400: code ausente, origem inválida ou callback já processado<br>409: callback em processamento<br>503: falha no provider |
|
|
67
|
+
| GET | `/oauth/:provider/callback/register` | Pública | Troca o `code` por tokens após cadastro via OAuth. | Path: `provider`<br>Query: `code` | `{ accessToken: string, refreshToken?: string }` + cookie `rt` | 400/409/503 — mesmos casos do callback de login |
|
|
68
|
+
| GET | `/oauth/:provider/callback/connect` | Autenticada | Vincula a conta do provider ao usuário autenticado. | Path: `provider`<br>Query: `code` | `{ accessToken: string, refreshToken?: string }` + cookie `rt` | 400/409/503 — mesmos casos do callback de login |
|
|
69
|
+
| DELETE | `/oauth/:provider` | Autenticada | Desvincula a conta do provider do usuário. | Path: `provider`<br>Body: `{ email: string }` | Resultado da desconexão | - |
|
|
70
|
+
|
|
54
71
|
### Módulo System (`/system`)
|
|
55
72
|
|
|
56
73
|
| Método | Path | Autenticação | Descrição | Parâmetros / Body | Resposta | Erros Comuns |
|
|
@@ -446,6 +463,9 @@ O módulo `@hed-hog/core` é o núcleo do monorepo HedHog, responsável por forn
|
|
|
446
463
|
- Requisição inválida para criação de relações duplicadas.
|
|
447
464
|
- Arquivo inválido para preview de componente.
|
|
448
465
|
- Operação de preview disponível somente em ambiente de desenvolvimento.
|
|
466
|
+
- OAuth: provider não habilitado (`oauth-<provider>-enabled` desligado) ou não suportado.
|
|
467
|
+
- OAuth: perfil de integração não configurado (`oauth-<provider>-profile-id` vazio) ou não encontrado.
|
|
468
|
+
- OAuth: código de autorização ausente, redirect URI de mobile inválida, origem do callback inválida (origin binding do hub) ou callback já processado.
|
|
449
469
|
|
|
450
470
|
- **404 Not Found**
|
|
451
471
|
|
|
@@ -458,6 +478,14 @@ O módulo `@hed-hog/core` é o núcleo do monorepo HedHog, responsável por forn
|
|
|
458
478
|
- Acesso negado a dashboards ou recursos protegidos.
|
|
459
479
|
- Tentativa de salvar preview fora do ambiente de desenvolvimento.
|
|
460
480
|
|
|
481
|
+
- **409 Conflict**
|
|
482
|
+
|
|
483
|
+
- OAuth: callback já em processamento (lock de idempotência por código).
|
|
484
|
+
|
|
485
|
+
- **503 Service Unavailable**
|
|
486
|
+
|
|
487
|
+
- OAuth: falha na comunicação com o provider (upstream).
|
|
488
|
+
|
|
461
489
|
## 7. Banco de dados (tabelas YAML)
|
|
462
490
|
|
|
463
491
|
### ai_agent
|
|
@@ -716,6 +744,29 @@ indices:
|
|
|
716
744
|
- id (PK)
|
|
717
745
|
```
|
|
718
746
|
|
|
747
|
+
### oauth_mobile_state_token
|
|
748
|
+
|
|
749
|
+
```yaml
|
|
750
|
+
finalidade: Estado assinado de uso único para o fluxo OAuth iniciado por apps nativos (mobile/desktop), vinculando o redirect URI do app ao provider e ao fluxo.
|
|
751
|
+
colunas:
|
|
752
|
+
- id: bigint, PK, auto-increment
|
|
753
|
+
- token_hash: string, único, não nulo
|
|
754
|
+
- provider: string, não nulo
|
|
755
|
+
- redirect_uri: string, não nulo (custom scheme do app nativo)
|
|
756
|
+
- flow_type: string, não nulo ('login' | 'register' | 'connect')
|
|
757
|
+
- expires_at: timestamptz, não nulo
|
|
758
|
+
- consumed_at: timestamptz, nullable (marca consumo único)
|
|
759
|
+
- created_at: timestamptz, não nulo, default NOW()
|
|
760
|
+
integridade:
|
|
761
|
+
- token_hash único
|
|
762
|
+
indices:
|
|
763
|
+
- id (PK)
|
|
764
|
+
- expires_at
|
|
765
|
+
- (provider, redirect_uri)
|
|
766
|
+
```
|
|
767
|
+
|
|
768
|
+
> Usada apenas pelo fluxo mobile (`GET /oauth/:provider/mobile/auth-url`). O hub multi-app web (`state` assinado `hhweb.<app>.<flow>.<sig>`) é stateless — a assinatura HMAC é verificada sem persistência em banco.
|
|
769
|
+
|
|
719
770
|
## 8. Regras de negócio relevantes
|
|
720
771
|
|
|
721
772
|
- Agentes AI podem ser criados, atualizados e deletados, com integração direta com APIs OpenAI e Gemini.
|
|
@@ -731,6 +782,13 @@ indices:
|
|
|
731
782
|
- Preview de componentes de dashboard é permitido somente em ambiente de desenvolvimento e aceita apenas imagens.
|
|
732
783
|
- MFA via email envia códigos para múltiplos emails associados ao usuário.
|
|
733
784
|
- WebAuthn é suportado para autenticação forte com geração e verificação de desafios.
|
|
785
|
+
- **OAuth — uma URL de callback por provider**: o fluxo (login/registro/conexão) e o app iniciador viajam assinados no `state`, nunca no path; cada provider é habilitado/desabilitado individualmente via setting `oauth-<provider>-enabled`, sem remover as credenciais configuradas (`oauth-<provider>-profile-id`, apontando para um `integration_profile`).
|
|
786
|
+
- **OAuth — hub multi-app**: o app da setting `url` (ex.: admin) recebe o callback do provider e, se o `state` indicar outro app iniciador, reencaminha o browser para a página de callback correspondente desse app, resolvendo a origem via `app-urls`. A troca do `code` por tokens só é aceita quando o header `Origin`/`Referer` da requisição bate com a origem assinada no `state` (origin binding), prevenendo interceptação do código entre apps.
|
|
787
|
+
- **OAuth — auto-vinculação por e-mail**: no login, se não existir `user_account` para o provider mas já existir um `user_identifier` de e-mail habilitado igual ao do perfil OAuth, o fluxo vira uma conexão (`connect`) automática à conta existente em vez de criar um novo usuário; só cria conta nova (`register`) quando nenhum usuário corresponde ao e-mail.
|
|
788
|
+
- **OAuth — roles no cadastro**: novos usuários registrados via OAuth recebem as roles configuradas na setting `oauth-role-assignment`.
|
|
789
|
+
- **OAuth — mobile**: apps nativos usam `/oauth/:provider/mobile/auth-url` com estado assinado e persistido em `oauth_mobile_state_token` (TTL de 10 minutos, consumo único).
|
|
790
|
+
- **OAuth — Apple (Sign in with Apple)**: sem `client_secret` estático — o `private_key` (chave EC `.p8`) assina, a cada troca de código, um JWT `client_secret` (ES256, `iss`=team ID, `sub`=Services ID, `kid`=key ID, TTL curto). Como escopos exigem `response_mode=form_post`, o callback é `POST /oauth/apple/callback` (única URL, no backend), convertido para o mesmo redirect GET dos demais providers. A identidade vem do `id_token` (JWT decodificado, sem verificação de assinatura — entregue diretamente pela Apple na troca servidor-a-servidor); o nome só é enviado por Apple na primeira autorização e não é capturado, então o nome do usuário cai para o local-part do e-mail.
|
|
791
|
+
- **OAuth — LinkedIn**: usa "Sign In with LinkedIn using OpenID Connect" (`scope=openid profile email`), com identidade obtida em uma única chamada a `GET /v2/userinfo` (claims OIDC padrão), sem o par de chamadas legado `/v2/me` + `/v2/emailAddress`.
|
|
734
792
|
|
|
735
793
|
## 9. Guia rápido de uso (exemplos)
|
|
736
794
|
|
|
@@ -808,6 +866,30 @@ Resposta:
|
|
|
808
866
|
}
|
|
809
867
|
```
|
|
810
868
|
|
|
869
|
+
### Login OAuth iniciado por outro app (hub multi-app)
|
|
870
|
+
|
|
871
|
+
Um app diferente do hub (ex.: `training`, chave `training` na setting `app-urls`) inicia o login redirecionando o browser para:
|
|
872
|
+
|
|
873
|
+
```http
|
|
874
|
+
GET /oauth/google/login?redirectApp=training
|
|
875
|
+
```
|
|
876
|
+
|
|
877
|
+
O backend responde com um `redirect` 302 para a URL de autorização do Google, contendo `state=hhweb.training.login.<assinatura>`. Após o consentimento, o Google redireciona para a única callback registrada (`${url}/callback/google`, o hub). O hub lê o `state`, resolve `training` via `app-urls` e reencaminha o browser para `${origem-do-training}/callback/google/login?code=...&state=...`. O app `training` então troca o código:
|
|
878
|
+
|
|
879
|
+
```http
|
|
880
|
+
GET /oauth/google/callback/login?code=<code>&state=hhweb.training.login.<assinatura>
|
|
881
|
+
```
|
|
882
|
+
|
|
883
|
+
Resposta:
|
|
884
|
+
|
|
885
|
+
```json
|
|
886
|
+
{
|
|
887
|
+
"accessToken": "<jwt_access_token>"
|
|
888
|
+
}
|
|
889
|
+
```
|
|
890
|
+
|
|
891
|
+
O `refreshToken` é definido no cookie httpOnly `rt` (não retorna no corpo, exceto quando a chamada informa `redirectUri`, usado pelo fluxo mobile).
|
|
892
|
+
|
|
811
893
|
### Obter informações do sistema
|
|
812
894
|
|
|
813
895
|
```http
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"integration-profile.secrets.d.ts","sourceRoot":"","sources":["../../src/integration-profile/integration-profile.secrets.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,uBAAuB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"integration-profile.secrets.d.ts","sourceRoot":"","sources":["../../src/integration-profile/integration-profile.secrets.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,uBAAuB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAqC5D,CAAC;AAEF,+DAA+D;AAC/D,wBAAgB,sBAAsB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,EAAE,CAErE"}
|
|
@@ -37,6 +37,10 @@ exports.INTEGRATION_SECRET_KEYS = {
|
|
|
37
37
|
'microsoft-oauth': ['client_secret'],
|
|
38
38
|
'facebook-oauth': ['client_secret'],
|
|
39
39
|
'microsoft-entra-id-oauth': ['client_secret'],
|
|
40
|
+
// Apple has no static client_secret — the private_key signs a short-lived JWT
|
|
41
|
+
// client_secret at request time (see AppleProvider), so private_key is the secret.
|
|
42
|
+
'apple-oauth': ['private_key'],
|
|
43
|
+
'linkedin-oauth': ['client_secret'],
|
|
40
44
|
// Pagamento
|
|
41
45
|
stripe: ['secret_key', 'webhook_secret'],
|
|
42
46
|
mercado_pago: ['access_token', 'webhook_secret'],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"integration-profile.secrets.js","sourceRoot":"","sources":["../../src/integration-profile/integration-profile.secrets.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"integration-profile.secrets.js","sourceRoot":"","sources":["../../src/integration-profile/integration-profile.secrets.ts"],"names":[],"mappings":";;;AAoDA,wDAEC;AAtDD;;;;;;;;;;;GAWG;AACU,QAAA,uBAAuB,GAA6B;IAC/D,QAAQ;IACR,IAAI,EAAE,CAAC,UAAU,CAAC;IAClB,KAAK,EAAE,CAAC,eAAe,EAAE,eAAe,CAAC;IACzC,GAAG,EAAE,CAAC,mBAAmB,CAAC;IAC1B,aAAa;IACb,eAAe,EAAE,CAAC,OAAO,CAAC;IAC1B,mBAAmB,EAAE,CAAC,cAAc,CAAC;IACrC,UAAU;IACV,EAAE,EAAE,CAAC,mBAAmB,CAAC;IACzB,GAAG,EAAE,CAAC,eAAe,CAAC;IACtB,YAAY,EAAE,CAAC,KAAK,CAAC;IACrB,eAAe,EAAE,CAAC,mBAAmB,CAAC;IACtC,KAAK;IACL,MAAM,EAAE,CAAC,SAAS,CAAC;IACnB,MAAM,EAAE,CAAC,SAAS,CAAC;IACnB,MAAM,EAAE,CAAC,SAAS,CAAC;IACnB,QAAQ;IACR,cAAc,EAAE,CAAC,eAAe,CAAC;IACjC,cAAc,EAAE,CAAC,eAAe,CAAC;IACjC,iBAAiB,EAAE,CAAC,eAAe,CAAC;IACpC,gBAAgB,EAAE,CAAC,eAAe,CAAC;IACnC,0BAA0B,EAAE,CAAC,eAAe,CAAC;IAC7C,8EAA8E;IAC9E,mFAAmF;IACnF,aAAa,EAAE,CAAC,aAAa,CAAC;IAC9B,gBAAgB,EAAE,CAAC,eAAe,CAAC;IACnC,YAAY;IACZ,MAAM,EAAE,CAAC,YAAY,EAAE,gBAAgB,CAAC;IACxC,YAAY,EAAE,CAAC,cAAc,EAAE,gBAAgB,CAAC;IAChD,UAAU;IACV,SAAS,EAAE,CAAC,YAAY,CAAC;IACzB,sBAAsB,EAAE,CAAC,YAAY,CAAC;IACtC,MAAM,EAAE,CAAC,UAAU,CAAC;IACpB,+BAA+B;IAC/B,YAAY,EAAE,CAAC,WAAW,CAAC;IAC3B,UAAU,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC;CACjC,CAAC;AAEF,+DAA+D;AAC/D,SAAgB,sBAAsB,CAAC,YAAoB;;IACzD,OAAO,MAAA,+BAAuB,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC,mCAAI,EAAE,CAAC;AACnE,CAAC"}
|
|
@@ -21,6 +21,12 @@ export declare function buildOAuthConfigFromIntegration(_providerSlug: string, c
|
|
|
21
21
|
clientId: string;
|
|
22
22
|
clientSecret: string;
|
|
23
23
|
tenantId?: string;
|
|
24
|
+
/** Apple Developer Team ID (Sign in with Apple). */
|
|
25
|
+
teamId?: string;
|
|
26
|
+
/** Key ID of the .p8 private key registered for Sign in with Apple. */
|
|
27
|
+
keyId?: string;
|
|
28
|
+
/** EC private key (PEM, .p8 contents) used to sign Apple's client_secret JWT. */
|
|
29
|
+
privateKey?: string;
|
|
24
30
|
};
|
|
25
31
|
export type DigitalOceanConfig = {
|
|
26
32
|
apiToken: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"integration-profile.utils.d.ts","sourceRoot":"","sources":["../../src/integration-profile/integration-profile.utils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAI9D,wBAAgB,8BAA8B,CAC5C,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,OAAO,GACd,GAAG,CAmCL;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,CAKtD;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAMrE;AAID;;;;;;;;GAQG;AACH,wBAAgB,iCAAiC,CAC/C,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,OAAO,GACd,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAqCxB;AAED,sDAAsD;AACtD,wBAAgB,0BAA0B,CAAC,YAAY,EAAE,MAAM,GAAG,YAAY,CAU7E;AAED,kFAAkF;AAClF,wBAAgB,uBAAuB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAMpE;AAMD,2EAA2E;AAC3E,wBAAgB,+BAA+B,CAC7C,aAAa,EAAE,MAAM,EACrB,MAAM,EAAE,OAAO,GACd;
|
|
1
|
+
{"version":3,"file":"integration-profile.utils.d.ts","sourceRoot":"","sources":["../../src/integration-profile/integration-profile.utils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAI9D,wBAAgB,8BAA8B,CAC5C,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,OAAO,GACd,GAAG,CAmCL;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,CAKtD;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAMrE;AAID;;;;;;;;GAQG;AACH,wBAAgB,iCAAiC,CAC/C,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,OAAO,GACd,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAqCxB;AAED,sDAAsD;AACtD,wBAAgB,0BAA0B,CAAC,YAAY,EAAE,MAAM,GAAG,YAAY,CAU7E;AAED,kFAAkF;AAClF,wBAAgB,uBAAuB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAMpE;AAMD,2EAA2E;AAC3E,wBAAgB,+BAA+B,CAC7C,aAAa,EAAE,MAAM,EACrB,MAAM,EAAE,OAAO,GACd;IACD,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,oDAAoD;IACpD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,uEAAuE;IACvE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,iFAAiF;IACjF,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAUA;AAID,MAAM,MAAM,kBAAkB,GAAG;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,EAAE,MAAM,CAAC;IACxB,iBAAiB,EAAE,MAAM,CAAC;CAC3B,CAAC;AAEF,2FAA2F;AAC3F,wBAAgB,sCAAsC,CACpD,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,OAAO,GACd,kBAAkB,CAcpB;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,6FAA6F;AAC7F,wBAAgB,oCAAoC,CAClD,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,OAAO,GACd,gBAAgB,CAalB;AAID,sGAAsG;AACtG,wBAAgB,4BAA4B,CAC1C,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,OAAO,GACd;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAA;CAAE,CAc3C"}
|
|
@@ -138,7 +138,7 @@ function resolveFileProviderSlug(providerSlug) {
|
|
|
138
138
|
function buildOAuthConfigFromIntegration(_providerSlug, config) {
|
|
139
139
|
var _a, _b, _c;
|
|
140
140
|
const cfg = (_a = config) !== null && _a !== void 0 ? _a : {};
|
|
141
|
-
return Object.assign({ clientId: String((_b = cfg.client_id) !== null && _b !== void 0 ? _b : ''), clientSecret: String((_c = cfg.client_secret) !== null && _c !== void 0 ? _c : '') }, (cfg.tenant_id ? { tenantId: String(cfg.tenant_id) } : {}));
|
|
141
|
+
return Object.assign(Object.assign(Object.assign(Object.assign({ clientId: String((_b = cfg.client_id) !== null && _b !== void 0 ? _b : ''), clientSecret: String((_c = cfg.client_secret) !== null && _c !== void 0 ? _c : '') }, (cfg.tenant_id ? { tenantId: String(cfg.tenant_id) } : {})), (cfg.team_id ? { teamId: String(cfg.team_id) } : {})), (cfg.key_id ? { keyId: String(cfg.key_id) } : {})), (cfg.private_key ? { privateKey: String(cfg.private_key) } : {}));
|
|
142
142
|
}
|
|
143
143
|
/** Maps an integration_profile config JSON to the DigitalOcean API credentials/targets. */
|
|
144
144
|
function buildDigitalOceanConfigFromIntegration(providerSlug, config) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"integration-profile.utils.js","sourceRoot":"","sources":["../../src/integration-profile/integration-profile.utils.ts"],"names":[],"mappings":";;AAKA,wEAsCC;AAED,wCAKC;AAED,8CAMC;AAaD,8EAwCC;AAGD,gEAUC;AAGD,0DAMC;AAOD,
|
|
1
|
+
{"version":3,"file":"integration-profile.utils.js","sourceRoot":"","sources":["../../src/integration-profile/integration-profile.utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,12 +7,20 @@ export declare class OAuthController {
|
|
|
7
7
|
constructor(service: OAuthService, settingService: SettingService);
|
|
8
8
|
private logOAuthRequest;
|
|
9
9
|
githubCallback(code: string, state: string, res: any): Promise<any>;
|
|
10
|
-
|
|
10
|
+
/**
|
|
11
|
+
* Apple mandates `response_mode=form_post` whenever `scope` is requested, so it
|
|
12
|
+
* POSTs `code`/`state` to the single registered "Return URL" instead of a GET
|
|
13
|
+
* redirect. This bounces it back to a GET, mirroring the GitHub callback above,
|
|
14
|
+
* so the rest of the pipeline (hub forwarding, code exchange) stays identical
|
|
15
|
+
* across every provider.
|
|
16
|
+
*/
|
|
17
|
+
appleCallback(code: string, state: string, res: any): Promise<any>;
|
|
18
|
+
login(origin: string, referer: string, host: string, provider: string, redirectApp: string, res: any): Promise<any>;
|
|
11
19
|
mobileAuthUrl(provider: string, redirectUri: string): Promise<{
|
|
12
20
|
authUrl: string;
|
|
13
21
|
}>;
|
|
14
|
-
register(provider: string, res: any): Promise<any>;
|
|
15
|
-
connect(provider: string, res: any): Promise<any>;
|
|
22
|
+
register(provider: string, redirectApp: string, res: any): Promise<any>;
|
|
23
|
+
connect(provider: string, redirectApp: string, res: any): Promise<any>;
|
|
16
24
|
callbackLogin(locale: string, ipAddress: string, userAgent: string, origin: string, referer: string, host: string, forwardedHost: string, provider: string, code: string, state: string, redirectUri: string, res: any): Promise<{
|
|
17
25
|
accessToken: string;
|
|
18
26
|
}>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oauth.controller.d.ts","sourceRoot":"","sources":["../../src/oauth/oauth.controller.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"oauth.controller.d.ts","sourceRoot":"","sources":["../../src/oauth/oauth.controller.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,qBACa,eAAe;IAGd,OAAO,CAAC,QAAQ,CAAC,OAAO;IAAgB,OAAO,CAAC,QAAQ,CAAC,cAAc;IAFnF,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAoC;gBAE9B,OAAO,EAAE,YAAY,EAAmB,cAAc,EAAE,cAAc;IAEnG,OAAO,CAAC,eAAe;IAkCjB,cAAc,CACH,IAAI,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,EACtB,GAAG,KAAA;IAaZ;;;;;;OAMG;IAGG,aAAa,CACH,IAAI,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,EACrB,GAAG,KAAA;IAaN,KAAK,CACU,MAAM,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,EAClB,IAAI,EAAE,MAAM,EACV,QAAQ,EAAE,MAAM,EACb,WAAW,EAAE,MAAM,EAClC,GAAG,KAAA;IAeN,aAAa,CACE,QAAQ,EAAE,MAAM,EACb,WAAW,EAAE,MAAM;;;IAarC,QAAQ,CACO,QAAQ,EAAE,MAAM,EACb,WAAW,EAAE,MAAM,EAClC,GAAG,KAAA;IAaN,OAAO,CACQ,QAAQ,EAAE,MAAM,EACb,WAAW,EAAE,MAAM,EAClC,GAAG,KAAA;IAaN,aAAa,CACP,MAAM,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,EACA,SAAS,EAAE,MAAM,EACrB,MAAM,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,EAClB,IAAI,EAAE,MAAM,EACA,aAAa,EAAE,MAAM,EAC/B,QAAQ,EAAE,MAAM,EACpB,IAAI,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,EACP,WAAW,EAAE,MAAM,EACb,GAAG,KAAA;;;IA+B3B,gBAAgB,CACV,MAAM,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,EACA,SAAS,EAAE,MAAM,EACrB,QAAQ,EAAE,MAAM,EACpB,IAAI,EAAE,MAAM,EACC,GAAG,KAAA;;;IAO3B,eAAe,CACT,MAAM,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,EACA,SAAS,EAAE,MAAM,EAChC,EAAE,EAAE,EAAE;;KAAA,EACK,QAAQ,EAAE,MAAM,EACpB,IAAI,EAAE,MAAM,EACC,GAAG,KAAA;;;IAO3B,UAAU,CACJ,MAAM,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,EACA,SAAS,EAAE,MAAM,EACrB,QAAQ,EAAE,MAAM,EACpB,KAAK,EAAE,MAAM,EACA,GAAG,KAAA;;;CAIlC"}
|
|
@@ -35,26 +35,49 @@ let OAuthController = OAuthController_1 = class OAuthController {
|
|
|
35
35
|
this.logger.log(`OAuth ${action}: provider=${provider} locale=${locale !== null && locale !== void 0 ? locale : 'n/a'} origin=${origin !== null && origin !== void 0 ? origin : 'n/a'} referer=${referer !== null && referer !== void 0 ? referer : 'n/a'} host=${host !== null && host !== void 0 ? host : 'n/a'} ip=${ipAddress !== null && ipAddress !== void 0 ? ipAddress : 'n/a'} hasCode=${code ? 'yes' : 'no'} codeLength=${(_a = code === null || code === void 0 ? void 0 : code.length) !== null && _a !== void 0 ? _a : 0} userAgent="${summarizedUserAgent}"`);
|
|
36
36
|
}
|
|
37
37
|
async githubCallback(code, state, res) {
|
|
38
|
-
|
|
38
|
+
var _a;
|
|
39
|
+
const forward = await this.service.resolveWebForward(state);
|
|
40
|
+
const type = (_a = forward === null || forward === void 0 ? void 0 : forward.flow) !== null && _a !== void 0 ? _a : (state || 'login');
|
|
41
|
+
const { url: frontendURL = '' } = await this.settingService.getSettingValues(['url']);
|
|
42
|
+
const base = (forward === null || forward === void 0 ? void 0 : forward.origin) || frontendURL;
|
|
43
|
+
// Preserve the signed state on web-hub flows so the initiating app's callback
|
|
44
|
+
// can pass it back for origin binding at the code exchange.
|
|
45
|
+
const stateParam = forward ? `&state=${encodeURIComponent(state)}` : '';
|
|
46
|
+
const redirectURL = `${base}/callback/github/${type}?code=${encodeURIComponent(code)}${stateParam}`;
|
|
47
|
+
return res.redirect(redirectURL);
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Apple mandates `response_mode=form_post` whenever `scope` is requested, so it
|
|
51
|
+
* POSTs `code`/`state` to the single registered "Return URL" instead of a GET
|
|
52
|
+
* redirect. This bounces it back to a GET, mirroring the GitHub callback above,
|
|
53
|
+
* so the rest of the pipeline (hub forwarding, code exchange) stays identical
|
|
54
|
+
* across every provider.
|
|
55
|
+
*/
|
|
56
|
+
async appleCallback(code, state, res) {
|
|
57
|
+
var _a;
|
|
58
|
+
const forward = await this.service.resolveWebForward(state);
|
|
59
|
+
const type = (_a = forward === null || forward === void 0 ? void 0 : forward.flow) !== null && _a !== void 0 ? _a : (state || 'login');
|
|
39
60
|
const { url: frontendURL = '' } = await this.settingService.getSettingValues(['url']);
|
|
40
|
-
const
|
|
61
|
+
const base = (forward === null || forward === void 0 ? void 0 : forward.origin) || frontendURL;
|
|
62
|
+
const stateParam = forward ? `&state=${encodeURIComponent(state)}` : '';
|
|
63
|
+
const redirectURL = `${base}/callback/apple/${type}?code=${encodeURIComponent(code)}${stateParam}`;
|
|
41
64
|
return res.redirect(redirectURL);
|
|
42
65
|
}
|
|
43
|
-
async login(origin, referer, host, provider, res) {
|
|
66
|
+
async login(origin, referer, host, provider, redirectApp, res) {
|
|
44
67
|
this.logOAuthRequest('login-init', provider, { origin, referer, host });
|
|
45
|
-
const url = await this.service.
|
|
68
|
+
const url = await this.service.getWebAuthUrl(provider, 'login', redirectApp);
|
|
46
69
|
return res.redirect(url);
|
|
47
70
|
}
|
|
48
71
|
async mobileAuthUrl(provider, redirectUri) {
|
|
49
72
|
const authUrl = await this.service.getMobileAuthUrl(provider, redirectUri);
|
|
50
73
|
return { authUrl };
|
|
51
74
|
}
|
|
52
|
-
async register(provider, res) {
|
|
53
|
-
const url = await this.service.
|
|
75
|
+
async register(provider, redirectApp, res) {
|
|
76
|
+
const url = await this.service.getWebAuthUrl(provider, 'register', redirectApp);
|
|
54
77
|
return res.redirect(url);
|
|
55
78
|
}
|
|
56
|
-
async connect(provider, res) {
|
|
57
|
-
const url = await this.service.
|
|
79
|
+
async connect(provider, redirectApp, res) {
|
|
80
|
+
const url = await this.service.getWebAuthUrl(provider, 'connect', redirectApp);
|
|
58
81
|
return res.redirect(url);
|
|
59
82
|
}
|
|
60
83
|
async callbackLogin(locale, ipAddress, userAgent, origin, referer, host, forwardedHost, provider, code, state, redirectUri, res) {
|
|
@@ -78,6 +101,8 @@ let OAuthController = OAuthController_1 = class OAuthController {
|
|
|
78
101
|
type: 'login',
|
|
79
102
|
redirectUri,
|
|
80
103
|
includeRefreshTokenInBody: Boolean(redirectUri),
|
|
104
|
+
requestOrigin: origin,
|
|
105
|
+
requestReferer: referer,
|
|
81
106
|
});
|
|
82
107
|
}
|
|
83
108
|
async callbackRegister(locale, ipAddress, userAgent, provider, code, res) {
|
|
@@ -101,6 +126,16 @@ __decorate([
|
|
|
101
126
|
__metadata("design:paramtypes", [String, String, Object]),
|
|
102
127
|
__metadata("design:returntype", Promise)
|
|
103
128
|
], OAuthController.prototype, "githubCallback", null);
|
|
129
|
+
__decorate([
|
|
130
|
+
(0, api_1.Public)(),
|
|
131
|
+
(0, common_1.Post)('apple/callback'),
|
|
132
|
+
__param(0, (0, common_1.Body)('code')),
|
|
133
|
+
__param(1, (0, common_1.Body)('state')),
|
|
134
|
+
__param(2, (0, common_1.Res)()),
|
|
135
|
+
__metadata("design:type", Function),
|
|
136
|
+
__metadata("design:paramtypes", [String, String, Object]),
|
|
137
|
+
__metadata("design:returntype", Promise)
|
|
138
|
+
], OAuthController.prototype, "appleCallback", null);
|
|
104
139
|
__decorate([
|
|
105
140
|
(0, api_1.Public)(),
|
|
106
141
|
(0, common_1.Get)(':provider/login'),
|
|
@@ -108,9 +143,10 @@ __decorate([
|
|
|
108
143
|
__param(1, (0, common_1.Headers)('referer')),
|
|
109
144
|
__param(2, (0, common_1.Headers)('host')),
|
|
110
145
|
__param(3, (0, common_1.Param)('provider')),
|
|
111
|
-
__param(4, (0, common_1.
|
|
146
|
+
__param(4, (0, common_1.Query)('redirectApp')),
|
|
147
|
+
__param(5, (0, common_1.Res)()),
|
|
112
148
|
__metadata("design:type", Function),
|
|
113
|
-
__metadata("design:paramtypes", [String, String, String, String, Object]),
|
|
149
|
+
__metadata("design:paramtypes", [String, String, String, String, String, Object]),
|
|
114
150
|
__metadata("design:returntype", Promise)
|
|
115
151
|
], OAuthController.prototype, "login", null);
|
|
116
152
|
__decorate([
|
|
@@ -126,18 +162,20 @@ __decorate([
|
|
|
126
162
|
(0, api_1.Public)(),
|
|
127
163
|
(0, common_1.Get)(':provider/register'),
|
|
128
164
|
__param(0, (0, common_1.Param)('provider')),
|
|
129
|
-
__param(1, (0, common_1.
|
|
165
|
+
__param(1, (0, common_1.Query)('redirectApp')),
|
|
166
|
+
__param(2, (0, common_1.Res)()),
|
|
130
167
|
__metadata("design:type", Function),
|
|
131
|
-
__metadata("design:paramtypes", [String, Object]),
|
|
168
|
+
__metadata("design:paramtypes", [String, String, Object]),
|
|
132
169
|
__metadata("design:returntype", Promise)
|
|
133
170
|
], OAuthController.prototype, "register", null);
|
|
134
171
|
__decorate([
|
|
135
172
|
(0, api_1.Public)(),
|
|
136
173
|
(0, common_1.Get)(':provider/connect'),
|
|
137
174
|
__param(0, (0, common_1.Param)('provider')),
|
|
138
|
-
__param(1, (0, common_1.
|
|
175
|
+
__param(1, (0, common_1.Query)('redirectApp')),
|
|
176
|
+
__param(2, (0, common_1.Res)()),
|
|
139
177
|
__metadata("design:type", Function),
|
|
140
|
-
__metadata("design:paramtypes", [String, Object]),
|
|
178
|
+
__metadata("design:paramtypes", [String, String, Object]),
|
|
141
179
|
__metadata("design:returntype", Promise)
|
|
142
180
|
], OAuthController.prototype, "connect", null);
|
|
143
181
|
__decorate([
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oauth.controller.js","sourceRoot":"","sources":["../../src/oauth/oauth.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AACA,sCAA4C;AAC5C,oDAA6C;AAE7C,
|
|
1
|
+
{"version":3,"file":"oauth.controller.js","sourceRoot":"","sources":["../../src/oauth/oauth.controller.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oauth.module.d.ts","sourceRoot":"","sources":["../../src/oauth/oauth.module.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"oauth.module.d.ts","sourceRoot":"","sources":["../../src/oauth/oauth.module.ts"],"names":[],"mappings":"AAsBA,qBA2Ba,WAAW;CAAG"}
|
|
@@ -21,9 +21,11 @@ const user_module_1 = require("../user/user.module");
|
|
|
21
21
|
const oauth_callback_coordinator_service_1 = require("./oauth-callback-coordinator.service");
|
|
22
22
|
const oauth_controller_1 = require("./oauth.controller");
|
|
23
23
|
const oauth_service_1 = require("./oauth.service");
|
|
24
|
+
const apple_provider_1 = require("./providers/apple.provider");
|
|
24
25
|
const facebook_provider_1 = require("./providers/facebook.provider");
|
|
25
26
|
const github_provider_1 = require("./providers/github.provider");
|
|
26
27
|
const google_provider_1 = require("./providers/google.provider");
|
|
28
|
+
const linkedin_provider_1 = require("./providers/linkedin.provider");
|
|
27
29
|
const microsoft_entra_id_provider_1 = require("./providers/microsoft-entra-id.provider");
|
|
28
30
|
const microsoft_provider_1 = require("./providers/microsoft.provider");
|
|
29
31
|
let OAuthModule = class OAuthModule {
|
|
@@ -52,6 +54,8 @@ exports.OAuthModule = OAuthModule = __decorate([
|
|
|
52
54
|
github_provider_1.GithubProvider,
|
|
53
55
|
microsoft_provider_1.MicrosoftProvider,
|
|
54
56
|
microsoft_entra_id_provider_1.MicrosoftEntraIdProvider,
|
|
57
|
+
apple_provider_1.AppleProvider,
|
|
58
|
+
linkedin_provider_1.LinkedinProvider,
|
|
55
59
|
],
|
|
56
60
|
exports: [oauth_service_1.OAuthService],
|
|
57
61
|
})
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oauth.module.js","sourceRoot":"","sources":["../../src/oauth/oauth.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,gDAAiE;AACjE,oDAAmD;AACnD,yCAA2C;AAC3C,2CAAoD;AACpD,2CAA8C;AAC9C,qDAAiD;AACjD,qDAAiD;AACjD,qDAAiD;AACjD,iEAA6D;AAC7D,wDAAoD;AACpD,qDAAiD;AACjD,6FAAuF;AACvF,yDAAqD;AACrD,mDAA+C;AAC/C,qEAAiE;AACjE,iEAA6D;AAC7D,iEAA6D;AAC7D,yFAAmF;AACnF,uEAAmE;
|
|
1
|
+
{"version":3,"file":"oauth.module.js","sourceRoot":"","sources":["../../src/oauth/oauth.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,gDAAiE;AACjE,oDAAmD;AACnD,yCAA2C;AAC3C,2CAAoD;AACpD,2CAA8C;AAC9C,qDAAiD;AACjD,qDAAiD;AACjD,qDAAiD;AACjD,iEAA6D;AAC7D,wDAAoD;AACpD,qDAAiD;AACjD,6FAAuF;AACvF,yDAAqD;AACrD,mDAA+C;AAC/C,+DAA2D;AAC3D,qEAAiE;AACjE,iEAA6D;AAC7D,iEAA6D;AAC7D,qEAAiE;AACjE,yFAAmF;AACnF,uEAAmE;AA6B5D,IAAM,WAAW,GAAjB,MAAM,WAAW;CAAG,CAAA;AAAd,kCAAW;sBAAX,WAAW;IA3BvB,IAAA,eAAM,EAAC;QACN,OAAO,EAAE;YACP,IAAA,mBAAU,EAAC,GAAG,EAAE,CAAC,kBAAU,CAAC;YAC5B,IAAA,mBAAU,EAAC,GAAG,EAAE,CAAC,yBAAY,CAAC;YAC9B,IAAA,mBAAU,EAAC,GAAG,EAAE,CAAC,qBAAc,CAAC;YAChC,IAAA,mBAAU,EAAC,GAAG,EAAE,CAAC,qBAAY,CAAC;YAC9B,IAAA,mBAAU,EAAC,GAAG,EAAE,CAAC,wBAAU,CAAC;YAC5B,IAAA,mBAAU,EAAC,GAAG,EAAE,CAAC,wBAAU,CAAC;YAC5B,IAAA,mBAAU,EAAC,GAAG,EAAE,CAAC,gCAAc,CAAC;YAChC,IAAA,mBAAU,EAAC,GAAG,EAAE,CAAC,0BAAW,CAAC;YAC7B,IAAA,mBAAU,EAAC,GAAG,EAAE,CAAC,wBAAU,CAAC;YAC5B,IAAA,mBAAU,EAAC,GAAG,EAAE,CAAC,wBAAU,CAAC;SAC7B;QACD,WAAW,EAAE,CAAC,kCAAe,CAAC;QAC9B,SAAS,EAAE;YACT,oEAA+B;YAC/B,4BAAY;YACZ,gCAAc;YACd,oCAAgB;YAChB,gCAAc;YACd,sCAAiB;YACjB,sDAAwB;YACxB,8BAAa;YACb,oCAAgB;SACjB;QACD,OAAO,EAAE,CAAC,4BAAY,CAAC;KACxB,CAAC;GACW,WAAW,CAAG"}
|
|
@@ -7,9 +7,11 @@ import { SettingService } from '../setting/setting.service';
|
|
|
7
7
|
import { TokenService } from '../token/token.service';
|
|
8
8
|
import { UserService } from '../user/user.service';
|
|
9
9
|
import { OAuthCallbackCoordinatorService } from './oauth-callback-coordinator.service';
|
|
10
|
+
import { AppleProvider } from './providers/apple.provider';
|
|
10
11
|
import { FacebookProvider } from './providers/facebook.provider';
|
|
11
12
|
import { GithubProvider } from './providers/github.provider';
|
|
12
13
|
import { GoogleProvider } from './providers/google.provider';
|
|
14
|
+
import { LinkedinProvider } from './providers/linkedin.provider';
|
|
13
15
|
import { MicrosoftEntraIdProvider } from './providers/microsoft-entra-id.provider';
|
|
14
16
|
import { MicrosoftProvider } from './providers/microsoft.provider';
|
|
15
17
|
type HandleCallbackProps = {
|
|
@@ -25,6 +27,10 @@ type HandleCallbackProps = {
|
|
|
25
27
|
redirectUri?: string;
|
|
26
28
|
state?: string;
|
|
27
29
|
includeRefreshTokenInBody?: boolean;
|
|
30
|
+
/** Origin header of the request that hit the callback (used to bind web hub flows). */
|
|
31
|
+
requestOrigin?: string;
|
|
32
|
+
/** Referer header, used as a fallback when the Origin header is absent. */
|
|
33
|
+
requestReferer?: string;
|
|
28
34
|
};
|
|
29
35
|
export declare class OAuthService {
|
|
30
36
|
private readonly callbackCoordinator;
|
|
@@ -39,10 +45,40 @@ export declare class OAuthService {
|
|
|
39
45
|
private readonly logger;
|
|
40
46
|
private providers;
|
|
41
47
|
private readonly mobileOAuthStateTtlMs;
|
|
42
|
-
|
|
48
|
+
/** Sentinel app in the web state meaning "the OAuth hub handles this locally". */
|
|
49
|
+
private static readonly WEB_STATE_SELF_APP;
|
|
50
|
+
constructor(google: GoogleProvider, facebook: FacebookProvider, microsoft: MicrosoftProvider, github: GithubProvider, microsoftEntraId: MicrosoftEntraIdProvider, apple: AppleProvider, linkedin: LinkedinProvider, callbackCoordinator: OAuthCallbackCoordinatorService, auth: AuthService, file: FileService, mail: MailService, security: SecurityService, prisma: PrismaService, token: TokenService, setting: SettingService, user: UserService);
|
|
43
51
|
getAuthUrl(provider: user_account_provider_52222e2ecb_enum, callbackPath: string): Promise<string>;
|
|
44
52
|
getMobileAuthUrl(provider: user_account_provider_52222e2ecb_enum, redirectUri: string): Promise<string>;
|
|
45
|
-
|
|
53
|
+
/**
|
|
54
|
+
* Builds a provider auth URL for a browser (web) flow that may be initiated by an
|
|
55
|
+
* app other than the OAuth hub (the app configured in the `url` setting).
|
|
56
|
+
*
|
|
57
|
+
* When `redirectApp` resolves to a known origin (via the `app-urls` setting), a
|
|
58
|
+
* signed `state` (`hhweb.<app>.<flow>.<sig>`) is attached so the hub can forward
|
|
59
|
+
* the callback back to the initiating app and the backend can bind the code
|
|
60
|
+
* exchange to that origin. Without a resolvable `redirectApp`, the URL is returned
|
|
61
|
+
* unchanged — identical to the legacy hub-only behavior.
|
|
62
|
+
*/
|
|
63
|
+
getWebAuthUrl(provider: user_account_provider_52222e2ecb_enum, flow: 'login' | 'register' | 'connect', redirectApp?: string): Promise<string>;
|
|
64
|
+
/**
|
|
65
|
+
* Resolves how the GitHub backend bounce should forward the browser. GitHub only
|
|
66
|
+
* supports a single registered callback URL (the API), so the provider always
|
|
67
|
+
* lands on the backend; this maps the signed web state to the initiating app's
|
|
68
|
+
* origin. Returns null for legacy hub-only flows (state carries just the flow).
|
|
69
|
+
*/
|
|
70
|
+
resolveWebForward(state?: string): Promise<{
|
|
71
|
+
origin: string | null;
|
|
72
|
+
flow: 'login' | 'register' | 'connect';
|
|
73
|
+
} | null>;
|
|
74
|
+
private sanitizeAppKey;
|
|
75
|
+
private buildWebState;
|
|
76
|
+
/** Parses and verifies a signed web-hub state. Returns null when invalid. */
|
|
77
|
+
private parseWebState;
|
|
78
|
+
/** Resolves an app key to its configured base origin via the `app-urls` setting. */
|
|
79
|
+
private resolveAppOrigin;
|
|
80
|
+
private normalizeOrigin;
|
|
81
|
+
handleCallback({ res, locale, ipAddress, userAgent, provider, code, type, userId, email, redirectUri, state, includeRefreshTokenInBody, requestOrigin, requestReferer, }: HandleCallbackProps): Promise<{
|
|
46
82
|
accessToken: string;
|
|
47
83
|
}>;
|
|
48
84
|
private getProvider;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oauth.service.d.ts","sourceRoot":"","sources":["../../src/oauth/oauth.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAU,aAAa,EAAE,qCAAqC,EAAE,MAAM,qBAAqB,CAAC;AAWnG,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAEtD,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAEnD,OAAO,EAAE,+BAA+B,EAAE,MAAM,sCAAsC,CAAC;AAMvF,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,wBAAwB,EAAE,MAAM,yCAAyC,CAAC;AACnF,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAEnE,KAAK,mBAAmB,GAAG;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,QAAQ,CAAC;IACd,QAAQ,EAAE,qCAAqC,CAAC;IAChD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,OAAO,GAAG,UAAU,GAAG,SAAS,GAAG,YAAY,CAAC;IACtD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,yBAAyB,CAAC,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"oauth.service.d.ts","sourceRoot":"","sources":["../../src/oauth/oauth.service.ts"],"names":[],"mappings":"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"}
|