Property Mapping for Authentik: Overseerr authentication using Plex SSO token

Property Mapping for authentik: Overseerr authentication using Plex SSO token

from authentik.sources.plex.models import PlexSourceConnection
import json

connection = PlexSourceConnection.objects.filter(user=request.user).first()
if not connection:
    ak_logger.info("Overseer: No Plex connection found")
    return {}

base_url = "http://overseerr.apps:5055"
end_point = "/api/v1/auth/plex"

headers = {
    "Content-Type": "application/json",
}

data = {
    "authToken": connection.plex_token
}

response = requests.post(base_url + end_point, headers=headers, data=json.dumps(data))

if response.status_code == 200:
    sid_value = response.cookies.get("connect.sid")
    cookie_obj = f"connect.sid={sid_value}"
    ak_logger.info("Overseer: Successfully authenticated with Plex token")
    return {
        "ak_proxy": {
            "user_attributes": {
                "additionalHeaders": {
                    "Cookie": cookie_obj
                }
            }
        }
    }
else:
    ak_logger.error(f"Overseer: The request failed with: {response.text}")
    return {}