Exemplo n.º 1
0
        public async Task <ActionResult> Login(MT.Model.User oUser)
        {
            ResultData oResultData = new ResultData {
                Success = true
            };

            if (ModelState.IsValid)
            {
                try
                {
                    Token  oToken   = null;
                    string userName = oUser.UserName;
                    //MTLog.Trace.Trace("Start Login: UserName {0}", userName);
                    if (string.IsNullOrEmpty(userName) || userName.Trim().Length == 0)
                    {
                        oResultData.ErrorMessage = "Tên đăng nhập không được bỏ trống.";
                        oResultData.Success      = false;
                        return(Json(oResultData));
                    }
                    string password = oUser.Password;

                    if (string.IsNullOrEmpty(password) || password.Trim().Length == 0)
                    {
                        oResultData.ErrorMessage = "Mật khẩu không được bỏ trống.";
                        oResultData.Success      = false;
                        return(Json(oResultData));
                    }
                    Dictionary <string, string> dicUser = new Dictionary <string, string>()
                    {
                        { "username", oUser.UserName },
                        { "password", oUser.Password },
                        { "grant_type", "password" }
                    };
                    var content = new FormUrlEncodedContent(dicUser);
                    using (HttpClient client = new HttpClient())
                    {
                        //MTLog.Trace.Trace("Link API Login {0}, password {1}", requestUriLogin, oUser.Password);
                        client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/x-www-form-urlencoded"));
                        HttpResponseMessage result = await client.PostAsync(requestUriLogin, content);

                        if (result.IsSuccessStatusCode)
                        {
                            string reponse = await result.Content.ReadAsStringAsync();

                            //MTLog.Trace.Trace("Respone Login {0}", reponse);

                            oToken = CommonFunction.DeserializeObject <Token>(reponse);
                        }
                        else if (result.StatusCode == System.Net.HttpStatusCode.BadRequest)
                        {
                            string reponse = await result.Content.ReadAsStringAsync();

                            //MTLog.Trace.Trace("Respone Login {0}", reponse);

                            oToken = CommonFunction.DeserializeObject <Token>(reponse);
                        }
                    }
                    if (oToken == null)
                    {
                        oResultData.ErrorMessage = "Bạn không có quyền vào ứng dụng.";
                        oResultData.Success      = false;
                        return(Json(oResultData));
                    }
                    else if (oToken.Error == Commonkey.mscInvalid_grant)
                    {
                        oResultData.ErrorMessage = "Tên đăng nhập hoặc mật khẩu không chính xác.";
                        oResultData.Success      = false;
                        return(Json(oResultData));
                    }
                    else if (oToken.Error == Commonkey.mscUnsupported_grant_type)
                    {
                        oResultData.ErrorMessage = "Bạn không có quyền vào ứng dụng.";
                        oResultData.Success      = false;
                        return(Json(oResultData));
                    }
                    TempData[Commonkey.mscResponeLogin] = oToken;
                    commonFn.SaveInfoLogin(oToken);
                }
                catch (System.Exception ex)
                {
                    //MTLog.Trace.Trace("Error Login {0}", ex.Message);
                }
            }
            return(Json(oResultData));
        }