diff --git a/backend/blueprints/profile/__init__.py b/backend/blueprints/profile/__init__.py index c8d2dc4..bcaa5b3 100644 --- a/backend/blueprints/profile/__init__.py +++ b/backend/blueprints/profile/__init__.py @@ -1,9 +1,11 @@ from email.policy import default -from flask import Blueprint, request, jsonify, current_app +from flask import Blueprint, request, jsonify, current_app, g from werkzeug.utils import secure_filename from datetime import datetime +from utils.auth import auth_required, requires_role from db.model import db -from db.model import User, UserRole, Session # Adjust based on your model's location +from db.model import User, Session, UserRole # Adjust based on your model's location +# from constants import UserRole from werkzeug.security import generate_password_hash,check_password_hash import uuid import os @@ -169,3 +171,9 @@ def login(): # def profile_info(user_uuid): # return user_uuid +#make a get request to get json on hello word +@profile.route('/hello') +@auth_required() +@requires_role([UserRole.ADMIN]) +def hello(): + return jsonify({"message": f"Hello {g.current_user.firstame}"}), 200 diff --git a/backend/utils/auth.py b/backend/utils/auth.py index 73ba416..2ad73ce 100644 --- a/backend/utils/auth.py +++ b/backend/utils/auth.py @@ -1,8 +1,8 @@ from functools import wraps from flask import request, jsonify, g from sqlalchemy import select, and_ -from ..db.model import User, Session, db -from ..constants import UserRole +from db.model import User, Session, db +from constants import UserRole def auth_required(): def decorator(f): @@ -38,8 +38,10 @@ def requires_role(roles=None): @wraps(f) def decorated_function(*args, **kwargs): if g.get('is_authed', False) is False: - return jsonify({'error': 'Unauthorized'}) + return jsonify({'error': 'Unauthorized'}), 401 if g.current_user.role in roles: return f(*args, **kwargs) + else: + return jsonify({'error': 'Forbidden'}), 403 return decorated_function return decorator \ No newline at end of file