public enLoginResult ValidateCredentialsViaRemoteApi(string username, string password) { var apiUrl = ApplicationSettingService.GetWebConfigKey("RemoteLoginSOAPUrl"); var apiUsername = ApplicationSettingService.GetWebConfigKey("RemoteLoginSOAPUsername"); var apiPassword = ApplicationSettingService.GetWebConfigKey("RemoteLoginSOAPPassword"); var webRequest = (HttpWebRequest)WebRequest.Create(apiUrl); webRequest.Headers.Add("SOAPAction", "http://tempuri.org/IService/verificaUtentePassword"); webRequest.ContentType = "text/xml;charset=\"utf-8\""; webRequest.Accept = "text/xml"; webRequest.Method = "POST"; webRequest.CookieContainer = new CookieContainer(); webRequest.Credentials = new NetworkCredential(apiUsername, apiPassword, ""); var soapEnvelopeXml = new XmlDocument(); soapEnvelopeXml.LoadXml( $@"<soapenv:Envelope xmlns:soapenv=""http://schemas.xmlsoap.org/soap/envelope/"" xmlns:tem=""http://tempuri.org/""><soapenv:Header></soapenv:Header><soapenv:Body><tem:verificaUtentePassword><tem:utente>{username}</tem:utente><tem:password>{password}</tem:password></tem:verificaUtentePassword></soapenv:Body></soapenv:Envelope>"); using (var stream = webRequest.GetRequestStream()) { soapEnvelopeXml.Save(stream); } var asyncResult = webRequest.BeginGetResponse(null, null); asyncResult.AsyncWaitHandle.WaitOne(); string soapResult; using (var webResponse = webRequest.EndGetResponse(asyncResult)) { using (var rd = new StreamReader(webResponse.GetResponseStream())) { soapResult = rd.ReadToEnd(); } } var document = new XmlDocument(); document.LoadXml(soapResult); var result = enLoginResult.NotExists; try { var login = JsonConvert.DeserializeObject <JsonLoginModel>(document.InnerText); result = login.enResult ?? result; } catch (Exception ex) { LogService.WriteLog(ex.Message, LogService.TypeLevel.Error, ex); } return(result); }
public ActionResult Login(string returnUrl, int exception = 0) { var isDemo = bool.Parse(ApplicationSettingService.GetWebConfigKey("DemoMode")); ActionResult result = null; LoginModel model = new LoginModel(); setInitialModel(model); if (isDemo) { model.Username = ApplicationSettingService.GetWebConfigKey("DemoUsername"); model.Password = ApplicationSettingService.GetWebConfigKey("DemoPassword"); model.RememberMe = true; result = Connect(model, returnUrl); } else { switch (exception) { case 1: ModelState.AddModelError("", Resource.Unauthorized); break; case 2: ModelState.AddModelError("", Resource.SessionTimeout); break; case 3: ModelState.AddModelError("", Resource.NoPlant); break; case 4: ModelState.AddModelError("", Resource.NoMachine); break; default: break; } if (returnUrl == null) { return(View(model)); } else if (ModelState.IsValid && _contextService.GetContext() == null) { ModelState.AddModelError("", Resource.SessionTimeout); } ViewBag.ReturnUrl = returnUrl; result = View(model); } return(result); }
public static void Notify(string objectId, string entity) { var message = new MailMessage { From = new MailAddress(ApplicationSettingService.GetWebConfigKey("EmailFromAddress")), Subject = "[LOLA] - Errore assorbimento JSON", Body = $"Il JSON con id: {objectId}, entità: {entity} ha riportato un errore durante il processamento, verificare i dettagli nel file di LOG." }; foreach (var mail in ApplicationSettingService.GetWebConfigKey("EmailToAddress").Split(';').ToList()) { message.To.Add(mail); } EmailSender.SendEmail(message); }
public ActionResult InviaSupportReq(SupportViewModel supportReq) { try { string body = $"<b>Nome e Cognome: </b> {supportReq.Nome} <br>"; body += $"<b>Azienda: </b>{supportReq.Azienda} <br>"; body += $"<b>Telefono: </b>{supportReq.Prefisso} {supportReq.Telefono}<br>"; body += $"<b>Email: </b>{supportReq.Email}<br>"; body += $"<b>Nome Macchina: </b>{supportReq.NomeMacchina} <br>"; body += $"<b>Seriale: </b>{supportReq.Seriale} <br>"; body += $"<b>Testo: </b>{supportReq.Testo} <br>"; var message = new MailMessage(ApplicationSettingService.GetWebConfigKey("EmailFromAddress"), ApplicationSettingService.GetWebConfigKey("EmailSupportAddress"), "Richiesta di supporto LOLA", body); message.IsBodyHtml = true; //invio copia all'utente per ricevuta var message2 = new MailMessage(ApplicationSettingService.GetWebConfigKey("EmailFromAddress"), supportReq.Email, "Richiesta di supporto a LOLA inviata", "Hai inviato la seguente richiesta di supporto: <br>" + body); message2.IsBodyHtml = true; if (supportReq.File != null && supportReq.File.Length > 0 && supportReq.File[0] != null) { if (supportReq.File[0].ContentLength > 3 * 1024 * 1024 || !(supportReq.File[0].FileName.ToLower().EndsWith(".jpg") || supportReq.File[0].FileName.ToLower().EndsWith(".jpeg") || supportReq.File[0].FileName.ToLower().EndsWith(".png") || supportReq.File[0].FileName.ToLower().EndsWith(".doc") || supportReq.File[0].FileName.ToLower().EndsWith(".docx"))) { return(Json(new { result = false, msg = Resource.FileNotValid }, JsonRequestBehavior.AllowGet)); } Attachment attachment = new Attachment(supportReq.File[0].InputStream, supportReq.File[0].FileName); message.Attachments.Add(attachment); message2.Attachments.Add(attachment); } EmailSender.SendEmail(message); EmailSender.SendEmail(message2); object returnObj = new { result = true }; return(Json(returnObj, JsonRequestBehavior.AllowGet)); } catch (InvalidOperationException ex) { object returnObj = new { result = false, msg = ex.Message }; return(Json(returnObj, JsonRequestBehavior.AllowGet)); } }
private ActionResult Connect(LoginModel model, string returnUrl) { if (ModelState.IsValid) { enLoginResult remoteLoginResult = enLoginResult.NotExists; /* REMOTE LOGIN */ var remoteLogin = bool.Parse(ApplicationSettingService.GetWebConfigKey("RemoteLogin")); if (remoteLogin) { remoteLoginResult = _jsonApiClientService.ValidateCredentialsViaRemoteApi(model.Username, model.Password); } switch (remoteLoginResult) { case enLoginResult.Ok: case enLoginResult.NotExists: var localLoginResult = _accountService.Login(model.Username, model.Password, true, (remoteLoginResult == enLoginResult.Ok)); if (localLoginResult.Result) { FormsAuthentication.SetAuthCookie(model.Username, model.RememberMe); if (_contextService.InitializeContext()) { ClearNotificationTable(); return(RedirectToLocal(returnUrl)); } ModelState.AddModelError("", Resource.LoginProblem); } if (remoteLoginResult == enLoginResult.Ok && localLoginResult.Result == false) { ModelState.AddModelError("", Resource.NoMachine); } else { if (localLoginResult.Message == "User is not enabled") { ModelState.AddModelError("", Resource.UserNotEnabled); } else { ModelState.AddModelError("", Resource.PassNotValid); } } break; case enLoginResult.Disabled: ModelState.AddModelError("", Resource.UserExpired); break; case enLoginResult.WrongPassword: ModelState.AddModelError("", Resource.PassNotValid); break; default: ModelState.AddModelError("", Resource.LoginProblem); break; } return(View(model)); } ModelState.AddModelError("", Resource.UserPassNotValid); return(View(model)); }
public bool UpdateActiveCustomersAndMachines() { var result = true; try { var apiUrl = ApplicationSettingService.GetWebConfigKey("UpdateCustomersAndMachinesSOAPUrl"); var apiUsername = ApplicationSettingService.GetWebConfigKey("UpdateCustomersAndMachinesSOAPUsername"); var apiPassword = ApplicationSettingService.GetWebConfigKey("UpdateCustomersAndMachinesSOAPPassword"); var webRequest = (HttpWebRequest)WebRequest.Create(apiUrl); webRequest.Headers.Add("SOAPAction", "http://tempuri.org/IService/ottieniListaMacchineRegistrate"); webRequest.ContentType = "text/xml;charset=\"utf-8\""; webRequest.Accept = "text/xml"; webRequest.Method = "POST"; webRequest.CookieContainer = new CookieContainer(); webRequest.Credentials = new NetworkCredential(apiUsername, apiPassword, ""); var soapEnvelopeXml = new XmlDocument(); soapEnvelopeXml.LoadXml(@"<soapenv:Envelope xmlns:soapenv=""http://schemas.xmlsoap.org/soap/envelope/"" xmlns:tem=""http://tempuri.org/""><soapenv:Header></soapenv:Header><soapenv:Body><tem:ottieniListaMacchineRegistrate/></soapenv:Body></soapenv:Envelope>"); using (var stream = webRequest.GetRequestStream()) { soapEnvelopeXml.Save(stream); } var asyncResult = webRequest.BeginGetResponse(null, null); asyncResult.AsyncWaitHandle.WaitOne(); string soapResult; using (var webResponse = webRequest.EndGetResponse(asyncResult)) { using (var rd = new StreamReader(webResponse.GetResponseStream())) { soapResult = rd.ReadToEnd(); } } var document = new XmlDocument(); document.LoadXml(soapResult); var customers = JsonConvert.DeserializeObject <JsonCustomersModel>(document.InnerText, new IsoDateTimeConverter { DateTimeFormat = "dd/MM/yyyy" }); //elimino i customer non più presenti nella vip area var dbCustomers = _userManagerService.GetAllCustomers(); var customerNames = customers.customers.Select(j => j.username).Distinct(); var custmerToRemove = dbCustomers.Where(e => !customerNames.Contains(e.Username)).ToList(); if (custmerToRemove.Any()) { //rimuovo prima le associazioni var ids = custmerToRemove.Select(a => a.ID).ToList(); var names = custmerToRemove.Select(a => a.Username).ToList(); var us = _context.Set <UserCustomerMapping>().Where(uc => names.Contains(uc.CustomerName)).ToList(); //utenti associati al customer var usCust = new List <UserModel>(); if (us.Any()) { foreach (var item in us) { usCust.AddRange(_userManagerService.GetUsers(item.CustomerName)); } _context.Set <UserCustomerMapping>().RemoveRange(us); _context.SaveChanges(); } var um = _context.Set <UserMachineMapping>().Where(mh => ids.Contains(mh.UserId)).ToList(); if (um.Any()) { _context.Set <UserMachineMapping>().RemoveRange(um); _context.SaveChanges(); } usCust.AddRange(custmerToRemove); using (var transactionSuppress = new TransactionScope(TransactionScopeOption.Suppress)) { _userManagerService.RemoveUsers(usCust); transactionSuppress.Complete(); } } //pulizia della tabella UserCustomerMapping, potrebbero esserci record inseriti a mano con customerName non esistenti var machines = _context.Set <Machine>().ToList(); var users = _context.Set <Users>().ToList(); foreach (var customer in customers.customers) { try { //Aggiungo eventuali nuovi clienti var user = new UserModel(); using (var transactionSuppress = new TransactionScope(TransactionScopeOption.Suppress)) { user = users.FirstOrDefault(u => u.Username == customer.username)?.Adapt <Users, UserModel>(); if (user == null) { user = new UserModel { Username = customer.username, FirstName = customer.firstName, LastName = customer.lastName, CompanyName = customer.companyName, Enabled = true, Role = enRole.Customer, CustomerName = customer.username }; user.ID = _userManagerService.CreateUser(user); } else { user.FirstName = customer.firstName; user.LastName = customer.lastName; user.CompanyName = customer.companyName; _userManagerService.UpdateUserName(user); } transactionSuppress.Complete(); } //Aggiungo eventuali nuovi clienti nel DB dei dati var userCustomer = _context.Set <UserCustomerMapping>().FirstOrDefault(f => f.UserId == user.ID); if (userCustomer == null) { userCustomer = new UserCustomerMapping { UserId = user.ID, CustomerName = user.Username }; _context.Set <UserCustomerMapping>().Add(userCustomer); _context.SaveChanges(); } //Prendo la lista delle macchine esistenti nel DB a partire da quelle arrivate da JSON var machinesSerial = customer.machines.Select(s => s.serial).ToList(); var customersMachines = machines.Where(w => machinesSerial.Contains(w.Serial)).ToList(); //Rimuovo le associazioni cliente <=> macchina per macchine non più monitorate var machinesId = customersMachines.Select(s => s.Id).ToList(); var clientUsersMachines = _context.Set <UserMachineMapping>().Where(w => machinesId.Contains(w.MachineId)).Select(s => s.UserId).Distinct().ToList(); var usersMachinesToRemove = _context.Set <UserMachineMapping>().Where(w => !machinesId.Contains(w.MachineId) && clientUsersMachines.Contains(w.UserId)).ToList(); _context.Set <UserMachineMapping>().RemoveRange(usersMachinesToRemove); _context.SaveChanges(); var plant = _mesService.GetOrSetPlantDefaultByUser(user.ID); //Inserisco i nuovi mapping cliente <=> macchina foreach (var machine in customersMachines) { var jm = customer.machines.FirstOrDefault(f => f.serial == machine.Serial); if (jm != null) { var expirationDate = jm.expirationDate; var activationDate = jm.activationDate; var machineName = jm.machineName; var usersMachineMapped = _context.Set <UserMachineMapping>().Where(w => w.MachineId == machine.Id).ToList(); if (!usersMachineMapped.Any()) { var userMachine = new UserMachineMapping() { MachineId = machine.Id, UserId = user.ID }; _context.Set <UserMachineMapping>().Add(userMachine); _context.SaveChanges(); } //aggiorno l'activationDate della macchina prendendo la più vecchia // aggiorno anche il plantId var ma = _context.Set <Machine>().Find(machine.Id); if (ma.PlantId == null) { ma.PlantId = plant; } if (ma.ActivationDate == null || ma.ActivationDate > activationDate) { ma.ActivationDate = activationDate; } if (ma.ExpirationDate == null || ma.ExpirationDate < expirationDate) { ma.ExpirationDate = expirationDate; } if (!string.IsNullOrWhiteSpace(machineName)) { ma.MachineName = machineName; } _context.SaveChanges(); } } } catch (Exception ex) { LogService.WriteLog(ex.Message, LogService.TypeLevel.Error, ex); result = false; } } } catch (Exception ex) { LogService.WriteLog(ex.Message, LogService.TypeLevel.Error, ex); } return(result); }