Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/matheusfd3/sample-flask-auth
https://github.com/matheusfd3/sample-flask-auth
Last synced: about 1 month ago
JSON representation
- Host: GitHub
- URL: https://github.com/matheusfd3/sample-flask-auth
- Owner: matheusfd3
- Created: 2024-11-07T23:31:30.000Z (about 2 months ago)
- Default Branch: main
- Last Pushed: 2024-11-08T23:16:09.000Z (about 2 months ago)
- Last Synced: 2024-11-09T00:19:21.642Z (about 1 month ago)
- Language: Python
- Size: 3.91 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Projeto de Autenticação com Flask
Este é um projeto de exemplo focado exclusivamente em autenticação de usuários utilizando o microframework Flask. O projeto implementa funcionalidades de registro, login e logout, além de utilizar criptografia de senhas para garantir a segurança dos dados e MySQL com Docker.
## Funcionalidades
- **CRUD de Usuário**: Cadastro de novos usuários com verificação de dados e controle de permissões.
- **Login**: Autenticação de usuários cadastrados.
- **Logout**: Encerramento de sessão de forma segura.
- **Hashing de Senhas**: Senhas são armazenadas com hash (bcrypt) para segurança.
- **Proteção de Rotas**: Algumas rotas são acessíveis apenas para usuários autenticados.## Tecnologias Utilizadas
- **Flask:** Framework principal para desenvolvimento da aplicação web.
- **Flask-SQLAlchemy:** ORM (Object-Relational Mapper) para gerenciamento do banco de dados.
- **Flask-Login:** Biblioteca para gerenciar a autenticação de usuários.
- **Docker e Docker Compose:** Ferramenta de containerização para fácil configuração e deploy.
- **pymysql:** Driver para conexão com bancos de dados MySQL.
- **bcrypt:** Biblioteca para hashing de senhas, garantindo a segurança das credenciais dos usuários.## Notas Técnicas
- **Hashing de Senhas:** Senhas são criptografadas com `bcrypt` antes de serem armazenadas.
- **Gerenciamento de Sessões:** `Flask-Login` controla o status de autenticação do usuário.
- **Banco de Dados MySQL:** O projeto utiliza `Flask-SQLAlchemy` para conectar-se ao MySQL com o driver `pymysql`.## Configuração do Ambiente
### Pré-requisitos
- **Docker** e **Docker Compose** instalados.### Instalação
1. **Clone o repositório**:
```bash
git clone https://github.com/matheusfd3/tasks-flask-crud.git
cd sample-flask-auth
```
2. **Instale as dependências:**:
```bash
pip install -r requirements.txt
```
3. **Configurações**:
- Configure o arquivo `docker-compose.yml`
- Lembre-se de mudar o `path`
```yml
volumes:
- (Seu path aqui)/mysql:/var/lib/mysql
```
4. **Inicie o container docker com nosso MySQL:**
```bash
docker-compose up
```
5. **Use o flask shell para criar suas tabelas:**
- Na raiz do projeto
```bash
flask shell
```
```bash
db.create_all()
```
```bash
db.session.commit()
```
```bash
exit()
```
6. **Inicie o servidor:**
```bash
python app.py
```## Endpoints
Você pode testar esses endpoints usando o [Postman](https://www.postman.com/) ou outra ferramenta de sua preferência. Usuário possuem os campos `id`, `username`, `password` e `role`("user" ou "admin"):
| Método | Endpoint | Descrição |
|--------|-----------------------|------------------------------------|
| POST | `/login` | Realiza o login do usuário |
| GET | `/logout` | Realiza o logout do usuário |
| POST | `/user` | Cria um novo usuário |
| GET | `/user/` | Retorna informações de um usuário |
| PUT | `/user/` | Atualiza informações de um usuário |
| DELETE | `/user/` | Deleta um usuário |