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