Esempio n. 1
0
        public async Task <IHttpActionResult> Login(LoginBindingModel model)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            bool      sign         = false;
            bool      UserAPI      = false;
            string    ErrorMessage = null;
            UserToken UserTokenAPI = new UserToken();


            try
            {
                var httpWebRequest = (HttpWebRequest)WebRequest.Create("https://my.marinehealth.asia/api/auth/mobile");
                httpWebRequest.ContentType = "application/json";
                httpWebRequest.Method      = "POST";

                using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
                {
                    string json = "{\"Email\":\"" + model.UserName + "\"," + "\"Password\":\"" + model.Password + "\"}";
                    streamWriter.Write(json);
                    streamWriter.Flush();
                    streamWriter.Close();
                }

                string      responsezec;
                WebResponse response = await httpWebRequest.GetResponseAsync();

                using (Stream stream = response.GetResponseStream())
                {
                    using (StreamReader reader = new StreamReader(stream))
                    {
                        responsezec = await reader.ReadToEndAsync();
                    }
                }


                UserTokenAPI = JsonConvert.DeserializeObject <UserToken>(responsezec);

                UserAPI = true;

                response.Close();
            }

            catch
            {
                UserAPI = false;
            }



            ApplicationUser result = await UserManager.FindAsync(model.UserName, model.Password);


            if (result != null && UserAPI)
            {
                try
                {
                    if (UserTokenAPI.Status == "Success")
                    {
                        sign = true;
                    }
                    else if (UserTokenAPI.Status == "TooManyAttempts")
                    {
                        ErrorMessage = "Cлишком много попыток, пожалуйста, попробуйте еще раз позже";
                    }
                    else
                    {
                        ErrorMessage = "Имя пользователя или пароль указаны неверно.";
                    }
                }
                catch { }
            }
            else if (UserAPI)
            {
                if (UserTokenAPI.Status == "Success")
                {
                    var User = await UserManager.FindByNameAsync(model.UserName);

                    if (User == null)
                    {
                        var user = new ApplicationUser()
                        {
                            UserName = model.UserName, Email = model.UserName
                        };

                        IdentityResult CreateUserResult = await UserManager.CreateAsync(user, model.Password);


                        if (!CreateUserResult.Succeeded)
                        {
                            return(GetErrorResult(CreateUserResult));
                        }


                        try
                        {
                            if (UserTokenAPI.Token != null)
                            {
                                var rqstinfus     = WebRequest.Create("https://my.marinehealth.asia/api/proxy/userprofile/get?includeSensitiveData=false");
                                var Httprqstinfus = (HttpWebRequest)rqstinfus;
                                Httprqstinfus.PreAuthenticate = true;

                                Httprqstinfus.Headers.Add("AuthToken", UserTokenAPI.Token);
                                Httprqstinfus.Accept = "application/json";
                                string      responseiu;
                                WebResponse responseiuw = await Httprqstinfus.GetResponseAsync();

                                using (Stream stream = responseiuw.GetResponseStream())
                                {
                                    using (StreamReader reader = new StreamReader(stream))
                                    {
                                        responseiu = await reader.ReadToEndAsync();
                                    }
                                }

                                MHUserInfo MHUserInfo = JsonConvert.DeserializeObject <MHUserInfo>(responseiu);


                                if (MHUserInfo.ImageFileName != null && MHUserInfo.Contacts.Count > 0)
                                {
                                    MHUserInfo.ImageFileName = "https://my.marinehealth.asia/files/users/" + MHUserInfo.Contacts[0].UserId + "/images/" + MHUserInfo.ImageFileName;
                                }

                                UserInfo UserInfoNew = new UserInfo();
                                UserInfoNew.Lname    = MHUserInfo.LastName;
                                UserInfoNew.Fname    = MHUserInfo.FirstName;
                                UserInfoNew.Image    = MHUserInfo.ImageFileName;
                                UserInfoNew.UserName = model.UserName;
                                UserInfoNew.LevelId  = MHUserInfo.LevelId == null ? 0 : MHUserInfo.LevelId;
                                UserInfoNew.RegTime  = DateTime.Now.AddHours(6);
                                db.UserInfoes.Add(UserInfoNew);



                                JVLO jvnew = new JVLO();
                                jvnew.OV       = 1;
                                jvnew.TBB      = 0;
                                jvnew.UserName = model.UserName;
                                jvnew.X        = 1;
                                db.JVLOes.Add(jvnew);

                                await db.SaveChangesAsync();
                            }


                            sign = true;
                        }
                        catch {
                            sign = false;
                        }
                    }
                    else
                    {
                        string code = await UserManager.GeneratePasswordResetTokenAsync(User.Id);

                        var ResertPasswordResult = await UserManager.ResetPasswordAsync(User.Id, code, model.Password);

                        if (ResertPasswordResult.Succeeded)
                        {
                            sign = true;
                        }
                    }
                }
                else
                {
                    if (UserTokenAPI.Status == "TooManyAttempts")
                    {
                        ErrorMessage = "Cлишком много попыток, пожалуйста, попробуйте еще раз позже";
                    }
                    else
                    {
                        ErrorMessage = "Имя пользователя или пароль указаны неверно.";
                    }
                }
            }



            if (sign)
            {
                UT UserToken = await db.UTs.FirstOrDefaultAsync(e => e.UserName == model.UserName);

                if (UserToken != null && UserTokenAPI != null)
                {
                    if (UserToken.Token != UserTokenAPI.Token)
                    {
                        UserToken.Token = UserTokenAPI.Token;
                    }
                    await db.SaveChangesAsync();
                }
                else
                {
                    UT newUserToken = new UT();
                    newUserToken.UserName = model.UserName;
                    newUserToken.Token    = UserTokenAPI.Token;
                    newUserToken.Date     = DateTime.Now.AddHours(6);
                    db.UTs.Add(newUserToken);
                    await db.SaveChangesAsync();
                }


                return(Ok());
            }

            return(BadRequest(ErrorMessage));
        }
