Example #1
0
 public void Login(string username, string pin, LoginSuccessfulCallback successCallback, LoginFailedCallback loginFailCallback, NoConnectionCallback failCallback)
 {
     StartCoroutine(TryLoginCoroutine(username, pin, successCallback, loginFailCallback, failCallback));
 }
Example #2
0
    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();
                }
            }
        }
    }