public void Login(string username, string pin, LoginSuccessfulCallback successCallback, LoginFailedCallback loginFailCallback, NoConnectionCallback failCallback) { StartCoroutine(TryLoginCoroutine(username, pin, successCallback, loginFailCallback, failCallback)); }
private IEnumerator TryLoginCoroutine(string username, string password, LoginSuccessfulCallback success, LoginFailedCallback failure, NoConnectionCallback noconnection) { WWWForm form = new WWWForm(); form.AddField("username", username); form.AddField("password", password); UnityWebRequest request = UnityWebRequest.Post(Constants.serverAddress + "api/login", form); yield return(request.SendWebRequest()); while (!request.isDone) { yield return(new WaitForEndOfFrame()); } if (request.isNetworkError) { Debug.Log("Network error: Cannot login: "******", Code = " + request.responseCode); if (noconnection != null) { noconnection(); } } else if (request.isHttpError) { if (request.responseCode == 404) { Debug.Log("Http error: User not found: " + request.error + ", Code = " + request.responseCode); } else if (request.responseCode == 401) { Debug.Log("Http error: Wrong password: "******", Code = " + request.responseCode); } if (failure != null) { failure(); } } else { LoginData logindata = default(LoginData); try { logindata = JsonConvert.DeserializeObject <LoginData>(request.downloadHandler.text); } catch (Exception) { Debug.LogError("Error: Cannot deserialize login data"); } if (logindata.token != null) { //Debug.Log(logindata.user.username + ": " + logindata.token); CurrentUser = logindata.user._id; CurrentUserName = logindata.user.username; CurrentUserClass = logindata.user.profile.role + " " + logindata.user.profile.group; CurrentUserBalance = logindata.user.profile.balance != null ? logindata.user.profile.balance : "0"; CurrentUserRole = logindata.user.profile.role; m_UserToken = logindata.token; if (success != null) { success(); } } else { if (failure != null) { failure(); } } } }