-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
1a5fdf7
commit 864193a
Showing
1,277 changed files
with
96,479 additions
and
3 deletions.
There are no files selected for viewing
Binary file not shown.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
192 changes: 192 additions & 0 deletions
192
DarkFlow/Assets/Tools/Mirror/Authenticators/BasicAuthenticator.cs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,192 @@ | ||
using System.Collections; | ||
using System.Collections.Generic; | ||
using UnityEngine; | ||
|
||
namespace Mirror.Authenticators | ||
{ | ||
[AddComponentMenu("Network/ Authenticators/Basic Authenticator")] | ||
[HelpURL("https://mirror-networking.gitbook.io/docs/components/network-authenticators/basic-authenticator")] | ||
public class BasicAuthenticator : NetworkAuthenticator | ||
{ | ||
[Header("Server Credentials")] | ||
public string serverUsername; | ||
public string serverPassword; | ||
|
||
[Header("Client Credentials")] | ||
public string username; | ||
public string password; | ||
|
||
readonly HashSet<NetworkConnection> connectionsPendingDisconnect = new HashSet<NetworkConnection>(); | ||
|
||
#region Messages | ||
|
||
public struct AuthRequestMessage : NetworkMessage | ||
{ | ||
// use whatever credentials make sense for your game | ||
// for example, you might want to pass the accessToken if using oauth | ||
public string authUsername; | ||
public string authPassword; | ||
} | ||
|
||
public struct AuthResponseMessage : NetworkMessage | ||
{ | ||
public byte code; | ||
public string message; | ||
} | ||
|
||
#endregion | ||
|
||
#region Server | ||
|
||
/// <summary> | ||
/// Called on server from StartServer to initialize the Authenticator | ||
/// <para>Server message handlers should be registered in this method.</para> | ||
/// </summary> | ||
public override void OnStartServer() | ||
{ | ||
// register a handler for the authentication request we expect from client | ||
NetworkServer.RegisterHandler<AuthRequestMessage>(OnAuthRequestMessage, false); | ||
} | ||
|
||
/// <summary> | ||
/// Called on server from StopServer to reset the Authenticator | ||
/// <para>Server message handlers should be unregistered in this method.</para> | ||
/// </summary> | ||
public override void OnStopServer() | ||
{ | ||
// unregister the handler for the authentication request | ||
NetworkServer.UnregisterHandler<AuthRequestMessage>(); | ||
} | ||
|
||
/// <summary> | ||
/// Called on server from OnServerConnectInternal when a client needs to authenticate | ||
/// </summary> | ||
/// <param name="conn">Connection to client.</param> | ||
public override void OnServerAuthenticate(NetworkConnectionToClient conn) | ||
{ | ||
// do nothing...wait for AuthRequestMessage from client | ||
} | ||
|
||
/// <summary> | ||
/// Called on server when the client's AuthRequestMessage arrives | ||
/// </summary> | ||
/// <param name="conn">Connection to client.</param> | ||
/// <param name="msg">The message payload</param> | ||
public void OnAuthRequestMessage(NetworkConnectionToClient conn, AuthRequestMessage msg) | ||
{ | ||
//Debug.Log($"Authentication Request: {msg.authUsername} {msg.authPassword}"); | ||
|
||
if (connectionsPendingDisconnect.Contains(conn)) return; | ||
|
||
// check the credentials by calling your web server, database table, playfab api, or any method appropriate. | ||
if (msg.authUsername == serverUsername && msg.authPassword == serverPassword) | ||
{ | ||
// create and send msg to client so it knows to proceed | ||
AuthResponseMessage authResponseMessage = new AuthResponseMessage | ||
{ | ||
code = 100, | ||
message = "Success" | ||
}; | ||
|
||
conn.Send(authResponseMessage); | ||
|
||
// Accept the successful authentication | ||
ServerAccept(conn); | ||
} | ||
else | ||
{ | ||
connectionsPendingDisconnect.Add(conn); | ||
|
||
// create and send msg to client so it knows to disconnect | ||
AuthResponseMessage authResponseMessage = new AuthResponseMessage | ||
{ | ||
code = 200, | ||
message = "Invalid Credentials" | ||
}; | ||
|
||
conn.Send(authResponseMessage); | ||
|
||
// must set NetworkConnection isAuthenticated = false | ||
conn.isAuthenticated = false; | ||
|
||
// disconnect the client after 1 second so that response message gets delivered | ||
StartCoroutine(DelayedDisconnect(conn, 1f)); | ||
} | ||
} | ||
|
||
IEnumerator DelayedDisconnect(NetworkConnectionToClient conn, float waitTime) | ||
{ | ||
yield return new WaitForSeconds(waitTime); | ||
|
||
// Reject the unsuccessful authentication | ||
ServerReject(conn); | ||
|
||
yield return null; | ||
|
||
// remove conn from pending connections | ||
connectionsPendingDisconnect.Remove(conn); | ||
} | ||
|
||
#endregion | ||
|
||
#region Client | ||
|
||
/// <summary> | ||
/// Called on client from StartClient to initialize the Authenticator | ||
/// <para>Client message handlers should be registered in this method.</para> | ||
/// </summary> | ||
public override void OnStartClient() | ||
{ | ||
// register a handler for the authentication response we expect from server | ||
NetworkClient.RegisterHandler<AuthResponseMessage>(OnAuthResponseMessage, false); | ||
} | ||
|
||
/// <summary> | ||
/// Called on client from StopClient to reset the Authenticator | ||
/// <para>Client message handlers should be unregistered in this method.</para> | ||
/// </summary> | ||
public override void OnStopClient() | ||
{ | ||
// unregister the handler for the authentication response | ||
NetworkClient.UnregisterHandler<AuthResponseMessage>(); | ||
} | ||
|
||
/// <summary> | ||
/// Called on client from OnClientConnectInternal when a client needs to authenticate | ||
/// </summary> | ||
public override void OnClientAuthenticate() | ||
{ | ||
AuthRequestMessage authRequestMessage = new AuthRequestMessage | ||
{ | ||
authUsername = username, | ||
authPassword = password | ||
}; | ||
|
||
NetworkClient.Send(authRequestMessage); | ||
} | ||
|
||
/// <summary> | ||
/// Called on client when the server's AuthResponseMessage arrives | ||
/// </summary> | ||
/// <param name="msg">The message payload</param> | ||
public void OnAuthResponseMessage(AuthResponseMessage msg) | ||
{ | ||
if (msg.code == 100) | ||
{ | ||
//Debug.Log($"Authentication Response: {msg.message}"); | ||
|
||
// Authentication has been accepted | ||
ClientAccept(); | ||
} | ||
else | ||
{ | ||
Debug.LogError($"Authentication Response: {msg.message}"); | ||
|
||
// Authentication has been rejected | ||
ClientReject(); | ||
} | ||
} | ||
|
||
#endregion | ||
} | ||
} |
11 changes: 11 additions & 0 deletions
11
DarkFlow/Assets/Tools/Mirror/Authenticators/BasicAuthenticator.cs.meta
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
Oops, something went wrong.