fix(network): isolate auth sessions for multiple instances on same pc
This commit is contained in:
@@ -18,4 +18,3 @@ The generated code is designed to be supported Godot Engine `3.1+`.
|
||||
### Limitations
|
||||
|
||||
The code generator has __only__ been checked against the Swagger specification generated for Nakama server. YMMV.
|
||||
|
||||
|
||||
@@ -21,13 +21,19 @@ var is_guest: bool = false
|
||||
var auth_mode: AuthMode = AuthMode.GUEST
|
||||
|
||||
# Session persistence
|
||||
const SESSION_FILE := "user://auth_session.dat"
|
||||
const CREDENTIALS_FILE := "user://auth_credentials.dat"
|
||||
var SESSION_FILE := "user://auth_session.dat"
|
||||
var CREDENTIALS_FILE := "user://auth_credentials.dat"
|
||||
|
||||
# Encryption key for session storage (device-specific)
|
||||
var ENCRYPTION_KEY: String = OS.get_unique_id().sha256_text()
|
||||
|
||||
func _ready() -> void:
|
||||
# In debug mode, suffix session files with the process ID to allow multiple instances
|
||||
if OS.is_debug_build():
|
||||
var suffix = "_" + str(OS.get_process_id())
|
||||
SESSION_FILE = "user://auth_session%s.dat" % suffix
|
||||
CREDENTIALS_FILE = "user://auth_credentials%s.dat" % suffix
|
||||
|
||||
# Try to restore session on startup
|
||||
call_deferred("_try_restore_session")
|
||||
|
||||
@@ -155,6 +161,9 @@ func login_as_guest() -> bool:
|
||||
func _get_device_id() -> String:
|
||||
# Try to load saved device ID for consistent guest identity
|
||||
var id_file := "user://device_id.txt"
|
||||
if OS.is_debug_build():
|
||||
id_file = "user://device_id_%s.txt" % str(OS.get_process_id())
|
||||
|
||||
if FileAccess.file_exists(id_file):
|
||||
var file_read := FileAccess.open(id_file, FileAccess.READ)
|
||||
if file_read:
|
||||
|
||||
Reference in New Issue
Block a user