Class XadmViewModel

java.lang.Object
br.com.xadm.comum.seguranca.XadmViewModel
All Implemented Interfaces:
io.micronaut.views.model.ViewModelProcessor<Map<String,Object>, io.micronaut.http.HttpRequest<?>>

@Singleton @Requires(property="xadm.views.app-nome") public class XadmViewModel extends Object implements io.micronaut.views.model.ViewModelProcessor<Map<String,Object>, io.micronaut.http.HttpRequest<?>>
ViewModelProcessor de referência da casa: injeta em TODO model de view server-render os globais que o kit/layout.jte (decisão 0025) espera — identidade da casa (appNome/clienteXadm), sessão (currentUserEmail/currentUserName/ csrfToken, dos atributos populados pelo SessionAuthenticationFetcher), authEnabled (do AuthSettings, controla o bloco "Sair" do navbar) e appVersao (de VersaoInfo.versaoAtual() — o kit/headerRight.jte já renderiza a chave sob @if(appVersao != null), e a lib já tem o valor; app que escreve um processor local para isso está buscando o que a lib já sabe).

Mora aqui (não no xadm-comum-web) porque lê AuthSupport/AuthSettings — e seguranca já depende de comum-web, então o inverso seria circular.

Opt-in (item 124 — bean de lib em recurso global cede por default, ativa por presença): só entra no contexto se o app define xadm.views.app-nome. O app que adota apaga o seu GlobalViewModel local e passa a configurar por property. Gates de UI específicos (ex.: crudWriteAllowed/showInternalMenus) NÃO entram aqui — são política do app.

Tolera model imutável (item 115): controller que devolve Map.of(...) (ex.: a tela /admin/mensageria da xadm-mensageria) faria o put estourar UnsupportedOperationException; aqui copia para um map mutável e setModel, em vez de 500.

  • Constructor Details

    • XadmViewModel

      @Inject public XadmViewModel(@Value("${xadm.views.app-nome}") String appNome, @Value("${cliente:}") @Nullable @Nullable String clienteXadm, AuthSettings authSettings)
  • Method Details

    • process

      public void process(@NonNull @NonNull io.micronaut.http.HttpRequest<?> request, @NonNull @NonNull io.micronaut.views.ModelAndView<Map<String,Object>> modelAndView)
      Specified by:
      process in interface io.micronaut.views.model.ViewModelProcessor<Map<String,Object>, io.micronaut.http.HttpRequest<?>>