Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion Assets/FirebaseWebGL/Examples/Auth/AuthExampleHandler.cs
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ public void SignInWithFacebook() =>
public void DisplayUserInfo(string user)
{
var parsedUser = StringSerializationAPI.Deserialize(typeof(FirebaseUser), user) as FirebaseUser;
DisplayData($"Email: {parsedUser.email}, UserId: {parsedUser.uid}, EmailVerified: {parsedUser.isEmailVerified}");
DisplayData($"Email: {parsedUser.email}, UserId: {parsedUser.uid}, EmailVerified: {parsedUser.emailVerified}");
}

public void DisplayData(string data)
Expand Down
71 changes: 70 additions & 1 deletion Assets/FirebaseWebGL/Plugins/firebaseauth.jslib
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,59 @@ mergeInto(LibraryManager.library, {
window.unityInstance.SendMessage(parsedObjectName, parsedFallback, JSON.stringify(error, Object.getOwnPropertyNames(error)));
});

} catch (error) {
window.unityInstance.SendMessage(parsedObjectName, parsedFallback, JSON.stringify(error, Object.getOwnPropertyNames(error)));
},

SendEmailVerification: function(objectName, callback, fallback){
var parsedObjectName = UTF8ToString(objectName);
var parsedCallback = UTF8ToString(callback);
var parsedFallback = UTF8ToString(fallback);

try {
if(!firebase.auth().currentUser.emailVerified){
firebase.auth().currentUser.sendEmailVerification().then(function (unused) {
window.unityInstance.SendMessage(parsedObjectName, parsedCallback, "Success: SendEmailVerification");
}).catch(function (error) {
window.unityInstance.SendMessage(parsedObjectName, parsedFallback, JSON.stringify(error, Object.getOwnPropertyNames(error)));
});
}
} catch (error) {
window.unityInstance.SendMessage(parsedObjectName, parsedFallback, JSON.stringify(error, Object.getOwnPropertyNames(error)));
}
},

SendPasswordResetEmail: function (email, objectName, callback, fallback) {
var parsedEmail = UTF8ToString(email);
var parsedObjectName = UTF8ToString(objectName);
var parsedCallback = UTF8ToString(callback);
var parsedFallback = UTF8ToString(fallback);

try {

firebase.auth().sendPasswordResetEmail(parsedEmail).then(function (unused) {
window.unityInstance.SendMessage(parsedObjectName, parsedCallback, "Success: SendPasswordResetEmail for " + parsedEmail);
}).catch(function (error) {
window.unityInstance.SendMessage(parsedObjectName, parsedFallback, JSON.stringify(error, Object.getOwnPropertyNames(error)));
});

} catch (error) {
window.unityInstance.SendMessage(parsedObjectName, parsedFallback, JSON.stringify(error, Object.getOwnPropertyNames(error)));
}
},

