Esempio n. 1
0
    public async Task <bool> Login(string Email, string Password)
    {
        bool Result        = false;
        bool fSpecialLogin = (Email != this.Email);

        if (Authorization == null || fSpecialLogin)
        {
            string Json = string.Format(
                "{{" +
                "\"email\":\"{0}\"," +
                "\"password\":\"{1}\"" +
                "}}",
                Email,
                Password);
            StringContent Content = new StringContent(Json);
            Content.Headers.ContentType = new MediaTypeHeaderValue("application/json");

            HttpResponseMessage Response = await new HttpClient().PostAsync(sBaseUrl + "account/login", Content);

            await DebugHttpCall(Json, Response);

            if (Response.StatusCode == HttpStatusCode.OK)
            {
                string Resp = await Response.Content.ReadAsStringAsync();

                IEnumerable <string> Authorizations;
                if (Response.Headers.TryGetValues("Authorization", out Authorizations))
                {
                    IEnumerator <string> Auth = Authorizations.GetEnumerator();
                    Auth.MoveNext();
                    Authorization = Auth.Current;
                }

                JObject jData = JObject.Parse(Resp);
                sOrgId  = (string)jData["org"]["id"];
                sUserId = (string)jData["user"]["id"];

                sBaseUrl = string.Format(@"https://api.sling.is/v1/{0}/", sOrgId);

                if (!fSpecialLogin)
                {
                    HttpContext.Current.Session["SlingAuth"] = Authorization;
                    HttpContext.Current.Session["SlingOrg"]  = sOrgId;
                    HttpContext.Current.Session["SlingUser"] = sUserId;
                }
            }
        }

        if (Authorization != null && Authorization.Length > 0)
        {
            Result = true;
        }

        return(Result);
    }