Browse Source

made it impossible to log twice with the same account

galo 1 year ago
parent
commit
192588420e
4 changed files with 22 additions and 12 deletions
  1. 13 3
      Auth.gd
  2. 3 2
      Login.gd
  3. 4 4
      loginnetcode.gd
  4. 2 3
      main.tscn

+ 13 - 3
Auth.gd

@@ -17,10 +17,15 @@ func _ready():
 	custom_multiplayer.set_root_node(self)
 	custom_multiplayer.set_network_peer(net)
 	
-#	net.connect("peer_disconnected",self,"disc")
+	net.connect("peer_disconnected",self,"disc")
 	net.connect("peer_connected",self,"conn")
 	pass # Replace with function body.
 
+func disc(id):
+	print('removing token from peer: ' + str(id))
+	var db = get_parent().get_node('PostgreSQL')
+	db.Delete('validtokens_database',"ip", "'"+str(id)+"'")
+
 func _process(_delta):
 	custom_multiplayer.poll()
 
@@ -62,12 +67,17 @@ remote func password_confirmation(username,password, salt):
 	print(salt)
 	print(password)
 	print(password_db)
+	var token_query = db.Read('validtokens_database',"username", "'"+username+"'")
+	print('***token query is:')
+	print(token_query)
+	print('***token query')
+	if token_query != []: message = 'user is already logged in'
 	if password != password_db: message = 'password or username is wrong'
 	rpc_id(api.get_rpc_sender_id(), 'update_status', message)
 	if message != 'login...': return
-	var ip = api.get_peer_address(api.get_rpc_sender_id())
+	var ip = api.get_rpc_sender_id()
 	print(ip)
-	var token = ( username+ip+str(OS.get_unix_time())).sha256_text()
+	var token = ( str(username)+str(ip)+str(OS.get_unix_time())).sha256_text()
 	db.Delete('validtokens_database',"username", "'"+username+"'")
 	db.Create('validtokens_database',['username','token','ip','creation_date'],[username, token, ip, str(OS.get_unix_time())])
 	rpc_id(api.get_rpc_sender_id(), '_on_servertoken', token, username)

+ 3 - 2
Login.gd

@@ -78,8 +78,9 @@ var port =''
 func _on_login_button_down():
 	var username = $loginscreen/VBoxContainer/HBoxContainer/LineEdit2.get_text()
 	get_parent().get_node("Loginetcode").Request_Salt(username)
-	yield(get_parent().get_node("Loginetcode"),'salt')
-	var salt = get_parent().get_node("Loginetcode").salt_buffer
+	var salt = yield(get_parent().get_node("Loginetcode"),'salt')
+#	var salt = get_parent().get_node("Loginetcode").salt_buffer
+	print('the salt is: ')
 	print(salt)
 	var password = $loginscreen/VBoxContainer/HBoxContainer2/LineEdit2.get_text()
 	if password == null or salt == null: return

+ 4 - 4
loginnetcode.gd

@@ -39,13 +39,13 @@ func Request_Salt(username):
 func Login_Salt(username, password, salt):
 	rpc_id(1,"password_confirmation", username, password, salt)
 
-signal salt
+signal salt(arg)
 signal login_confirmed
-var salt_buffer = ''
+#var salt_buffer = ''
 
 remote func salt_arrived(salt):
-	emit_signal("salt")
-	salt_buffer = salt
+	emit_signal("salt", salt)
+#	salt_buffer = salt
 
 remote func update_status(message):
 	get_parent().get_node('LoginUI/register/VBoxContainer/Label').text = message

+ 2 - 3
main.tscn

@@ -48,7 +48,7 @@ render_target_v_flip = true
 [node name="Goblin" type="AnimatedSprite" parent="Textures/Goblin1"]
 modulate = Color( 0, 0.811765, 1, 1 )
 frames = SubResource( 5 )
-frame = 3
+frame = 1
 playing = true
 offset = Vector2( 32, 32 )
 
@@ -73,7 +73,7 @@ render_target_v_flip = true
 [node name="Goblin" type="AnimatedSprite" parent="Textures/Goblin3"]
 modulate = Color( 1, 0, 0, 1 )
 frames = SubResource( 5 )
-frame = 2
+frame = 3
 speed_scale = 1.2
 playing = true
 offset = Vector2( 32, 32 )
@@ -87,7 +87,6 @@ render_target_v_flip = true
 [node name="Goblin" type="AnimatedSprite" parent="Textures/Goblin4"]
 modulate = Color( 1, 0, 0.984314, 1 )
 frames = SubResource( 5 )
-frame = 1
 speed_scale = 0.9
 playing = true
 offset = Vector2( 32, 32 )