SignOut: function(objectName, callback, fallback){
var parsedObjectName = UTF8ToString(objectName);
var parsedCallback = UTF8ToString(callback);
var parsedFallback = UTF8ToString(fallback);

try {
firebase.auth().signOut().then(function (unused) {
window.unityInstance.SendMessage(parsedObjectName, parsedCallback, "Success: SignOut");
}).catch(function (error) {
window.unityInstance.SendMessage(parsedObjectName, parsedFallback, JSON.stringify(error, Object.getOwnPropertyNames(error)));
});

} catch (error) {
window.unityInstance.SendMessage(parsedObjectName, parsedFallback, JSON.stringify(error, Object.getOwnPropertyNames(error)));
}
Expand All @@ -105,6 +158,22 @@ mergeInto(LibraryManager.library, {
window.unityInstance.SendMessage(parsedObjectName, parsedOnUserSignedOut, "User signed out");
}
});
},

}
ReloadFirebaseUser: function(objectName, callback, fallback){
var parsedObjectName = UTF8ToString(objectName);
var parsedCallback = UTF8ToString(callback);
var parsedFallback = UTF8ToString(fallback);

try {
firebase.auth().currentUser.reload().then(function (user) {
window.unityInstance.SendMessage(parsedObjectName, parsedCallback, JSON.stringify(firebase.auth().currentUser));
}).catch(function (error) {
window.unityInstance.SendMessage(parsedObjectName, parsedFallback, JSON.stringify(error, Object.getOwnPropertyNames(error)));
});

} catch (error) {
window.unityInstance.SendMessage(parsedObjectName, parsedFallback, JSON.stringify(error, Object.getOwnPropertyNames(error)));
}
},
});
42 changes: 41 additions & 1 deletion Assets/FirebaseWebGL/Scripts/FirebaseBridge/FirebaseAuth.cs
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,38 @@ public static extern void SignInWithGoogle(string objectName, string callback,
[DllImport("__Internal")]
public static extern void SignInWithFacebook(string objectName, string callback,
string fallback);


/// <summary>
/// Sends an email verification request
/// </summary>
/// <param name="objectName"> Name of the gameobject to call the callback/fallback of </param>
/// <param name="callback"> Name of the method to call when the operation was successful. Method must have signature: void Method(string output) </param>
/// <param name="fallback"> Name of the method to call when the operation was unsuccessful. Method must have signature: void Method(string output). Will return a serialized FirebaseError object </param>
[DllImport("__Internal")]
public static extern void SendEmailVerification(string objectName, string callback,
string fallback);

/// <summary>
/// Sends a password reset email
/// </summary>
/// <param name="email"> User email </param>
/// <param name="objectName"> Name of the gameobject to call the callback/fallback of </param>
/// <param name="callback"> Name of the method to call when the operation was successful. Method must have signature: void Method(string output) </param>
/// <param name="fallback"> Name of the method to call when the operation was unsuccessful. Method must have signature: void Method(string output). Will return a serialized FirebaseError object </param>
[DllImport("__Internal")]
public static extern void SendPasswordResetEmail(string email, string objectName, string callback,
string fallback);

/// <summary>
/// Signs out the user
/// </summary>
/// <param name="objectName"> Name of the gameobject to call the callback/fallback of </param>
/// <param name="callback"> Name of the method to call when the operation was successful. Method must have signature: void Method(string output) </param>
/// <param name="fallback"> Name of the method to call when the operation was unsuccessful. Method must have signature: void Method(string output). Will return a serialized FirebaseError object </param>
[DllImport("__Internal")]
public static extern void SignOut(string objectName, string callback,
string fallback);

/// <summary>
/// Listens for changes of the auth state (sign in/sign out)
/// </summary>
Expand All @@ -66,5 +97,14 @@ public static extern void SignInWithFacebook(string objectName, string callback,
[DllImport("__Internal")]
public static extern void OnAuthStateChanged(string objectName, string onUserSignedIn,
string onUserSignedOut);

/// <summary>
/// Reloads the Firebase user
/// </summary>
/// <param name="objectName"> Name of the gameobject to call the onUserSignedIn/onUserSignedOut of </param>
/// <param name="callback"> Name of the method to call when the user signs in. Method must have signature: void Method(string output). Will return a serialized FirebaseUser object </param>
/// <param name="fallback"> Name of the method to call when the operation was unsuccessful. Method must have signature: void Method(string output) </param>
[DllImport("__Internal")]
public static extern void ReloadFirebaseUser(string objectName, string callback, string fallback);
}
}
19 changes: 9 additions & 10 deletions Assets/FirebaseWebGL/Scripts/Objects/FirebaseUser.cs
Original file line number Diff line number Diff line change
@@ -1,27 +1,26 @@
using System;
using System.Collections.Generic;

namespace FirebaseWebGL.Scripts.Objects
{
[Serializable]
public class FirebaseUser
{
public string displayName;

public string email;

public bool isAnonymous;
public bool isEmailVerified;

public bool emailVerified;

public FirebaseUserMetadata metadata;

public string phoneNumber;

public FirebaseUserProvider[] providerData;

public string providerId;

public string uid;
}
}