{"nodes": [{"id": "$graphify-root$_backend_app_services_internal_auth_py", "label": "internal_auth.py", "file_type": "code", "source_file": "backend/app/services/internal_auth.py", "source_location": "L1"}, {"id": "$graphify-root$_backend_app_services_internal_auth_hash_password", "label": "hash_password()", "file_type": "code", "source_file": "backend/app/services/internal_auth.py", "source_location": "L9", "_callable": true}, {"id": "$graphify-root$_backend_app_services_internal_auth_verify_password", "label": "verify_password()", "file_type": "code", "source_file": "backend/app/services/internal_auth.py", "source_location": "L14", "_callable": true}, {"id": "$graphify-root$_backend_app_services_internal_auth_authenticate_internal_user", "label": "authenticate_internal_user()", "file_type": "code", "source_file": "backend/app/services/internal_auth.py", "source_location": "L19", "_callable": true}, {"id": "session", "label": "Session", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/backend/app/services/internal_auth.py"}, {"id": "user", "label": "User", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/backend/app/services/internal_auth.py"}, {"id": "$graphify-root$_backend_app_services_internal_auth_create_internal_user", "label": "create_internal_user()", "file_type": "code", "source_file": "backend/app/services/internal_auth.py", "source_location": "L34", "_callable": true}, {"id": "$graphify-root$_backend_app_services_internal_auth_rationale_1", "label": "Internal authentication (non-TMS users) \u2014 username/password dengan bcrypt.", "file_type": "rationale", "source_file": "backend/app/services/internal_auth.py", "source_location": "L1"}, {"id": "$graphify-root$_backend_app_services_internal_auth_rationale_10", "label": "Hash password dengan bcrypt.", "file_type": "rationale", "source_file": "backend/app/services/internal_auth.py", "source_location": "L10"}, {"id": "$graphify-root$_backend_app_services_internal_auth_rationale_15", "label": "Verify password terhadap hash.", "file_type": "rationale", "source_file": "backend/app/services/internal_auth.py", "source_location": "L15"}, {"id": "$graphify-root$_backend_app_services_internal_auth_rationale_20", "label": "Authenticate user internal (auth_type=internal). Returns User object jika\u2026", "file_type": "rationale", "source_file": "backend/app/services/internal_auth.py", "source_location": "L20"}, {"id": "$graphify-root$_backend_app_services_internal_auth_rationale_41", "label": "Create user internal baru dengan password hash. Raises ValueError jika username\u2026", "file_type": "rationale", "source_file": "backend/app/services/internal_auth.py", "source_location": "L41"}], "edges": [{"source": "$graphify-root$_backend_app_services_internal_auth_py", "target": "passlib_context", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/app/services/internal_auth.py", "source_location": "L2", "weight": 1.0, "_python_import_module": "passlib.context", "_python_import_bindings": [["CryptContext", "CryptContext"]]}, {"source": "$graphify-root$_backend_app_services_internal_auth_py", "target": "sqlalchemy_orm", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/app/services/internal_auth.py", "source_location": "L3", "weight": 1.0, "_python_import_module": "sqlalchemy.orm", "_python_import_bindings": [["Session", "Session"]]}, {"source": "$graphify-root$_backend_app_services_internal_auth_py", "target": "$graphify-root$_backend_app_db_models_py", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/app/services/internal_auth.py", "source_location": "L4", "weight": 1.0, "_python_import_module": "app.db.models", "_python_import_bindings": [["User", "User"]], "target_file": "$graphify-root$/backend/app/db/models.py"}, {"source": "$graphify-root$_backend_app_services_internal_auth_py", "target": "$graphify-root$_backend_app_services_internal_auth_hash_password", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/services/internal_auth.py", "source_location": "L9", "weight": 1.0}, {"source": "$graphify-root$_backend_app_services_internal_auth_py", "target": "$graphify-root$_backend_app_services_internal_auth_verify_password", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/services/internal_auth.py", "source_location": "L14", "weight": 1.0}, {"source": "$graphify-root$_backend_app_services_internal_auth_py", "target": "$graphify-root$_backend_app_services_internal_auth_authenticate_internal_user", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/services/internal_auth.py", "source_location": "L19", "weight": 1.0}, {"source": "$graphify-root$_backend_app_services_internal_auth_authenticate_internal_user", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "backend/app/services/internal_auth.py", "source_location": "L19", "weight": 1.0}, {"source": "$graphify-root$_backend_app_services_internal_auth_authenticate_internal_user", "target": "user", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "backend/app/services/internal_auth.py", "source_location": "L19", "weight": 1.0}, {"source": "$graphify-root$_backend_app_services_internal_auth_py", "target": "$graphify-root$_backend_app_services_internal_auth_create_internal_user", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/services/internal_auth.py", "source_location": "L34", "weight": 1.0}, {"source": "$graphify-root$_backend_app_services_internal_auth_create_internal_user", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "backend/app/services/internal_auth.py", "source_location": "L34", "weight": 1.0}, {"source": "$graphify-root$_backend_app_services_internal_auth_create_internal_user", "target": "user", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "backend/app/services/internal_auth.py", "source_location": "L34", "weight": 1.0}, {"source": "$graphify-root$_backend_app_services_internal_auth_authenticate_internal_user", "target": "$graphify-root$_backend_app_services_internal_auth_verify_password", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/app/services/internal_auth.py", "source_location": "L27", "weight": 1.0}, {"source": "$graphify-root$_backend_app_services_internal_auth_create_internal_user", "target": "$graphify-root$_backend_app_services_internal_auth_hash_password", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/app/services/internal_auth.py", "source_location": "L54", "weight": 1.0}, {"source": "$graphify-root$_backend_app_services_internal_auth_rationale_1", "target": "$graphify-root$_backend_app_services_internal_auth_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/app/services/internal_auth.py", "source_location": "L1", "weight": 1.0}, {"source": "$graphify-root$_backend_app_services_internal_auth_rationale_10", "target": "$graphify-root$_backend_app_services_internal_auth_hash_password", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/app/services/internal_auth.py", "source_location": "L10", "weight": 1.0}, {"source": "$graphify-root$_backend_app_services_internal_auth_rationale_15", "target": "$graphify-root$_backend_app_services_internal_auth_verify_password", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/app/services/internal_auth.py", "source_location": "L15", "weight": 1.0}, {"source": "$graphify-root$_backend_app_services_internal_auth_rationale_20", "target": "$graphify-root$_backend_app_services_internal_auth_authenticate_internal_user", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/app/services/internal_auth.py", "source_location": "L20", "weight": 1.0}, {"source": "$graphify-root$_backend_app_services_internal_auth_rationale_41", "target": "$graphify-root$_backend_app_services_internal_auth_create_internal_user", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/app/services/internal_auth.py", "source_location": "L41", "weight": 1.0}], "raw_calls": [{"caller_nid": "$graphify-root$_backend_app_services_internal_auth_hash_password", "callee": "hash", "is_member_call": true, "source_file": "backend/app/services/internal_auth.py", "source_location": "L11", "receiver": "pwd_context", "_python_receiver_shadowed": true}, {"caller_nid": "$graphify-root$_backend_app_services_internal_auth_verify_password", "callee": "verify", "is_member_call": true, "source_file": "backend/app/services/internal_auth.py", "source_location": "L16", "receiver": "pwd_context", "_python_receiver_shadowed": true}, {"caller_nid": "$graphify-root$_backend_app_services_internal_auth_authenticate_internal_user", "callee": "first", "is_member_call": true, "source_file": "backend/app/services/internal_auth.py", "source_location": "L24", "receiver": null, "_python_receiver_shadowed": true}, {"caller_nid": "$graphify-root$_backend_app_services_internal_auth_authenticate_internal_user", "callee": "filter", "is_member_call": true, "source_file": "backend/app/services/internal_auth.py", "source_location": "L24", "receiver": null, "_python_receiver_shadowed": true}, {"caller_nid": "$graphify-root$_backend_app_services_internal_auth_authenticate_internal_user", "callee": "query", "is_member_call": true, "source_file": "backend/app/services/internal_auth.py", "source_location": "L24", "receiver": "db", "_python_receiver_shadowed": true, "receiver_type": "Session"}, {"caller_nid": "$graphify-root$_backend_app_services_internal_auth_authenticate_internal_user", "callee": "User", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "backend/app/services/internal_auth.py", "source_location": "L24"}, {"caller_nid": "$graphify-root$_backend_app_services_internal_auth_create_internal_user", "callee": "first", "is_member_call": true, "source_file": "backend/app/services/internal_auth.py", "source_location": "L45", "receiver": null, "_python_receiver_shadowed": true}, {"caller_nid": "$graphify-root$_backend_app_services_internal_auth_create_internal_user", "callee": "filter", "is_member_call": true, "source_file": "backend/app/services/internal_auth.py", "source_location": "L45", "receiver": null, "_python_receiver_shadowed": true}, {"caller_nid": "$graphify-root$_backend_app_services_internal_auth_create_internal_user", "callee": "query", "is_member_call": true, "source_file": "backend/app/services/internal_auth.py", "source_location": "L45", "receiver": "db", "_python_receiver_shadowed": true, "receiver_type": "Session"}, {"caller_nid": "$graphify-root$_backend_app_services_internal_auth_create_internal_user", "callee": "User", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "backend/app/services/internal_auth.py", "source_location": "L45"}, {"caller_nid": "$graphify-root$_backend_app_services_internal_auth_create_internal_user", "callee": "ValueError", "is_member_call": false, "source_file": "backend/app/services/internal_auth.py", "source_location": "L47", "receiver": null}, {"caller_nid": "$graphify-root$_backend_app_services_internal_auth_create_internal_user", "callee": "User", "is_member_call": false, "source_file": "backend/app/services/internal_auth.py", "source_location": "L49", "receiver": null, "via_stub": true}, {"caller_nid": "$graphify-root$_backend_app_services_internal_auth_create_internal_user", "callee": "add", "is_member_call": true, "source_file": "backend/app/services/internal_auth.py", "source_location": "L57", "receiver": "db", "_python_receiver_shadowed": true, "receiver_type": "Session"}, {"caller_nid": "$graphify-root$_backend_app_services_internal_auth_create_internal_user", "callee": "commit", "is_member_call": true, "source_file": "backend/app/services/internal_auth.py", "source_location": "L58", "receiver": "db", "_python_receiver_shadowed": true, "receiver_type": "Session"}, {"caller_nid": "$graphify-root$_backend_app_services_internal_auth_create_internal_user", "callee": "refresh", "is_member_call": true, "source_file": "backend/app/services/internal_auth.py", "source_location": "L59", "receiver": "db", "_python_receiver_shadowed": true, "receiver_type": "Session"}], "_cached_target_files": ["$graphify-root$/backend/app/db/models.py"]}