| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161 |
- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
- using UnityEngine.Networking;
- using UnityEngine.UI;
- using UnityEngine.EventSystems;
- using UnityEngine.SceneManagement;
- using System;
- using System.Security.Cryptography;
- using System.Text;
- using UnityEngine.Events;
- using Firebase;
- public class Login : MonoBehaviour {
- public InputField usernameInputField;
- public InputField passwordInputField;
- public Button loginButton;
- public Button SwedishButton;
- public Button EnglishButton;
- public Toggle keepSignedIn;
- public Text errorText;
- private string Username;
- private string Password;
- private string loginUrl = "http://nordh.xyz/narKampen/dbFiles/Login.php?";
- private Color errorColor;
- private EventSystem system;
- [SerializeField] GameObject firebaseController;
- [Serializable]
- public class User {
- public string userId;
- public string pass;
- public string salt;
- }
- private void Start() {
- if (Database.Instance.IsKeepSignedIn()) {
- SceneManager.LoadScene("MainMenu");
- }
- loginButton.onClick.AddListener(loginAction);
- errorColor = errorText.color;
- system = EventSystem.current;
- SwedishButton.onClick.AddListener(() => SwitchLanguage(0));
- EnglishButton.onClick.AddListener(() => SwitchLanguage(1));
- }
- private void Awake() {
- usernameInputField.Select();
- usernameInputField.gameObject.SetActive(true);
- }
- private void SwitchLanguage(int langId) {
- LocalizationManager.Instance.currentLanguageID = langId;
- TextLocalization[] texts = FindObjectsOfType(typeof(TextLocalization)) as TextLocalization[];
- foreach (TextLocalization tl in texts) {
- tl.UpdateText();
- }
- InputFieldLocalization[] inputFields = FindObjectsOfType(typeof(InputFieldLocalization)) as InputFieldLocalization[];
- foreach (InputFieldLocalization ifl in inputFields) {
- ifl.UpdateText();
- }
- ButtonLocalization[] buttonLocale = FindObjectsOfType(typeof(ButtonLocalization)) as ButtonLocalization[];
- foreach (ButtonLocalization bl in buttonLocale) {
- bl.UpdateText();
- }
- }
- private void Update() {
- Username = usernameInputField.text;
- Password = passwordInputField.text;
- if (Input.GetKeyDown(KeyCode.Tab)) {
- Selectable next = system.currentSelectedGameObject.GetComponent<Selectable>().FindSelectableOnDown();
- if (next != null) {
- InputField inputfield = next.GetComponent<InputField>();
- if (inputfield != null) inputfield.OnPointerClick(new PointerEventData(system));
- system.SetSelectedGameObject(next.gameObject, new BaseEventData(system));
- }
- }
- }
- void loginAction() {
- string errorMessage = "";
- if (Username == "") {
- errorMessage = LocalizationManager.Instance.GetText("REGISTER_ERROR_USERNAME_EMPTY");
- }
- if (Password == "") {
- if (errorMessage != "") {
- errorMessage += "\n";
- }
- errorMessage += LocalizationManager.Instance.GetText("REGISTER_ERROR_PASSWORD_EMPTY");
- }
- if (errorMessage == "") {
- errorColor.a = 0;
- StartCoroutine(loginCall());
- } else {
- errorText.text = errorMessage;
- errorColor.a = 1;
- }
- errorText.color = errorColor;
- }
- IEnumerator loginCall() {
- string postUrl = loginUrl + "name=" + UnityWebRequest.EscapeURL(Username);
- StringBuilder sb = new StringBuilder(postUrl);
- FirebaseStart fs = firebaseController.GetComponent<FirebaseStart>();
- UnityWebRequest www = UnityWebRequest.Get(postUrl);
- yield return www.SendWebRequest();
- if (www.error != null) {
- errorText.text = "There was an error logging in " + www.error;
- }
- string result = www.downloadHandler.text;
- User u = new User();
- if (!result.Equals("")) {
- JsonUtility.FromJsonOverwrite(result, u);
- }
- if (u.userId != null && !u.userId.Equals("")) {
- byte[] pwd = Encoding.UTF8.GetBytes(u.salt + Password);
- SHA1CryptoServiceProvider sha1 = new SHA1CryptoServiceProvider();
- string pass = Convert.ToBase64String(sha1.ComputeHash(pwd));
- if (pass.Equals(u.pass)) {
- errorColor.a = 0;
- errorText.color = errorColor;
- Int32.TryParse(u.userId, out int userId);
- Database.Instance.SignIn(Username, userId, keepSignedIn.isOn);
- if (fs != null && fs.MyToken != null && !fs.MyToken.Equals("")) {
- OnlineDatabase.Instance.UpdatePlayerToken(userId, fs.MyToken);
- }
- SceneManager.LoadScene("MainMenu");
- } else {
- errorText.text = LocalizationManager.Instance.GetText("LOGIN_WRONG_USERNAME_PASSWORD");
- errorColor.a = 1;
- errorText.color = errorColor;
- }
- } else {
- errorText.text = LocalizationManager.Instance.GetText("LOGIN_USER_NOT_FOUND");
- errorColor.a = 1;
- errorText.color = errorColor;
- }
- }
- }
|