Skip to content

An authentication project built with Flask, Python, and MySQL, showcasing core login and user management features.

Notifications You must be signed in to change notification settings

joschonarth/flask-auth-project

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

20 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🔒 Projeto de Autenticação de Usuário em Flask

Este é um projeto de API de autenticação de usuário construído com Flask. Ele inclui operações de login, logout, registro de usuário e controle de acesso a informações e operações sensíveis, utilizando SQLAlchemy para gerenciamento de banco de dados e Flask-Login para autenticação de sessão.

⚙️ Funcionalidades

  • 🔑 Registro de Usuário: Criação de novos usuários, com senha criptografada, armazenada no banco de dados.
  • 🔓 Login: Autenticação de usuário com verificação de senha utilizando bcrypt.
  • 🚪 Logout: Encerramento de sessão para usuários autenticados.
  • 📋 CRUD de Usuário:
    • 👤 Consulta de Usuário: Obtenção de informações de um usuário específico.
    • ✏️ Atualização de Senha: Modificação da senha do usuário autenticado.
    • Deleção de Usuário: Exclusão de um usuário, restrito ao administrador.

🛠️ Tecnologias Utilizadas

  • 🐍 Python - Linguagem de programação utilizada.
  • 🔥 Flask - Framework web em Python.
  • 🐬 MySQL - Banco de dados relacional.
  • 🐳 Docker - Para conteinerização da aplicação.

📚 Bibliotecas Utilizadas

  • 🔗 Flask-SQLAlchemy - Integração do SQLAlchemy com Flask.
  • 🔑 Flask-Login - Gerenciamento de sessão de login.
  • ⚙️ Werkzeug - Utilitário WSGI para Flask.
  • 💾 pymysql - Driver para integração com MySQL.
  • 🛡️ cryptography - Biblioteca de criptografia para Python.
  • 🔒 bcrypt - Para hashing seguro de senhas.

🚀 Como Rodar o Projeto

📌 1. Clone o repositório:

git clone https://github.com/joschonarth/flask-sample-auth

📌 2. Entre na pasta do projeto:

cd flask-sample-auth

📌 3. Crie um ambiente virtual:

python -m venv .venv

📌 4. Ative o ambiente ambiente virtual:

.venv\Scripts\activate

📌 5. Instale as dependências do projeto que estão no arquivo requirements.txt:

pip install -r requirements.txt

📌 6. Execute o arquivo docker-compose.yml para baixar e rodar a imagem do MySQL:

docker-compose up -d

📌 7. Abra o Flask Shell no terminal e crie as tabelas no banco de dados:

  • Primeiro, abra o Flask shell:

    flask shell
  • Depois, dentro do Flask Shell, crie as tabelas:

    db.create_all()
  • Salve as alterações no banco de dados:

    db.sessions.commit()
  • Saia do Flask Shell:

    exit()

📌 8. Inicie o servidor de desenvolvimento:

python app.py

🌐 Acesso à API

A API estará disponível em: http://127.0.0.1:5000

🔗 Endpoints

✍️ Criar Usuário

  • Descrição: Cria um novo usuário com senha criptografada.
  • Método: POST
  • Endpoint: /user

🌐 Exemplo de Requisição: http://localhost:5000/user

{
    "username": "novousuario",
    "password": "123456"
}

📄 Exemplo de Resposta:

{
    "message": "Usuário cadastrado com sucesso!"
}

🔓 Fazer Login

  • Descrição: Autentica um usuário e inicia uma sessão.
  • Método: POST
  • Endpoint: /login

🌐 Exemplo de Requisição: http://localhost:5000/login

{
    "username": "novousuario",
    "password": "123456"
}

📄 Exemplo de Resposta:

{
    "message": "Login realizado com sucesso!"
}

🚪 Fazer Logout

  • Descrição: Encerra a sessão de um usuário autenticado.
  • Método: GET
  • Endpoint: /logout

🌐 Exemplo de Requisição: http://localhost:5000/logout

📄 Exemplo de Resposta:

{
    "message": "Logout realizado com sucesso!"
}

👁️ Ler Usuário

  • Descrição: Recupera as informações de um usuário específico.
  • Método: GET
  • Endpoint: /user/{id_user}

🌐 Exemplo de Requisição: http://localhost:5000/user/{id_user}

📄 Exemplo de Resposta:

{
    "username": "novousuario"
}

🔄 Atualizar Usuário

  • Descrição: Atualiza a senha do usuário autenticado.
  • Método: PUT
  • Endpoint: /user/{id_user}

🌐 Exemplo de Requisição: http://localhost:5000/user/{id_user}

{
    "password": "654321"
}

📄 Exemplo de Resposta:

{
    "message": "Usuário novousuario atualizado com sucesso!"
}

🗑️ Deletar Usuário

  • Descrição: Exclui um usuário. Ação restrita ao administrador.
  • Método: DELETE
  • Endpoint: /user/{id_user}

🌐 Exemplo de Requisição: http://localhost:5000/user/{id_user}

📄 Exemplo de Resposta:

{
    "message": "Usuário novousuario deletado com sucesso!"
}

🛠️ Comandos Úteis do Flask Shell

# Cria todas as tabelas definidas nos Models
db.create_all()

# Deleta todas as tabelas do banco de dados
db.drop_all()

# Salva as alterações no banco de dados
db.session.commit()

# Cancela as alterações pendentes do banco de dados que ainda não foram salvas definitivamente.
db.session.rollback()

# Consulta todos os registros de uma tabela específica (exemplo com a tabela 'User')
User.query.all()

# Consulta um registro específico por ID (exemplo com a tabela 'User')
User.query.get(1)

# Adiciona um novo registro no banco de dados (exemplo com a tabela 'User')
new_user = User(username="username", password="123456")
db.session.add(new_user)

# Atualiza um registro existente no banco de dados (exemplo com a tabela 'User')
user = User.query.get(1)
user.username = "new_username"

# Deleta um registro específico do banco de dados (exemplo com a tabela 'User')
user_to_delete = User.query.get(1)
db.session.delete(user_to_delete)

# Sai do shell
exit()

🤝 Contribuindo

Se você deseja contribuir com o projeto, fique à vontade para abrir uma pull request ou uma issue.

📞 Contato

About

An authentication project built with Flask, Python, and MySQL, showcasing core login and user management features.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages