# Inserindo OAuth2 e JWT em um projeto

[Repositório de referência](https://github.com/devsuperior/spring-boot-oauth2-jwt-demo)

#### Modelo de dados User-Role

Para implementarmos a segurança na aplicação, juntamente com controle de acesso por perfis de usuário, precisamos implementar os modelos de dados para armazenar esses perfis.

**UML** - Relação Many to Many

<figure><img src="https://4007536170-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F6PZSloYGpEyCvL9k6Kkm%2Fuploads%2F1NjzRf3OJvjs6KVFAwSZ%2Fimage.png?alt=media&#x26;token=49251078-3b73-404e-ac2e-8a0a044f8113" alt=""><figcaption></figcaption></figure>

E-mail será usado para login.

A tabela Role é o **perfil do usuário** (cliente, admin, operador, etc...).

1. Criar entidade Role;
2. Construtor, getters and setters e equals\&hashcode com authority;
3. Implementar anotações Spring e fazer a relação ManyToMany com User;
4. Na classe User, criar um método void "addRole";
5. Criar um método hasRole, passando uma Role para retornar true ou false;
   * Para isso, só fazer um for na Lista Role para verificar igualdade.
