{"nodes": [{"id": "$graphify-root$_backend_app_services_auth_service_py", "label": "auth_service.py", "file_type": "code", "source_file": "backend/app/services/auth_service.py", "source_location": "L1"}, {"id": "$graphify-root$_backend_app_services_auth_service_get_allowed_users", "label": "_get_allowed_users()", "file_type": "code", "source_file": "backend/app/services/auth_service.py", "source_location": "L29", "_callable": true}, {"id": "$graphify-root$_backend_app_services_auth_service_is_user_allowed", "label": "is_user_allowed()", "file_type": "code", "source_file": "backend/app/services/auth_service.py", "source_location": "L41", "_callable": true}, {"id": "$graphify-root$_backend_app_services_auth_service_verify_tms_token", "label": "verify_tms_token()", "file_type": "code", "source_file": "backend/app/services/auth_service.py", "source_location": "L51", "_callable": true}, {"id": "$graphify-root$_backend_app_services_auth_service_handshake", "label": "handshake()", "file_type": "code", "source_file": "backend/app/services/auth_service.py", "source_location": "L117", "_callable": true}, {"id": "session", "label": "Session", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/backend/app/services/auth_service.py"}, {"id": "$graphify-root$_backend_app_services_auth_service_extract_email_from_token", "label": "_extract_email_from_token()", "file_type": "code", "source_file": "backend/app/services/auth_service.py", "source_location": "L295", "_callable": true}, {"id": "$graphify-root$_backend_app_services_auth_service_get_current_user", "label": "get_current_user()", "file_type": "code", "source_file": "backend/app/services/auth_service.py", "source_location": "L365", "_callable": true}, {"id": "user", "label": "User", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/backend/app/services/auth_service.py"}, {"id": "$graphify-root$_backend_app_services_auth_service_logout", "label": "logout()", "file_type": "code", "source_file": "backend/app/services/auth_service.py", "source_location": "L409", "_callable": true}, {"id": "$graphify-root$_backend_app_services_auth_service_get_decrypted_tms_token", "label": "get_decrypted_tms_token()", "file_type": "code", "source_file": "backend/app/services/auth_service.py", "source_location": "L427", "_callable": true}, {"id": "$graphify-root$_backend_app_services_auth_service_save_tms_creds", "label": "save_tms_creds()", "file_type": "code", "source_file": "backend/app/services/auth_service.py", "source_location": "L440", "_callable": true}, {"id": "$graphify-root$_backend_app_services_auth_service_get_decrypted_tms_creds", "label": "get_decrypted_tms_creds()", "file_type": "code", "source_file": "backend/app/services/auth_service.py", "source_location": "L456", "_callable": true}, {"id": "$graphify-root$_backend_app_services_auth_service_update_tms_token", "label": "update_tms_token()", "file_type": "code", "source_file": "backend/app/services/auth_service.py", "source_location": "L468", "_callable": true}, {"id": "$graphify-root$_backend_app_services_auth_service_auto_relogin", "label": "auto_relogin()", "file_type": "code", "source_file": "backend/app/services/auth_service.py", "source_location": "L480", "_callable": true}, {"id": "$graphify-root$_backend_app_services_auth_service_rationale_30", "label": "Return whitelist of allowed email addresses from env var ATLAS_ALLOWED_USERS.", "file_type": "rationale", "source_file": "backend/app/services/auth_service.py", "source_location": "L30"}, {"id": "$graphify-root$_backend_app_services_auth_service_rationale_53", "label": "Call a lightweight TMS endpoint to verify token is valid. Returns user info\u2026", "file_type": "rationale", "source_file": "backend/app/services/auth_service.py", "source_location": "L53"}, {"id": "$graphify-root$_backend_app_services_auth_service_rationale_119", "label": "Process authentication handshake. Dev mode (APP_ENV=local): skip TMS verify,\u2026", "file_type": "rationale", "source_file": "backend/app/services/auth_service.py", "source_location": "L119"}, {"id": "$graphify-root$_backend_app_services_auth_service_rationale_297", "label": "Decode JWT without verification to get email claim. TMS token punya struktur\u2026", "file_type": "rationale", "source_file": "backend/app/services/auth_service.py", "source_location": "L297"}, {"id": "$graphify-root$_backend_app_services_auth_service_rationale_367", "label": "Resolve Atlas session token to User object.", "file_type": "rationale", "source_file": "backend/app/services/auth_service.py", "source_location": "L367"}, {"id": "$graphify-root$_backend_app_services_auth_service_rationale_411", "label": "Invalidate session by clearing jti.", "file_type": "rationale", "source_file": "backend/app/services/auth_service.py", "source_location": "L411"}, {"id": "$graphify-root$_backend_app_services_auth_service_rationale_429", "label": "For internal use by job workers \u2014 decrypt stored TMS token.", "file_type": "rationale", "source_file": "backend/app/services/auth_service.py", "source_location": "L429"}, {"id": "$graphify-root$_backend_app_services_auth_service_rationale_441", "label": "Simpan TMS credentials terenkripsi untuk auto re-login. Password hanya disimpan\u2026", "file_type": "rationale", "source_file": "backend/app/services/auth_service.py", "source_location": "L441"}, {"id": "$graphify-root$_backend_app_services_auth_service_rationale_457", "label": "Decrypt TMS credentials untuk auto re-login.", "file_type": "rationale", "source_file": "backend/app/services/auth_service.py", "source_location": "L457"}, {"id": "$graphify-root$_backend_app_services_auth_service_rationale_469", "label": "Update TMS token setelah auto re-login.", "file_type": "rationale", "source_file": "backend/app/services/auth_service.py", "source_location": "L469"}, {"id": "$graphify-root$_backend_app_services_auth_service_rationale_481", "label": "Auto re-login ke TMS kalau token expired. Return token baru atau None.\u2026", "file_type": "rationale", "source_file": "backend/app/services/auth_service.py", "source_location": "L481"}], "edges": [{"source": "$graphify-root$_backend_app_services_auth_service_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/app/services/auth_service.py", "source_location": "L1", "weight": 1.0, "_python_import_module": "typing", "_python_import_bindings": [["Optional", "Optional"]]}, {"source": "$graphify-root$_backend_app_services_auth_service_py", "target": "datetime", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/app/services/auth_service.py", "source_location": "L3", "weight": 1.0, "_python_import_module": "datetime", "_python_import_bindings": [["datetime", "datetime"]]}, {"source": "$graphify-root$_backend_app_services_auth_service_py", "target": "sqlalchemy_orm", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/app/services/auth_service.py", "source_location": "L5", "weight": 1.0, "_python_import_module": "sqlalchemy.orm", "_python_import_bindings": [["Session", "Session"]]}, {"source": "$graphify-root$_backend_app_services_auth_service_py", "target": "uuid", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/app/services/auth_service.py", "source_location": "L7", "weight": 1.0, "_python_import_module": "uuid", "_python_import_bindings": [["uuid", "uuid"]], "_python_import_module_binding": true}, {"source": "$graphify-root$_backend_app_services_auth_service_py", "target": "requests", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/app/services/auth_service.py", "source_location": "L9", "weight": 1.0, "_python_import_module": "requests", "_python_import_bindings": [["requests", "requests"]], "_python_import_module_binding": true}, {"source": "$graphify-root$_backend_app_services_auth_service_py", "target": "logging", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/app/services/auth_service.py", "source_location": "L11", "weight": 1.0, "_python_import_module": "logging", "_python_import_bindings": [["logging", "logging"]], "_python_import_module_binding": true}, {"source": "$graphify-root$_backend_app_services_auth_service_py", "target": "$graphify-root$_backend_app_core_config_py", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/app/services/auth_service.py", "source_location": "L13", "weight": 1.0, "_python_import_module": "app.core.config", "_python_import_bindings": [["settings", "settings"]], "target_file": "$graphify-root$/backend/app/core/config.py"}, {"source": "$graphify-root$_backend_app_services_auth_service_py", "target": "$graphify-root$_backend_app_db_models_py", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/app/services/auth_service.py", "source_location": "L15", "weight": 1.0, "_python_import_module": "app.db.models", "_python_import_bindings": [["User", "User"], ["UserToken", "UserToken"], ["TmsCreds", "TmsCreds"]], "target_file": "$graphify-root$/backend/app/db/models.py"}, {"source": "$graphify-root$_backend_app_services_auth_service_py", "target": "$graphify-root$_backend_app_services_encryption_py", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/app/services/auth_service.py", "source_location": "L17", "weight": 1.0, "_python_import_module": "app.services.encryption", "_python_import_bindings": [["encrypt_token", "encrypt_token"], ["decrypt_token", "decrypt_token"]], "target_file": "$graphify-root$/backend/app/services/encryption.py"}, {"source": "$graphify-root$_backend_app_services_auth_service_py", "target": "$graphify-root$_backend_app_services_jwt_py", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/app/services/auth_service.py", "source_location": "L19", "weight": 1.0, "_python_import_module": "app.services.jwt", "_python_import_bindings": [["create_session_jwt", "create_session_jwt"], ["verify_session_jwt", "verify_session_jwt"]], "target_file": "$graphify-root$/backend/app/services/jwt.py"}, {"source": "$graphify-root$_backend_app_services_auth_service_py", "target": "$graphify-root$_backend_app_services_auth_service_get_allowed_users", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/services/auth_service.py", "source_location": "L29", "weight": 1.0}, {"source": "$graphify-root$_backend_app_services_auth_service_py", "target": "$graphify-root$_backend_app_services_auth_service_is_user_allowed", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/services/auth_service.py", "source_location": "L41", "weight": 1.0}, {"source": "$graphify-root$_backend_app_services_auth_service_py", "target": "$graphify-root$_backend_app_services_auth_service_verify_tms_token", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/services/auth_service.py", "source_location": "L51", "weight": 1.0}, {"source": "$graphify-root$_backend_app_services_auth_service_py", "target": "$graphify-root$_backend_app_services_auth_service_handshake", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/services/auth_service.py", "source_location": "L117", "weight": 1.0}, {"source": "$graphify-root$_backend_app_services_auth_service_handshake", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "backend/app/services/auth_service.py", "source_location": "L117", "weight": 1.0}, {"source": "$graphify-root$_backend_app_services_auth_service_py", "target": "$graphify-root$_backend_app_services_auth_service_extract_email_from_token", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/services/auth_service.py", "source_location": "L295", "weight": 1.0}, {"source": "$graphify-root$_backend_app_services_auth_service_py", "target": "$graphify-root$_backend_app_services_auth_service_get_current_user", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/services/auth_service.py", "source_location": "L365", "weight": 1.0}, {"source": "$graphify-root$_backend_app_services_auth_service_get_current_user", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "backend/app/services/auth_service.py", "source_location": "L365", "weight": 1.0}, {"source": "$graphify-root$_backend_app_services_auth_service_get_current_user", "target": "user", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "backend/app/services/auth_service.py", "source_location": "L365", "weight": 1.0}, {"source": "$graphify-root$_backend_app_services_auth_service_py", "target": "$graphify-root$_backend_app_services_auth_service_logout", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/services/auth_service.py", "source_location": "L409", "weight": 1.0}, {"source": "$graphify-root$_backend_app_services_auth_service_logout", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "backend/app/services/auth_service.py", "source_location": "L409", "weight": 1.0}, {"source": "$graphify-root$_backend_app_services_auth_service_py", "target": "$graphify-root$_backend_app_services_auth_service_get_decrypted_tms_token", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/services/auth_service.py", "source_location": "L427", "weight": 1.0}, {"source": "$graphify-root$_backend_app_services_auth_service_get_decrypted_tms_token", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "backend/app/services/auth_service.py", "source_location": "L427", "weight": 1.0}, {"source": "$graphify-root$_backend_app_services_auth_service_py", "target": "$graphify-root$_backend_app_services_auth_service_save_tms_creds", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/services/auth_service.py", "source_location": "L440", "weight": 1.0}, {"source": "$graphify-root$_backend_app_services_auth_service_save_tms_creds", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "backend/app/services/auth_service.py", "source_location": "L440", "weight": 1.0}, {"source": "$graphify-root$_backend_app_services_auth_service_py", "target": "$graphify-root$_backend_app_services_auth_service_get_decrypted_tms_creds", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/services/auth_service.py", "source_location": "L456", "weight": 1.0}, {"source": "$graphify-root$_backend_app_services_auth_service_get_decrypted_tms_creds", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "backend/app/services/auth_service.py", "source_location": "L456", "weight": 1.0}, {"source": "$graphify-root$_backend_app_services_auth_service_py", "target": "$graphify-root$_backend_app_services_auth_service_update_tms_token", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/services/auth_service.py", "source_location": "L468", "weight": 1.0}, {"source": "$graphify-root$_backend_app_services_auth_service_update_tms_token", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "backend/app/services/auth_service.py", "source_location": "L468", "weight": 1.0}, {"source": "$graphify-root$_backend_app_services_auth_service_py", "target": "$graphify-root$_backend_app_services_auth_service_auto_relogin", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/services/auth_service.py", "source_location": "L480", "weight": 1.0}, {"source": "$graphify-root$_backend_app_services_auth_service_auto_relogin", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "backend/app/services/auth_service.py", "source_location": "L480", "weight": 1.0}, {"source": "$graphify-root$_backend_app_services_auth_service_is_user_allowed", "target": "$graphify-root$_backend_app_services_auth_service_get_allowed_users", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/app/services/auth_service.py", "source_location": "L43", "weight": 1.0}, {"source": "$graphify-root$_backend_app_services_auth_service_handshake", "target": "$graphify-root$_backend_app_services_auth_service_extract_email_from_token", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/app/services/auth_service.py", "source_location": "L139", "weight": 1.0}, {"source": "$graphify-root$_backend_app_services_auth_service_handshake", "target": "$graphify-root$_backend_app_services_auth_service_get_allowed_users", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/app/services/auth_service.py", "source_location": "L145", "weight": 1.0}, {"source": "$graphify-root$_backend_app_services_auth_service_handshake", "target": "$graphify-root$_backend_app_services_auth_service_verify_tms_token", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/app/services/auth_service.py", "source_location": "L161", "weight": 1.0}, {"source": "$graphify-root$_backend_app_services_auth_service_handshake", "target": "$graphify-root$_backend_app_services_auth_service_is_user_allowed", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/app/services/auth_service.py", "source_location": "L183", "weight": 1.0}, {"source": "$graphify-root$_backend_app_services_auth_service_auto_relogin", "target": "$graphify-root$_backend_app_services_auth_service_get_decrypted_tms_creds", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/app/services/auth_service.py", "source_location": "L487", "weight": 1.0}, {"source": "$graphify-root$_backend_app_services_auth_service_auto_relogin", "target": "$graphify-root$_backend_app_services_auth_service_update_tms_token", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/app/services/auth_service.py", "source_location": "L501", "weight": 1.0}, {"source": "$graphify-root$_backend_app_services_auth_service_rationale_30", "target": "$graphify-root$_backend_app_services_auth_service_get_allowed_users", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/app/services/auth_service.py", "source_location": "L30", "weight": 1.0}, {"source": "$graphify-root$_backend_app_services_auth_service_rationale_53", "target": "$graphify-root$_backend_app_services_auth_service_verify_tms_token", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/app/services/auth_service.py", "source_location": "L53", "weight": 1.0}, {"source": "$graphify-root$_backend_app_services_auth_service_rationale_119", "target": "$graphify-root$_backend_app_services_auth_service_handshake", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/app/services/auth_service.py", "source_location": "L119", "weight": 1.0}, {"source": "$graphify-root$_backend_app_services_auth_service_rationale_297", "target": "$graphify-root$_backend_app_services_auth_service_extract_email_from_token", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/app/services/auth_service.py", "source_location": "L297", "weight": 1.0}, {"source": "$graphify-root$_backend_app_services_auth_service_rationale_367", "target": "$graphify-root$_backend_app_services_auth_service_get_current_user", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/app/services/auth_service.py", "source_location": "L367", "weight": 1.0}, {"source": "$graphify-root$_backend_app_services_auth_service_rationale_411", "target": "$graphify-root$_backend_app_services_auth_service_logout", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/app/services/auth_service.py", "source_location": "L411", "weight": 1.0}, {"source": "$graphify-root$_backend_app_services_auth_service_rationale_429", "target": "$graphify-root$_backend_app_services_auth_service_get_decrypted_tms_token", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/app/services/auth_service.py", "source_location": "L429", "weight": 1.0}, {"source": "$graphify-root$_backend_app_services_auth_service_rationale_441", "target": "$graphify-root$_backend_app_services_auth_service_save_tms_creds", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/app/services/auth_service.py", "source_location": "L441", "weight": 1.0}, {"source": "$graphify-root$_backend_app_services_auth_service_rationale_457", "target": "$graphify-root$_backend_app_services_auth_service_get_decrypted_tms_creds", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/app/services/auth_service.py", "source_location": "L457", "weight": 1.0}, {"source": "$graphify-root$_backend_app_services_auth_service_rationale_469", "target": "$graphify-root$_backend_app_services_auth_service_update_tms_token", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/app/services/auth_service.py", "source_location": "L469", "weight": 1.0}, {"source": "$graphify-root$_backend_app_services_auth_service_rationale_481", "target": "$graphify-root$_backend_app_services_auth_service_auto_relogin", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/app/services/auth_service.py", "source_location": "L481", "weight": 1.0}], "raw_calls": [{"caller_nid": "$graphify-root$_backend_app_services_auth_service_get_allowed_users", "callee": "lower", "is_member_call": true, "source_file": "backend/app/services/auth_service.py", "source_location": "L34", "receiver": null, "_python_receiver_shadowed": true}, {"caller_nid": "$graphify-root$_backend_app_services_auth_service_get_allowed_users", "callee": "strip", "is_member_call": true, "source_file": "backend/app/services/auth_service.py", "source_location": "L34", "receiver": "e", "_python_receiver_shadowed": true}, {"caller_nid": "$graphify-root$_backend_app_services_auth_service_get_allowed_users", "callee": "split", "is_member_call": true, "source_file": "backend/app/services/auth_service.py", "source_location": "L34", "receiver": null, "_python_receiver_shadowed": true}, {"caller_nid": "$graphify-root$_backend_app_services_auth_service_get_allowed_users", "callee": "strip", "is_member_call": true, "source_file": "backend/app/services/auth_service.py", "source_location": "L34", "receiver": "e", "_python_receiver_shadowed": true}, {"caller_nid": "$graphify-root$_backend_app_services_auth_service_is_user_allowed", "callee": "lower", "is_member_call": true, "source_file": "backend/app/services/auth_service.py", "source_location": "L45", "receiver": "email", "_python_receiver_shadowed": true}, {"caller_nid": "$graphify-root$_backend_app_services_auth_service_verify_tms_token", "callee": "get", "is_member_call": true, "source_file": "backend/app/services/auth_service.py", "source_location": "L91", "receiver": "requests", "_python_receiver_shadowed": false}, {"caller_nid": "$graphify-root$_backend_app_services_auth_service_verify_tms_token", "callee": "warning", "is_member_call": true, "source_file": "backend/app/services/auth_service.py", "source_location": "L103", "receiver": "logger", "_python_receiver_shadowed": true}, {"caller_nid": "$graphify-root$_backend_app_services_auth_service_verify_tms_token", "callee": "error", "is_member_call": true, "source_file": "backend/app/services/auth_service.py", "source_location": "L109", "receiver": "logger", "_python_receiver_shadowed": true}, {"caller_nid": "$graphify-root$_backend_app_services_auth_service_verify_tms_token", "callee": "exc", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "backend/app/services/auth_service.py", "source_location": "L109"}, {"caller_nid": "$graphify-root$_backend_app_services_auth_service_handshake", "callee": "warning", "is_member_call": true, "source_file": "backend/app/services/auth_service.py", "source_location": "L153", "receiver": "logger", "_python_receiver_shadowed": true}, {"caller_nid": "$graphify-root$_backend_app_services_auth_service_handshake", "callee": "warning", "is_member_call": true, "source_file": "backend/app/services/auth_service.py", "source_location": "L165", "receiver": "logger", "_python_receiver_shadowed": true}, {"caller_nid": "$graphify-root$_backend_app_services_auth_service_handshake", "callee": "warning", "is_member_call": true, "source_file": "backend/app/services/auth_service.py", "source_location": "L175", "receiver": "logger", "_python_receiver_shadowed": true}, {"caller_nid": "$graphify-root$_backend_app_services_auth_service_handshake", "callee": "warning", "is_member_call": true, "source_file": "backend/app/services/auth_service.py", "source_location": "L185", "receiver": "logger", "_python_receiver_shadowed": true}, {"caller_nid": "$graphify-root$_backend_app_services_auth_service_handshake", "callee": "first", "is_member_call": true, "source_file": "backend/app/services/auth_service.py", "source_location": "L195", "receiver": null, "_python_receiver_shadowed": true}, {"caller_nid": "$graphify-root$_backend_app_services_auth_service_handshake", "callee": "filter", "is_member_call": true, "source_file": "backend/app/services/auth_service.py", "source_location": "L195", "receiver": null, "_python_receiver_shadowed": true}, {"caller_nid": "$graphify-root$_backend_app_services_auth_service_handshake", "callee": "query", "is_member_call": true, "source_file": "backend/app/services/auth_service.py", "source_location": "L195", "receiver": "db", "_python_receiver_shadowed": true, "receiver_type": "Session"}, {"caller_nid": "$graphify-root$_backend_app_services_auth_service_handshake", "callee": "User", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "backend/app/services/auth_service.py", "source_location": "L195"}, {"caller_nid": "$graphify-root$_backend_app_services_auth_service_handshake", "callee": "User", "is_member_call": false, "source_file": "backend/app/services/auth_service.py", "source_location": "L201", "receiver": null, "via_stub": true}, {"caller_nid": "$graphify-root$_backend_app_services_auth_service_handshake", "callee": "split", "is_member_call": true, "source_file": "backend/app/services/auth_service.py", "source_location": "L205", "receiver": "user_id", "_python_receiver_shadowed": true}, {"caller_nid": "$graphify-root$_backend_app_services_auth_service_handshake", "callee": "utcnow", "is_member_call": true, "source_file": "backend/app/services/auth_service.py", "source_location": "L211", "receiver": "datetime", "_python_receiver_shadowed": true}, {"caller_nid": "$graphify-root$_backend_app_services_auth_service_handshake", "callee": "add", "is_member_call": true, "source_file": "backend/app/services/auth_service.py", "source_location": "L215", "receiver": "db", "_python_receiver_shadowed": true, "receiver_type": "Session"}, {"caller_nid": "$graphify-root$_backend_app_services_auth_service_handshake", "callee": "commit", "is_member_call": true, "source_file": "backend/app/services/auth_service.py", "source_location": "L217", "receiver": "db", "_python_receiver_shadowed": true, "receiver_type": "Session"}, {"caller_nid": "$graphify-root$_backend_app_services_auth_service_handshake", "callee": "refresh", "is_member_call": true, "source_file": "backend/app/services/auth_service.py", "source_location": "L219", "receiver": "db", "_python_receiver_shadowed": true, "receiver_type": "Session"}, {"caller_nid": "$graphify-root$_backend_app_services_auth_service_handshake", "callee": "warning", "is_member_call": true, "source_file": "backend/app/services/auth_service.py", "source_location": "L225", "receiver": "logger", "_python_receiver_shadowed": true}, {"caller_nid": "$graphify-root$_backend_app_services_auth_service_handshake", "callee": "encrypt_token", "is_member_call": false, "source_file": "backend/app/services/auth_service.py", "source_location": "L233", "receiver": null}, {"caller_nid": "$graphify-root$_backend_app_services_auth_service_handshake", "callee": "first", "is_member_call": true, "source_file": "backend/app/services/auth_service.py", "source_location": "L235", "receiver": null, "_python_receiver_shadowed": true}, {"caller_nid": "$graphify-root$_backend_app_services_auth_service_handshake", "callee": "filter", "is_member_call": true, "source_file": "backend/app/services/auth_service.py", "source_location": "L235", "receiver": null, "_python_receiver_shadowed": true}, {"caller_nid": "$graphify-root$_backend_app_services_auth_service_handshake", "callee": "query", "is_member_call": true, "source_file": "backend/app/services/auth_service.py", "source_location": "L235", "receiver": "db", "_python_receiver_shadowed": true, "receiver_type": "Session"}, {"caller_nid": "$graphify-root$_backend_app_services_auth_service_handshake", "callee": "UserToken", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "backend/app/services/auth_service.py", "source_location": "L235"}, {"caller_nid": "$graphify-root$_backend_app_services_auth_service_handshake", "callee": "utcnow", "is_member_call": true, "source_file": "backend/app/services/auth_service.py", "source_location": "L243", "receiver": "datetime", "_python_receiver_shadowed": true}, {"caller_nid": "$graphify-root$_backend_app_services_auth_service_handshake", "callee": "UserToken", "is_member_call": false, "source_file": "backend/app/services/auth_service.py", "source_location": "L247", "receiver": null}, {"caller_nid": "$graphify-root$_backend_app_services_auth_service_handshake", "callee": "utcnow", "is_member_call": true, "source_file": "backend/app/services/auth_service.py", "source_location": "L253", "receiver": "datetime", "_python_receiver_shadowed": true}, {"caller_nid": "$graphify-root$_backend_app_services_auth_service_handshake", "callee": "add", "is_member_call": true, "source_file": "backend/app/services/auth_service.py", "source_location": "L257", "receiver": "db", "_python_receiver_shadowed": true, "receiver_type": "Session"}, {"caller_nid": "$graphify-root$_backend_app_services_auth_service_handshake", "callee": "create_session_jwt", "is_member_call": false, "source_file": "backend/app/services/auth_service.py", "source_location": "L263", "receiver": null}, {"caller_nid": "$graphify-root$_backend_app_services_auth_service_handshake", "callee": "utcnow", "is_member_call": true, "source_file": "backend/app/services/auth_service.py", "source_location": "L271", "receiver": "datetime", "_python_receiver_shadowed": true}, {"caller_nid": "$graphify-root$_backend_app_services_auth_service_handshake", "callee": "commit", "is_member_call": true, "source_file": "backend/app/services/auth_service.py", "source_location": "L273", "receiver": "db", "_python_receiver_shadowed": true, "receiver_type": "Session"}, {"caller_nid": "$graphify-root$_backend_app_services_auth_service_handshake", "callee": "isoformat", "is_member_call": true, "source_file": "backend/app/services/auth_service.py", "source_location": "L287", "receiver": "expires_at", "_python_receiver_shadowed": true}, {"caller_nid": "$graphify-root$_backend_app_services_auth_service_extract_email_from_token", "callee": "get_unverified_claims", "is_member_call": true, "source_file": "backend/app/services/auth_service.py", "source_location": "L315", "receiver": "jwt", "_python_receiver_shadowed": true}, {"caller_nid": "$graphify-root$_backend_app_services_auth_service_extract_email_from_token", "callee": "get", "is_member_call": true, "source_file": "backend/app/services/auth_service.py", "source_location": "L321", "receiver": "claims", "_python_receiver_shadowed": true}, {"caller_nid": "$graphify-root$_backend_app_services_auth_service_extract_email_from_token", "callee": "dict", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "backend/app/services/auth_service.py", "source_location": "L323"}, {"caller_nid": "$graphify-root$_backend_app_services_auth_service_extract_email_from_token", "callee": "get", "is_member_call": true, "source_file": "backend/app/services/auth_service.py", "source_location": "L325", "receiver": "nested", "_python_receiver_shadowed": true}, {"caller_nid": "$graphify-root$_backend_app_services_auth_service_extract_email_from_token", "callee": "lower", "is_member_call": true, "source_file": "backend/app/services/auth_service.py", "source_location": "L329", "receiver": null, "_python_receiver_shadowed": true}, {"caller_nid": "$graphify-root$_backend_app_services_auth_service_extract_email_from_token", "callee": "get", "is_member_call": true, "source_file": "backend/app/services/auth_service.py", "source_location": "L337", "receiver": "claims", "_python_receiver_shadowed": true}, {"caller_nid": "$graphify-root$_backend_app_services_auth_service_extract_email_from_token", "callee": "lower", "is_member_call": true, "source_file": "backend/app/services/auth_service.py", "source_location": "L341", "receiver": null, "_python_receiver_shadowed": true}, {"caller_nid": "$graphify-root$_backend_app_services_auth_service_extract_email_from_token", "callee": "get", "is_member_call": true, "source_file": "backend/app/services/auth_service.py", "source_location": "L349", "receiver": "claims", "_python_receiver_shadowed": true}, {"caller_nid": "$graphify-root$_backend_app_services_auth_service_extract_email_from_token", "callee": "lower", "is_member_call": true, "source_file": "backend/app/services/auth_service.py", "source_location": "L353", "receiver": null, "_python_receiver_shadowed": true}, {"caller_nid": "$graphify-root$_backend_app_services_auth_service_get_current_user", "callee": "verify_session_jwt", "is_member_call": false, "source_file": "backend/app/services/auth_service.py", "source_location": "L369", "receiver": null}, {"caller_nid": "$graphify-root$_backend_app_services_auth_service_get_current_user", "callee": "debug", "is_member_call": true, "source_file": "backend/app/services/auth_service.py", "source_location": "L370", "receiver": "logger", "_python_receiver_shadowed": true}, {"caller_nid": "$graphify-root$_backend_app_services_auth_service_get_current_user", "callee": "debug", "is_member_call": true, "source_file": "backend/app/services/auth_service.py", "source_location": "L373", "receiver": "logger", "_python_receiver_shadowed": true}, {"caller_nid": "$graphify-root$_backend_app_services_auth_service_get_current_user", "callee": "get", "is_member_call": true, "source_file": "backend/app/services/auth_service.py", "source_location": "L378", "receiver": "payload", "_python_receiver_shadowed": true}, {"caller_nid": "$graphify-root$_backend_app_services_auth_service_get_current_user", "callee": "debug", "is_member_call": true, "source_file": "backend/app/services/auth_service.py", "source_location": "L379", "receiver": "logger", "_python_receiver_shadowed": true}, {"caller_nid": "$graphify-root$_backend_app_services_auth_service_get_current_user", "callee": "debug", "is_member_call": true, "source_file": "backend/app/services/auth_service.py", "source_location": "L381", "receiver": "logger", "_python_receiver_shadowed": true}, {"caller_nid": "$graphify-root$_backend_app_services_auth_service_get_current_user", "callee": "first", "is_member_call": true, "source_file": "backend/app/services/auth_service.py", "source_location": "L384", "receiver": null, "_python_receiver_shadowed": true}, {"caller_nid": "$graphify-root$_backend_app_services_auth_service_get_current_user", "callee": "filter", "is_member_call": true, "source_file": "backend/app/services/auth_service.py", "source_location": "L384", "receiver": null, "_python_receiver_shadowed": true}, {"caller_nid": "$graphify-root$_backend_app_services_auth_service_get_current_user", "callee": "query", "is_member_call": true, "source_file": "backend/app/services/auth_service.py", "source_location": "L384", "receiver": "db", "_python_receiver_shadowed": true, "receiver_type": "Session"}, {"caller_nid": "$graphify-root$_backend_app_services_auth_service_get_current_user", "callee": "User", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "backend/app/services/auth_service.py", "source_location": "L384"}, {"caller_nid": "$graphify-root$_backend_app_services_auth_service_get_current_user", "callee": "debug", "is_member_call": true, "source_file": "backend/app/services/auth_service.py", "source_location": "L385", "receiver": "logger", "_python_receiver_shadowed": true}, {"caller_nid": "$graphify-root$_backend_app_services_auth_service_get_current_user", "callee": "first", "is_member_call": true, "source_file": "backend/app/services/auth_service.py", "source_location": "L395", "receiver": null, "_python_receiver_shadowed": true}, {"caller_nid": "$graphify-root$_backend_app_services_auth_service_get_current_user", "callee": "filter", "is_member_call": true, "source_file": "backend/app/services/auth_service.py", "source_location": "L395", "receiver": null, "_python_receiver_shadowed": true}, {"caller_nid": "$graphify-root$_backend_app_services_auth_service_get_current_user", "callee": "query", "is_member_call": true, "source_file": "backend/app/services/auth_service.py", "source_location": "L395", "receiver": "db", "_python_receiver_shadowed": true, "receiver_type": "Session"}, {"caller_nid": "$graphify-root$_backend_app_services_auth_service_get_current_user", "callee": "UserToken", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "backend/app/services/auth_service.py", "source_location": "L395"}, {"caller_nid": "$graphify-root$_backend_app_services_auth_service_get_current_user", "callee": "get", "is_member_call": true, "source_file": "backend/app/services/auth_service.py", "source_location": "L397", "receiver": "payload", "_python_receiver_shadowed": true}, {"caller_nid": "$graphify-root$_backend_app_services_auth_service_logout", "callee": "first", "is_member_call": true, "source_file": "backend/app/services/auth_service.py", "source_location": "L413", "receiver": null, "_python_receiver_shadowed": true}, {"caller_nid": "$graphify-root$_backend_app_services_auth_service_logout", "callee": "filter", "is_member_call": true, "source_file": "backend/app/services/auth_service.py", "source_location": "L413", "receiver": null, "_python_receiver_shadowed": true}, {"caller_nid": "$graphify-root$_backend_app_services_auth_service_logout", "callee": "query", "is_member_call": true, "source_file": "backend/app/services/auth_service.py", "source_location": "L413", "receiver": "db", "_python_receiver_shadowed": true, "receiver_type": "Session"}, {"caller_nid": "$graphify-root$_backend_app_services_auth_service_logout", "callee": "UserToken", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "backend/app/services/auth_service.py", "source_location": "L413"}, {"caller_nid": "$graphify-root$_backend_app_services_auth_service_logout", "callee": "commit", "is_member_call": true, "source_file": "backend/app/services/auth_service.py", "source_location": "L421", "receiver": "db", "_python_receiver_shadowed": true, "receiver_type": "Session"}, {"caller_nid": "$graphify-root$_backend_app_services_auth_service_get_decrypted_tms_token", "callee": "first", "is_member_call": true, "source_file": "backend/app/services/auth_service.py", "source_location": "L431", "receiver": null, "_python_receiver_shadowed": true}, {"caller_nid": "$graphify-root$_backend_app_services_auth_service_get_decrypted_tms_token", "callee": "filter", "is_member_call": true, "source_file": "backend/app/services/auth_service.py", "source_location": "L431", "receiver": null, "_python_receiver_shadowed": true}, {"caller_nid": "$graphify-root$_backend_app_services_auth_service_get_decrypted_tms_token", "callee": "query", "is_member_call": true, "source_file": "backend/app/services/auth_service.py", "source_location": "L431", "receiver": "db", "_python_receiver_shadowed": true, "receiver_type": "Session"}, {"caller_nid": "$graphify-root$_backend_app_services_auth_service_get_decrypted_tms_token", "callee": "UserToken", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "backend/app/services/auth_service.py", "source_location": "L431"}, {"caller_nid": "$graphify-root$_backend_app_services_auth_service_get_decrypted_tms_token", "callee": "decrypt_token", "is_member_call": false, "source_file": "backend/app/services/auth_service.py", "source_location": "L437", "receiver": null}, {"caller_nid": "$graphify-root$_backend_app_services_auth_service_save_tms_creds", "callee": "encrypt_token", "is_member_call": false, "source_file": "backend/app/services/auth_service.py", "source_location": "L446", "receiver": null}, {"caller_nid": "$graphify-root$_backend_app_services_auth_service_save_tms_creds", "callee": "dumps", "is_member_call": true, "source_file": "backend/app/services/auth_service.py", "source_location": "L446", "receiver": "json", "_python_receiver_shadowed": true}, {"caller_nid": "$graphify-root$_backend_app_services_auth_service_save_tms_creds", "callee": "first", "is_member_call": true, "source_file": "backend/app/services/auth_service.py", "source_location": "L447", "receiver": null, "_python_receiver_shadowed": true}, {"caller_nid": "$graphify-root$_backend_app_services_auth_service_save_tms_creds", "callee": "filter", "is_member_call": true, "source_file": "backend/app/services/auth_service.py", "source_location": "L447", "receiver": null, "_python_receiver_shadowed": true}, {"caller_nid": "$graphify-root$_backend_app_services_auth_service_save_tms_creds", "callee": "query", "is_member_call": true, "source_file": "backend/app/services/auth_service.py", "source_location": "L447", "receiver": "db", "_python_receiver_shadowed": true, "receiver_type": "Session"}, {"caller_nid": "$graphify-root$_backend_app_services_auth_service_save_tms_creds", "callee": "TmsCreds", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "backend/app/services/auth_service.py", "source_location": "L447"}, {"caller_nid": "$graphify-root$_backend_app_services_auth_service_save_tms_creds", "callee": "utcnow", "is_member_call": true, "source_file": "backend/app/services/auth_service.py", "source_location": "L450", "receiver": "datetime", "_python_receiver_shadowed": true}, {"caller_nid": "$graphify-root$_backend_app_services_auth_service_save_tms_creds", "callee": "add", "is_member_call": true, "source_file": "backend/app/services/auth_service.py", "source_location": "L452", "receiver": "db", "_python_receiver_shadowed": true, "receiver_type": "Session"}, {"caller_nid": "$graphify-root$_backend_app_services_auth_service_save_tms_creds", "callee": "TmsCreds", "is_member_call": false, "source_file": "backend/app/services/auth_service.py", "source_location": "L452", "receiver": null}, {"caller_nid": "$graphify-root$_backend_app_services_auth_service_save_tms_creds", "callee": "commit", "is_member_call": true, "source_file": "backend/app/services/auth_service.py", "source_location": "L453", "receiver": "db", "_python_receiver_shadowed": true, "receiver_type": "Session"}, {"caller_nid": "$graphify-root$_backend_app_services_auth_service_get_decrypted_tms_creds", "callee": "first", "is_member_call": true, "source_file": "backend/app/services/auth_service.py", "source_location": "L459", "receiver": null, "_python_receiver_shadowed": true}, {"caller_nid": "$graphify-root$_backend_app_services_auth_service_get_decrypted_tms_creds", "callee": "filter", "is_member_call": true, "source_file": "backend/app/services/auth_service.py", "source_location": "L459", "receiver": null, "_python_receiver_shadowed": true}, {"caller_nid": "$graphify-root$_backend_app_services_auth_service_get_decrypted_tms_creds", "callee": "query", "is_member_call": true, "source_file": "backend/app/services/auth_service.py", "source_location": "L459", "receiver": "db", "_python_receiver_shadowed": true, "receiver_type": "Session"}, {"caller_nid": "$graphify-root$_backend_app_services_auth_service_get_decrypted_tms_creds", "callee": "TmsCreds", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "backend/app/services/auth_service.py", "source_location": "L459"}, {"caller_nid": "$graphify-root$_backend_app_services_auth_service_get_decrypted_tms_creds", "callee": "loads", "is_member_call": true, "source_file": "backend/app/services/auth_service.py", "source_location": "L463", "receiver": "json", "_python_receiver_shadowed": true}, {"caller_nid": "$graphify-root$_backend_app_services_auth_service_get_decrypted_tms_creds", "callee": "decrypt_token", "is_member_call": false, "source_file": "backend/app/services/auth_service.py", "source_location": "L463", "receiver": null}, {"caller_nid": "$graphify-root$_backend_app_services_auth_service_update_tms_token", "callee": "first", "is_member_call": true, "source_file": "backend/app/services/auth_service.py", "source_location": "L470", "receiver": null, "_python_receiver_shadowed": true}, {"caller_nid": "$graphify-root$_backend_app_services_auth_service_update_tms_token", "callee": "filter", "is_member_call": true, "source_file": "backend/app/services/auth_service.py", "source_location": "L470", "receiver": null, "_python_receiver_shadowed": true}, {"caller_nid": "$graphify-root$_backend_app_services_auth_service_update_tms_token", "callee": "query", "is_member_call": true, "source_file": "backend/app/services/auth_service.py", "source_location": "L470", "receiver": "db", "_python_receiver_shadowed": true, "receiver_type": "Session"}, {"caller_nid": "$graphify-root$_backend_app_services_auth_service_update_tms_token", "callee": "UserToken", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "backend/app/services/auth_service.py", "source_location": "L470"}, {"caller_nid": "$graphify-root$_backend_app_services_auth_service_update_tms_token", "callee": "UserToken", "is_member_call": false, "source_file": "backend/app/services/auth_service.py", "source_location": "L472", "receiver": null}, {"caller_nid": "$graphify-root$_backend_app_services_auth_service_update_tms_token", "callee": "encrypt_token", "is_member_call": false, "source_file": "backend/app/services/auth_service.py", "source_location": "L472", "receiver": null}, {"caller_nid": "$graphify-root$_backend_app_services_auth_service_update_tms_token", "callee": "utcnow", "is_member_call": true, "source_file": "backend/app/services/auth_service.py", "source_location": "L472", "receiver": "datetime", "_python_receiver_shadowed": true}, {"caller_nid": "$graphify-root$_backend_app_services_auth_service_update_tms_token", "callee": "add", "is_member_call": true, "source_file": "backend/app/services/auth_service.py", "source_location": "L473", "receiver": "db", "_python_receiver_shadowed": true, "receiver_type": "Session"}, {"caller_nid": "$graphify-root$_backend_app_services_auth_service_update_tms_token", "callee": "encrypt_token", "is_member_call": false, "source_file": "backend/app/services/auth_service.py", "source_location": "L475", "receiver": null}, {"caller_nid": "$graphify-root$_backend_app_services_auth_service_update_tms_token", "callee": "utcnow", "is_member_call": true, "source_file": "backend/app/services/auth_service.py", "source_location": "L476", "receiver": "datetime", "_python_receiver_shadowed": true}, {"caller_nid": "$graphify-root$_backend_app_services_auth_service_update_tms_token", "callee": "commit", "is_member_call": true, "source_file": "backend/app/services/auth_service.py", "source_location": "L477", "receiver": "db", "_python_receiver_shadowed": true, "receiver_type": "Session"}, {"caller_nid": "$graphify-root$_backend_app_services_auth_service_auto_relogin", "callee": "warning", "is_member_call": true, "source_file": "backend/app/services/auth_service.py", "source_location": "L489", "receiver": "logger", "_python_receiver_shadowed": true}, {"caller_nid": "$graphify-root$_backend_app_services_auth_service_auto_relogin", "callee": "activity_logger", "is_member_call": false, "source_file": "backend/app/services/auth_service.py", "source_location": "L490", "receiver": null}, {"caller_nid": "$graphify-root$_backend_app_services_auth_service_auto_relogin", "callee": "login_and_get_token", "is_member_call": false, "source_file": "backend/app/services/auth_service.py", "source_location": "L499", "receiver": null}, {"caller_nid": "$graphify-root$_backend_app_services_auth_service_auto_relogin", "callee": "info", "is_member_call": true, "source_file": "backend/app/services/auth_service.py", "source_location": "L502", "receiver": "logger", "_python_receiver_shadowed": true}, {"caller_nid": "$graphify-root$_backend_app_services_auth_service_auto_relogin", "callee": "activity_logger", "is_member_call": false, "source_file": "backend/app/services/auth_service.py", "source_location": "L503", "receiver": null}, {"caller_nid": "$graphify-root$_backend_app_services_auth_service_auto_relogin", "callee": "warning", "is_member_call": true, "source_file": "backend/app/services/auth_service.py", "source_location": "L509", "receiver": "logger", "_python_receiver_shadowed": true}, {"caller_nid": "$graphify-root$_backend_app_services_auth_service_auto_relogin", "callee": "activity_logger", "is_member_call": false, "source_file": "backend/app/services/auth_service.py", "source_location": "L510", "receiver": null}], "_cached_target_files": ["$graphify-root$/backend/app/core/config.py", "$graphify-root$/backend/app/db/models.py", "$graphify-root$/backend/app/services/encryption.py", "$graphify-root$/backend/app/services/jwt.py"]}