From 3772a75a8e20145bb2c9f32e5049e74c28e7a67b Mon Sep 17 00:00:00 2001 From: deploy Date: Wed, 7 Oct 2026 21:01:45 +0000 Subject: [PATCH] feat(atm-escolinha): tela de login Athletic Map --- tenants/escolinha/36-kc-theme.yaml | 82 ++++++++++++++++++++++++++++-- 1 file changed, 78 insertions(+), 4 deletions(-) diff --git a/tenants/escolinha/36-kc-theme.yaml b/tenants/escolinha/36-kc-theme.yaml index b042ca1..1572983 100644 --- a/tenants/escolinha/36-kc-theme.yaml +++ b/tenants/escolinha/36-kc-theme.yaml @@ -1,5 +1,5 @@ # GERADO por scripts/tema_login_escolinha.py — nao edite na mao. -# Fonte: keycloak-theme/escolinha/{login,login-update-password,estilo}.ftl +# Fonte: keycloak-theme/escolinha/{login,login-update-password,estilo,template}.ftl apiVersion: v1 kind: ConfigMap metadata: @@ -26,6 +26,9 @@ data: Nao edite o YAML na mao: ele e derivado deste arquivo. --> + <#-- Passkeys (Keycloak 26.4+): o `passkeys.ftl` vem do tema BASE. Sem a politica + "Passkeys" ligada no realm, a macro nao desenha nada. --> + <#import "passkeys.ftl" as passkeys> @@ -36,6 +39,25 @@ data: <#-- Ver estilo.ftl: o
@@ -64,8 +86,27 @@ data:
-

Bem-vindo de volta!

-

Acesse sua conta para continuar

+ <#-- O realm `clientes` e o do PAINEL DO COMPRADOR, e a conta dele e NOVA: + separada da conta da escolinha, e sem senha ate ele usar o convite. + "Bem-vindo de volta" fazia o comprador digitar a senha da escolinha e + levar "senha invalida" sem entender por que (2026-09-25). --> + <#if (realm.name!"") == "clientes"> +

Painel da sua conta

+

Aqui voce ve tudo o que contratou. Esta conta e separada + da conta da sua escolinha.

+
+ Primeiro acesso? Use o link que enviamos para o e-mail do + pagamento. Nao chegou? Clique em “Esqueceu sua senha?”. +
+ <#-- O realm `athleticmap` e o da PLATAFORMA (07/10/2026): o Painel do dono e o sistema + interno da empresa. So o dono tem conta aqui, com 2FA. --> + <#elseif (realm.name!"") == "athleticmap"> +

Painel do dono

+

Área restrita à administração da Athletic Map

+ <#else> +

Bem-vindo de volta!

+

Acesse sua conta para continuar

+ <#if message?? && message.summary?has_content>
${message.summary!''}
@@ -80,7 +121,7 @@ data:
@@ -140,6 +181,10 @@ data: + <#-- FORA do form de senha: a macro traz os proprios forms (o do + WebAuthn e o de escolher credencial). `webauthn` no autocomplete do + e-mail e o que faz o navegador sugerir a passkey no proprio campo. --> + <@passkeys.conditionalUIData />

@@ -510,6 +555,31 @@ data: na base da foto. */ .borda{display:none} .marca{margin-bottom:26px} + /* Sem isto a sobra da altura (min-height da tela) e repartida entre as + duas linhas, e a foto crescia nas telas curtas (definir senha, passkey). */ + .stage{grid-template-rows:auto 1fr} + } + + /* ---------- Celular (folha do login do app, 360–430 px) ---------- + O app abre o login numa folha (ASWebAuthenticationSession / Custom Tabs), + mais baixa que a tela. Aqui a foto vira uma faixa, o logo encolhe e o + formulario sobe — o botao "Entrar" fica a vista sem rolar. */ + @media (max-width:480px){ + /* dvh: no celular o 100vh conta a barra do navegador e sobra rolagem. */ + .stage{min-height:100dvh} + .foto{min-height:112px;height:112px} + .painel{padding:22px 18px calc(28px + env(safe-area-inset-bottom,0px))} + .marca{width:58%;max-width:230px;margin-bottom:18px} + h1{font-size:26px} + .sub{font-size:14px;margin-top:6px} + form{margin-top:20px;gap:16px} + /* 16px no campo: abaixo disso o Safari do iPhone da zoom ao focar e a + tela fica deslocada para o lado. */ + .caixa input{height:50px;font-size:16px} + .conteudo input[type=text],.conteudo input[type=email],.conteudo input[type=password]{font-size:16px} + .opcoes{flex-wrap:wrap;row-gap:8px} + .botao{height:52px} + .rodape{margin-top:24px} } @@ -564,6 +634,10 @@ data: ${msg("loginTitle",(realm.displayName!''))} <#include "estilo.ftl"> + <#-- O mesmo importmap do template.ftl de fabrica: as paginas de passkey do tema + base (cadastrar passkey, escolher credencial) importam `rfc4648` pelo nome. + Ver o comentario no login.ftl. --> +