... | ... | @@ -26,6 +26,51 @@ Esta seção irá abordar a arquitetura selecionada para o Backend e Frontend. |
|
|
<p> É uma API REST construída utilizando NestJS que é uma estrutura para criar aplicativos NodeJS eficientes e escaláveis do lado do servidor. Ele usa JavaScript progressivo, é construído e suporta totalmente TypeScript, uma linguagem de programação de código aberto desenvolvido pela Microsoft, e combina elementos de OOP (Programação Orientada a Objetos), FP (Programação Funcional) e FRP (Programação Reativa Funcional). </p>
|
|
|
<p> Utilizamos TypeORM que é um ORM (Object Relational Mapper), é uma técnica de mapeamento objeto relacional que permite fazer uma relação dos objetos com os dados que os mesmo representam. </p>
|
|
|
|
|
|
### Modelo Model-View-Controller(MVC)
|
|
|
|
|
|
<br>
|
|
|
|
|
|
![mvc](https://tools.ages.pucrs.br/plataforma-onboarding-para-novos-colaboradores/decola-wiki/-/raw/main/arquitetura/mvc.png)
|
|
|
|
|
|
|
|
|
O MVC é um padrão de arquitetura de software. O MVC sugere uma maneira para você pensar na divisão de responsabilidades, principalmente dentro de um software web. O princípio básico do MVC é a divisão da aplicação em três camadas: a camada de interação do usuário (view), a camada de manipulação dos dados (model) e a camada de controle (controller). Com o MVC, é possível separar o código relativo à interface do usuário das regras de negócio, o que sem dúvida traz muitas vantagens que veremos mais à frente.
|
|
|
|
|
|
Quando falamos sobre o MVC, cada uma das camadas apresenta geralmente as seguintes responsabilidades:
|
|
|
|
|
|
● Model: A responsabilidade dos models é representar o negócio. Também é responsável pelo acesso e manipulação dos dados na sua aplicação.
|
|
|
|
|
|
● View: A view é responsável pela interface que será apresentada, mostrando as informações do model para o usuário.
|
|
|
|
|
|
● Controller: É a camada de controle, responsável por ligar o model e a view, fazendo com que os models possam ser repassados para as views e vice-versa.
|
|
|
|
|
|
<br>
|
|
|
|
|
|
|
|
|
### Autenticação(OAuth)
|
|
|
|
|
|
![oauth](https://tools.ages.pucrs.br/plataforma-onboarding-para-novos-colaboradores/decola-wiki/-/raw/main/arquitetura/autentica%C3%A7%C3%A3o.png)
|
|
|
|
|
|
|
|
|
JWT (JSON Web Token) é um padrão aberto (RFC 7519) para transmitir informações confiáveis e seguras entre partes. Ele consiste em uma cadeia compacta e auto-assinada de informações codificadas em formato JSON, que podem ser usadas para autenticação e autorização. JWT é comumente usado para autenticação de usuários em aplicativos web e mobile, e também pode ser usado para comunicação entre sistemas.
|
|
|
|
|
|
O JWT é um padrão aberto que pode ser usado em qualquer aplicativo que precisa transmitir informações confiáveis e seguras entre as partes, independentemente da plataforma ou linguagem de programação.
|
|
|
|
|
|
Como funciona?
|
|
|
O fluxo de trabalho do JWT é dividido em três etapas:
|
|
|
|
|
|
- **Geração do Token:**
|
|
|
|
|
|
A primeira etapa é a geração do token JWT. Nessa etapa, um servidor ou aplicativo gera um token JWT contendo as informações necessárias para autenticar o usuário. O token é geralmente gerado após o usuário fornecer suas credenciais (como nome de usuário e senha) e o servidor verificar essas credenciais. O token é assinado com uma chave secreta que só é conhecida pelo servidor ou aplicativo que gerou o token.
|
|
|
|
|
|
- **Envio do Token:**
|
|
|
|
|
|
A segunda etapa é o envio do token JWT. Nessa etapa, o servidor ou aplicativo envia o token JWT para o cliente, geralmente em um cabeçalho HTTP "Authorization". O cliente armazena o token para uso posterior, como em solicitações subsequentes para o servidor.
|
|
|
|
|
|
- **Verificação do Token:**
|
|
|
|
|
|
A terceira etapa é a verificação do token JWT. Nessa etapa, o servidor ou aplicativo verifica se o token JWT enviado pelo cliente é válido. O servidor verifica a assinatura do token usando a chave secreta que só é conhecida pelo servidor. Se a assinatura estiver correta, o servidor extrai as informações do token e verifica se o usuário tem permissão para acessar o recurso solicitado. Se o token for inválido ou expirado, o servidor nega o acesso ao recurso solicitado.
|
|
|
|
|
|
|
|
|
## Frontend
|
|
|
|
|
|
<h3 id="front-end-def-tec">Definições de Tecnologias</h3>
|
... | ... | |