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)); }
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 })); }