in app/middlewares/auth.py [0:0]
def auth_optional(f):
"""
A decorator for view functions where authentication is optional.
If signed in, pass the request to the decorated view function with
authentication context.
Parameters:
f (func): The view function to decorate.
Output:
decorated (func): The decorated function.
"""
@wraps(f)
def decorated(*args, **kwargs):
firebase_id_token = request.cookies.get('firebase_id_token')
if not firebase_id_token:
return f(auth_context=None, *args, **kwargs)
auth_context = verify_firebase_id_token(firebase_id_token)
if not auth_context:
return f(auth_context=None, *args, **kwargs)
return f(auth_context=auth_context, *args, **kwargs)
return decorated