Esempio n. 2
0
        public async Task <ActionResult> Initialize(string language)
        {
            try
            {
                string UserName = GetUserName();


                UT UserToken = await db.UTs.FirstOrDefaultAsync(e => e.UserName == UserName);

                if (UserToken != null)
                {
                    var rqstinfus     = WebRequest.Create("https://my.marinehealth.asia/api/proxy/userprofile/get?includeSensitiveData=false");
                    var Httprqstinfus = (HttpWebRequest)rqstinfus;
                    Httprqstinfus.PreAuthenticate = true;

                    Httprqstinfus.Headers.Add("AuthToken", UserToken.Token);
                    Httprqstinfus.Accept = "application/json";
                    string      responseiu;
                    WebResponse responseiuw = Httprqstinfus.GetResponse();
                    using (Stream stream = responseiuw.GetResponseStream())
                    {
                        using (StreamReader reader = new StreamReader(stream))
                        {
                            responseiu = reader.ReadToEnd();
                        }
                    }

                    MHUserInfo MHUserInfo = JsonConvert.DeserializeObject <MHUserInfo>(responseiu);


                    if (MHUserInfo.ImageFileName != null && MHUserInfo.Contacts.Count > 0)
                    {
                        MHUserInfo.ImageFileName = "https://my.marinehealth.asia/files/users/" + MHUserInfo.Contacts[0].UserId + "/images/" + MHUserInfo.ImageFileName;
                    }



                    UserInfo UserInfo = await db.UserInfoes.FirstOrDefaultAsync(e => e.UserName == UserName);



                    if (UserInfo != null)
                    {
                        UserInfo.Lname   = MHUserInfo.LastName;
                        UserInfo.Fname   = MHUserInfo.FirstName;
                        UserInfo.Image   = MHUserInfo.ImageFileName;
                        UserInfo.LevelId = MHUserInfo.LevelId == null ? 0 : MHUserInfo.LevelId;
                    }
                    else
                    {
                        UserInfo UserInfoNew = new UserInfo();
                        UserInfoNew.Lname    = MHUserInfo.LastName;
                        UserInfoNew.Fname    = MHUserInfo.FirstName;
                        UserInfoNew.Image    = MHUserInfo.ImageFileName;
                        UserInfoNew.UserName = UserName;
                        UserInfoNew.LevelId  = MHUserInfo.LevelId == null ? 0 : MHUserInfo.LevelId;
                        UserInfoNew.RegTime  = DateTime.Now.AddHours(6);
                        db.UserInfoes.Add(UserInfoNew);


                        JVLO jv = await db.JVLOes.FirstOrDefaultAsync(e => e.UserName == UserName);

                        if (jv == null)
                        {
                            JVLO jvnew = new JVLO();
                            jvnew.OV       = 1;
                            jvnew.TBB      = 0;
                            jvnew.UserName = UserName;
                            jvnew.X        = 1;
                            db.JVLOes.Add(jvnew);
                        }
                    }

                    await db.SaveChangesAsync();

                    return(RedirectToAction("Modules", "Learning", new { language = language }));
                }
            }
            catch
            {
            }

            string ActionName = "Initialize";

            return(RedirectToAction("ErrorLogOff", "Account", new { language = language, ActionName = ActionName }));
        }