protected override async void OnActivityResult(int requestCode, Result resultCode, Intent data) { base.OnActivityResult(requestCode, resultCode, data); Log.Debug(TAG, "onActivityResult:" + requestCode + ":" + resultCode + ":" + data); if (CallbackManager != null) { CallbackManager.OnActivityResult(requestCode, (int)resultCode, data); } if (requestCode == RC_SIGN_IN) { IsLogin_InProgress(false); GoogleSignInResult result = Auth.GoogleSignInApi.GetSignInResultFromIntent(data); if (result.IsSuccess) { GoogleSignInAccount userAccount = result.SignInAccount; var success = await FirebaseAuthHelper.FirebaseAuthWithGoogle(FirebaseAuth, userAccount); if (success) { Intent mainactivityIntent = new Intent(this, typeof(MainActivity)); StartActivity(mainactivityIntent); Finish(); } } } }
IEnumerator Login() { var loadingCircleInstance = Instantiate(loadingCircle); yield return(FirebaseAuthHelper.LoginAsync(email.text, password.text)); Destroy(loadingCircleInstance.gameObject); }
public async void register() { bool result = await FirebaseAuthHelper.Register(User); if (result == true) { switchViews(); } }
public async void login() { bool result = await FirebaseAuthHelper.Login(User); if (result) { AuthenticationSucessfull?.Invoke(this, new EventArgs()); } }
public async void Register() { bool result = await FirebaseAuthHelper.Register(User); if (result) { Authenticated?.Invoke(this, new EventArgs()); } }
public async Task Login() { bool result = await FirebaseAuthHelper.Login(User); if (result) { Authenticated?.Invoke(this, new EventArgs()); } }
public IActionResult PrivacyPolicy() { string authSessionCookie = Request.Cookies["authSession"]; bool userLoggedIn = FirebaseAuthHelper.IsUserLoggedIn(authSessionCookie, true); ViewData["userLoggedIn"] = userLoggedIn; return(View()); }
public IActionResult LogInPOST() { string email = Request.Form["email"]; string password = Request.Form["password"]; string idTokenOrError = FirebaseAuthHelper.SignInWithEmailAndPassword(email, password); string idToken; if (idTokenOrError.StartsWith("error: ")) { JObject errorJObject = JObject.Parse(idTokenOrError.Remove(0, 7)); return(Content(FirebaseAuthHelper.GenerateNiceErrorMessage(errorJObject["message"].ToString()))); } else { idToken = idTokenOrError.Remove(0, 9); } TimeSpan expirationTimeSpan; if (Request.Form["remember-me"] == "on") { expirationTimeSpan = TimeSpan.FromDays(14); } else { expirationTimeSpan = TimeSpan.FromDays(1); } SessionCookieOptions options = new SessionCookieOptions() { ExpiresIn = expirationTimeSpan }; try { string sessionCookie = FirebaseAuth.DefaultInstance.CreateSessionCookieAsync(idToken, options).Result; CookieOptions cookieOptions = new CookieOptions() { Expires = DateTimeOffset.UtcNow.Add(options.ExpiresIn), HttpOnly = true, Secure = EnvironmentHelper.KeepCookiesSecure() }; Response.Cookies.Append("authSession", sessionCookie, cookieOptions); return(Content("success")); } catch (FirebaseAuthException) { return(Content("Error: Failed to create a session cookie.")); } }
public IActionResult Register() { string authSessionCookie = Request.Cookies["authSession"]; switch (FirebaseAuthHelper.IsUserLoggedIn(authSessionCookie, true)) { case true: return(Redirect("/")); case false: return(View()); } }
public IActionResult CreateACountryPOST() { string authSessionCookie = Request.Cookies["authSession"]; bool userLoggedIn = FirebaseAuthHelper.IsUserLoggedIn(authSessionCookie); if (userLoggedIn) { FirebaseToken firebaseToken = FirebaseAuth.DefaultInstance.VerifySessionCookieAsync(authSessionCookie).Result; string firebaseUid = firebaseToken.Uid; using (DatabaseContext database = new DatabaseContext()) { User user = database.Users.Single(u => u.FirebaseUid == firebaseUid); if (user.CountryName == null) { Country country = new Country { CountryName = Request.Form["country-name"], CapitalName = Request.Form["capital-name"], FlagId = CountryGenerationHelper.FlagNameToId(Request.Form["flag-name"]) }; if (database.Countries.Any(c => c.CountryName == country.CountryName)) { ViewData["errorMessage"] = "There is another country with that name, and we don't allow duplicate country names. Sorry!"; return(View("../Error/TextError")); } database.Countries.Add(country); user.CountryName = country.CountryName; user.Ministry = MinistryHelper.MinistryCode.PrimeMinister; database.SaveChanges(); return(Redirect("/")); } else { ViewData["errorMessage"] = "You are already a minister in another country."; return(View("../Error/TextError")); } } } else { ViewData["errorMessage"] = "You are not logged in."; return(View("../Error/TextError")); } }
public IActionResult CheckVerificationEmail() { string authSessionCookie = Request.Cookies["authSession"]; if (FirebaseAuthHelper.IsUserLoggedIn(authSessionCookie)) { return(Redirect("/")); } bool userLoggedIn = FirebaseAuthHelper.IsUserLoggedIn(authSessionCookie, true); ViewData["userLoggedIn"] = userLoggedIn; return(View()); }
public IActionResult LogIn(string redirect = "/") { string authSessionCookie = Request.Cookies["authSession"]; switch (FirebaseAuthHelper.IsUserLoggedIn(authSessionCookie)) { case true: return(Redirect(redirect)); case false: if (FirebaseAuthHelper.IsUserLoggedIn(authSessionCookie, true)) { return(Redirect("/Auth/CheckVerificationEmail")); } ViewData["redirectPath"] = redirect; return(View()); } }
public async void OnSuccess(Java.Lang.Object result) { _ = Log.Debug(Class.ToString(), result.Class.ToString()); var success = await FirebaseAuthHelper.FirebaseAuthWithFacebook(FirebaseAuth, ((LoginResult)result).AccessToken); if (success) { IsLogin_InProgress(false); Toast.MakeText(this, "Authentication successful", ToastLength.Long).Show(); Intent mainactivityIntent = new Intent(this, typeof(MainActivity)); StartActivity(mainactivityIntent); Finish(); } else { Toast.MakeText(this, "Authentication failed.", ToastLength.Long).Show(); IsLogin_InProgress(false); } }
public IActionResult Index() { string authSessionCookie = Request.Cookies["authSession"]; bool userLoggedIn = FirebaseAuthHelper.IsUserLoggedIn(authSessionCookie); if (userLoggedIn) { FirebaseToken firebaseToken = FirebaseAuth.DefaultInstance.VerifySessionCookieAsync(authSessionCookie).Result; return(Redirect("/Game/Index")); } else { if (FirebaseAuthHelper.IsUserLoggedIn(authSessionCookie, true)) { return(Redirect("/Auth/CheckVerificationEmail")); } return(View()); } }
public IActionResult RegisterPOST() { string email = Request.Form["email"]; string password = Request.Form["password"]; UserRecordArgs userRecordArgs = new UserRecordArgs { Email = email, EmailVerified = false, Password = password, Disabled = false }; UserRecord userRecord; try { userRecord = FirebaseAuth.DefaultInstance.CreateUserAsync(userRecordArgs).Result; } catch (Exception e) { if (e is ArgumentException) { return(Content("Invalid email or password. Your password may be too weak.")); } if (e is FirebaseAuthException firebaseAuthException) { return(Content(FirebaseAuthHelper.GenerateNiceErrorMessage(firebaseAuthException.AuthErrorCode))); } if (e is AggregateException aggregateException) { foreach (Exception exception in aggregateException.InnerExceptions) { if (exception is ArgumentException) { return(Content("Invalid email or password. Your password may be too weak.")); } if (exception is FirebaseAuthException aggregateFirebaseAuthException) { return(Content(FirebaseAuthHelper.GenerateNiceErrorMessage(aggregateFirebaseAuthException.AuthErrorCode))); } } } return(Content("Error: Unknown error occurred.")); } string idTokenOrError = FirebaseAuthHelper.SignInWithEmailAndPassword(email, password); string idToken; if (idTokenOrError.StartsWith("error: ")) { JObject errorJObject = JObject.Parse(idTokenOrError.Remove(0, 7)); return(Content(FirebaseAuthHelper.GenerateNiceErrorMessage(errorJObject["message"].ToString()))); } else { idToken = idTokenOrError.Remove(0, 9); } using (DatabaseContext database = new DatabaseContext()) { string username = Request.Form["username"]; if (database.Users.Any(u => u.Username == username)) { FirebaseAuth.DefaultInstance.DeleteUserAsync(userRecord.Uid).Wait(); return(Content("There is another user with that username, and we don't allow duplicate usernames. Sorry!")); } User user = new User { Username = username, FirebaseUid = userRecord.Uid }; database.Users.Add(user); database.SaveChanges(); } FirebaseAuthHelper.SendVerificationEmail(idToken); TimeSpan expirationTimeSpan; if (Request.Form["remember-me"] == "on") { expirationTimeSpan = TimeSpan.FromDays(14); } else { expirationTimeSpan = TimeSpan.FromDays(1); } SessionCookieOptions options = new SessionCookieOptions() { ExpiresIn = expirationTimeSpan }; try { string sessionCookie = FirebaseAuth.DefaultInstance.CreateSessionCookieAsync(idToken, options).Result; CookieOptions cookieOptions = new CookieOptions() { Expires = DateTimeOffset.UtcNow.Add(options.ExpiresIn), HttpOnly = true, Secure = EnvironmentHelper.KeepCookiesSecure() }; Response.Cookies.Append("authSession", sessionCookie, cookieOptions); return(Content("success")); } catch (FirebaseAuthException) { return(Content("Error: Failed to create a session cookie.")); } }
public override void OnActionExecuting(ActionExecutingContext context) { string authSessionCookie = context.HttpContext.Request.Cookies["authSession"]; bool userLoggedInAtAll = FirebaseAuthHelper.IsUserLoggedIn(authSessionCookie); if (!userLoggedInAtAll) { Uri redirectUri = new Uri(context.HttpContext.Request.GetDisplayUrl()); string redirectPath = HttpUtility.UrlEncode(redirectUri.PathAndQuery); context.Result = new RedirectResult($"/Auth/LogIn?redirect={redirectPath}"); return; } FirebaseToken firebaseToken = FirebaseAuth.DefaultInstance.VerifySessionCookieAsync(authSessionCookie).Result; string firebaseUid = firebaseToken.Uid; context.ActionArguments.Add("authSessionCookie", authSessionCookie); using (DatabaseContext database = new DatabaseContext()) { User user = database.Users.Single(u => u.FirebaseUid == firebaseUid); Controller controller = (Controller)context.Controller; controller.ViewData["user"] = user; // TODO: a better admin account if (user.Username == "No country test") { controller.ViewData["country"] = database.Countries.Single(c => c.CountryName == "dummycountry"); controller.ViewData["ministryDashboard"] = MinistryHelper.MinistryCode.None; controller.ViewData["unreadEmails"] = 5; controller.ViewData["unreadNotifications"] = 0; controller.ViewData["noCountry"] = false; base.OnActionExecuting(context); return; } bool userLoggedIn = FirebaseAuthHelper.IsUserLoggedIn(authSessionCookie); if (userLoggedIn) { controller.ViewData["userLoggedIn"] = userLoggedIn; try { Country country = database.Countries.Single(c => c.CountryName == user.CountryName); controller.ViewData["country"] = country; } catch { controller.ViewData["country"] = null; } controller.ViewData["ministryDashboard"] = MinistryHelper.MinistryCode.None; UserEmail[] userEmails = database.UserEmails.Where(ue => ue.ReceivingUsername == user.Username).ToArray(); int unreadEmails = userEmails.Where(ue => !ue.MarkedAsRead).Count(); Notification[] notifications = database.Notifications.Where(n => n.Username == user.Username).ToArray(); int unreadNotifications = notifications.Where(n => !n.MarkedAsRead).Count(); controller.ViewData["unreadEmails"] = unreadEmails; controller.ViewData["unreadNotifications"] = unreadNotifications; controller.ViewData["noCountry"] = user.CountryName == null; base.OnActionExecuting(context); return; } else { context.Result = new RedirectResult("/Auth/CheckVerificationEmail"); return; } } }