elemes/services/teacher_auth.py

42 lines
1.2 KiB
Python

"""Helper auth guru — dipakai lintas blueprint (student_management, content_editor)."""
import os
from flask import request
from services import repositories
from services.token_service import validate_token
def teacher_from_cookie():
"""Cek cepat is_teacher tanpa query user_id (dipakai student_management.py,
yang endpoint-nya tidak butuh atribusi user_id)."""
token = request.cookies.get("student_token", "")
if not token:
return None
info = validate_token(token)
if not info or not info.get("is_teacher"):
return None
return info
def teacher_user_from_cookie(db):
"""Resolve objek User (role='teacher') dari cookie, atau None.
Dipakai endpoint yang butuh user_id sungguhan (mis. content_editor)."""
token = request.cookies.get("student_token", "")
if not token:
return None
user = repositories.get_user_by_token(db, token)
if not user or user.role != "teacher":
return None
return user
def check_origin() -> bool:
allowed = os.environ.get("ORIGIN", "").strip()
if not allowed or allowed == "*":
return True
origin = request.headers.get("Origin", "")
if not origin:
return True
return origin in {allowed, allowed.rstrip("/")}