32 lines
880 B
Python
32 lines
880 B
Python
from functools import wraps
|
|
from flask import request, jsonify
|
|
import jwt
|
|
|
|
from app.models.user import User # ou Organization
|
|
|
|
SECRET_KEY = "sua_chave_secreta"
|
|
|
|
def generate_token(user):
|
|
token = jwt.encode({"id": user.id}, SECRET_KEY, algorithm="HS256")
|
|
return token
|
|
|
|
def token_required(f):
|
|
@wraps(f)
|
|
def decorated(*args, **kwargs):
|
|
token = None
|
|
|
|
if 'Authorization' in request.headers:
|
|
token = request.headers['Authorization'].split(" ")[1] # Bearer <token>
|
|
|
|
if not token:
|
|
return jsonify({"message": "Token ausente!"}), 401
|
|
|
|
try:
|
|
data = jwt.decode(token, SECRET_KEY, algorithms=["HS256"])
|
|
current_user = User.query.get(data["id"])
|
|
except:
|
|
return jsonify({"message": "Token inválido!"}), 401
|
|
|
|
return f(current_user, *args, **kwargs)
|
|
return decorated
|