Frontend Multi-Projeto (fuji-loja)
O frontend da Loja (fuji-loja) é um workspace Angular multi-projeto: três aplicações deployáveis independentes mais uma biblioteca compartilhada.
Projetos
| Projeto | Tipo | Serve em | Build output |
|---|---|---|---|
|
App |
|
|
|
App |
|
|
|
App |
|
|
|
Lib (sem build) |
via |
— |
Código compartilhado entre as três aplicações (modelos, serviços, componentes) vive em shared e é importado como @fuji-loja/shared.
Autenticação entre apps
Como são três aplicações separadas, o estado de papel do usuário é persistido em sessionStorage (chave fuji-role) para sobreviver à navegação entre elas. A navegação entre apps usa window.location.href (recarga completa), não o Angular Router — cada app é um bundle independente.
O acesso é protegido por um guard de entrada (executado na inicialização das apps vitrine/store), desabilitado em modo de desenvolvimento.
Autenticação com o backend (BFF)
O frontend consome a Loja através do mesmo BFF (oauth2-proxy) usado pelas demais SPAs do FUJI — ver Gateway / BFF (Token Handler Pattern). Endpoints relevantes: /oauth2/start (login), /oauth2/sign_out (logout) e /userinfo (dados do usuário autenticado).
As rotas /login e /logout do oauth2-proxy não fazem login/logout — são rotas protegidas genéricas que redirecionam ao Keycloak, reautenticando via SSO. Usar sempre /oauth2/start e /oauth2/sign_out.
|