Cat UI
GitHub
  • Comece por aqui
    • 1. Instalação
      • Icones
      • Bootstrap
    • 2. Aplicando Tema
    • 3. Estrutura da aplicação
    • 4. Segurança
      • OpenID (Opcional)
      • Claims (Optional)
  • Menu
    • Sidenav
    • Toolbar
    • Dropdown
    • Tab
  • Exibição de Dados
    • Datatable
    • Componentes Dinâmicos
    • Exportação e Download de Dados
      • .csv
      • .xlsx
      • Visualizar .pdf
      • Download base64
    • Chip
  • Formulário
    • Formulário Dinâmico
    • Lista de Itens
    • Campos Personalizados
    • Stepper
    • Expansive Panel
    • Filtro Sobre Demanda
  • Janelas e Alertas
    • Dialog
    • Confirm
    • Alert
    • Snackbar
    • SideWindow
    • Notifications
    • Tooltip
  • Loaders
    • Spinner
    • Loader Page
  • Botões
    • Button
  • Abstrações
    • ServiceBase
    • ComponentBase
    • CRUDComponentBase
    • FormBase
  • Guias
    • Criando uma Aplicação de CRUD
      • Criando Projeto
      • Estrutura
      • Tela de Login
      • Menu
      • Tela de Adoção
      • Serviço HTTP
      • Lista de Pets
      • Formulário de Cadastro e Edição
      • Excluir Pet
      • Conclusão
Powered by GitBook
On this page
  • Uso
  • Politicas

Was this helpful?

  1. Comece por aqui

4. Segurança

Previous3. Estrutura da aplicaçãoNextOpenID (Opcional)

Last updated 2 years ago

Was this helpful?

O Cat UI possui um Guardião próprio, onde já integra com o fluxo de autenticação também nativo, seja utilizando JWT ou .

Uso

import { NgModule } from '@angular/core';
import { RouterModule, Routes } from '@angular/router';
import { CatAuthGuard } from '@catrx/ui';
import { PageExampleComponent } from './page-example.component';

const routes: Routes = [
  { path: '', component: PageExampleComponent, canActivate: [CatAuthGuard] },
];

@NgModule({
  imports: [RouterModule.forChild(routes)],
  exports: [RouterModule],
})
export class PageFormRoutingModule {}

Politicas

Visando rotas mais profundas e que precisam também ter a permissão validada (como rotas de edição de dados), foi criado o sistema de políticas que já está acoplado ao Guardião.

Sempre que quiser proteger uma rota, utilize o Guardião, porém, o mesmo irá por padrão validar apenas se o usuário encontra-se autenticado e se a rota acessada encontra-se liberada no menu, caso contrário, ele irá validar nas políticas (se a mesma possui permissão), caso não tenha políticas configuradas ou a rota não esteja liberada, a mesma será recusada.

Uso das políticas

O local de implantação recomendado é após a autenticação, junto do fornecimento das configurações menu.

app.service.ts
import { Injectable } from '@angular/core';
import { AppConfigMenu, AppNotification, CatAppDecodedToken, CatRoutePolice } from '@catrx/ui';
import { Observable } from 'rxjs/internal/Observable';

@Injectable({ providedIn: 'any' })
export class AppService {
  ...
  
  public getMenu(decodedToken: CatAppDecodedToken) {
    this.buildPolices(decodedToken);
    ...
  }
  
  private buildPolices(decodedToken: CatAppDecodedToken) {
    CatRoutePolice.police = (path: string) => {
      return (
        decodedToken &&
        !!['/components/toolbar/'].find(
          (validPath) => path.indexOf(validPath) >= 0
        )
      );
    };
  }
}

Em CatRoutePolice.police, será solicitada uma função, onde será passado por parâmetro a rota acessada no momento para que você possa validar se a mesma está dentro de suas políticas de acesso, devendo assim, retornar um boolean, onde true permite o acesso e false bloqueia.

OpenID