Browse Source

added token based login/registration system

galo 1 year ago
parent
commit
dcaace6389
6 changed files with 30 additions and 6 deletions
  1. 2 1
      Auth.gd
  2. 5 0
      Client.gd
  3. 2 0
      Database.gd
  4. 13 1
      Server.gd
  5. 6 1
      loginnetcode.gd
  6. 2 3
      main.tscn

+ 2 - 1
Auth.gd

@@ -68,6 +68,7 @@ remote func password_confirmation(username,password, salt):
 	var ip = api.get_peer_address(api.get_rpc_sender_id())
 	print(ip)
 	var token = ( username+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)
+	rpc_id(api.get_rpc_sender_id(), '_on_servertoken', token, username)
 	print(message)

+ 5 - 0
Client.gd

@@ -24,6 +24,11 @@ func _process(_delta):
 remote func ping():
 	print('messaged received from server')
 
+remote func tokerequest():
+	var tk = get_parent().get_node('Loginetcode').token
+	var username = get_parent().get_node('Loginetcode').username_server
+	rpc_id(1,'tokenreply', tk, username)
+
 func _On_Connection_Failed():
 	print("Failed to connect to game server")
 

+ 2 - 0
Database.gd

@@ -89,6 +89,8 @@ func _executer() -> void:
 		creation_date varchar(64) not null
 	);
 	""")
+#	print('readitng data test')
+#	print(Read('validtokens_database','username',"'22222222'"))
 #	Create('niggers',["crime","executiondate"],["'das rite'","'2017-06-01'"])
 #	Update('niggers',"executiondate","'2019-08-07'" , "crime", "'das rite'")
 #	print(Read('niggers',"crime","'das rite'"))

+ 13 - 1
Server.gd

@@ -27,9 +27,21 @@ func conn(id):
 	print('client connected, id: ' + str(id))
 	yield(get_tree(),"physics_frame")
 	rpc_id(0,'ping')
+	rpc_id(0,'tokerequest')
+
+remote func tokenreply(token, username):
+	var db = get_parent().get_node('PostgreSQL')
+	var data = db.Read('validtokens_database','username',"'"+username+"'")
+	var message = 'token validated'
+	if data == []:
+		message = "no token found"
+	if data[0][2] != token:
+		message = "token is invalid"
+	print('check tokens....')
+	print(data)
 	print('clients connected: ' + str(custom_multiplayer.get_network_connected_peers().size()))
 	var instance = playerphsyics.instance()
-	instance.name = str(id)
+	instance.name = str(api.get_rpc_sender_id())
 	$players.add_child(instance)
 
 remote func connected_peer():

+ 6 - 1
loginnetcode.gd

@@ -51,7 +51,12 @@ remote func update_status(message):
 	get_parent().get_node('LoginUI/register/VBoxContainer/Label').text = message
 	get_parent().get_node('LoginUI/loginscreen/VBoxContainer/Label2').text = message
 
-remote func _on_servertoken(token):
+var token = ''
+var username_server = ''
+
+remote func _on_servertoken(token, username):
 	print('token arrived: ')
 	get_parent().get_node("LoginUI").emit_signal("login_confimed")
 	print(token)
+	token = token
+	username_server = username

+ 2 - 3
main.tscn

@@ -58,7 +58,6 @@ render_target_v_flip = true
 
 [node name="Goblin" type="AnimatedSprite" parent="Textures/Goblin2"]
 frames = SubResource( 5 )
-frame = 2
 speed_scale = 0.8
 playing = true
 offset = Vector2( 32, 32 )
@@ -72,7 +71,7 @@ render_target_v_flip = true
 [node name="Goblin" type="AnimatedSprite" parent="Textures/Goblin3"]
 modulate = Color( 1, 0, 0, 1 )
 frames = SubResource( 5 )
-frame = 1
+frame = 3
 speed_scale = 1.2
 playing = true
 offset = Vector2( 32, 32 )
@@ -86,7 +85,7 @@ render_target_v_flip = true
 [node name="Goblin" type="AnimatedSprite" parent="Textures/Goblin4"]
 modulate = Color( 1, 0, 0.984314, 1 )
 frames = SubResource( 5 )
-frame = 2
+frame = 1
 speed_scale = 0.9
 playing = true
 offset = Vector2( 32, 32 )