From 982c68ed31e706f5744c7fc06c368ff35b448798 Mon Sep 17 00:00:00 2001 From: Marco Audiffredi Date: Tue, 12 Sep 2023 17:33:52 +0200 Subject: [PATCH] Login --- Controllers/HomeController.cs | 9 ++ Controllers/LoginController.cs | 50 +++++++++ Models/AziendaRif.cs | 23 ++++ Models/Login.cs | 14 +++ Models/LoginOut.cs | 199 +++++++++++++++++++++++++++++++++ Program.cs | 17 ++- Views/Home/Index.cshtml | 3 +- Views/Login/Login.cshtml | 42 +++++++ Views/Shared/_Layout.cshtml | 2 +- 9 files changed, 355 insertions(+), 4 deletions(-) create mode 100644 Controllers/LoginController.cs create mode 100644 Models/AziendaRif.cs create mode 100644 Models/Login.cs create mode 100644 Models/LoginOut.cs create mode 100644 Views/Login/Login.cshtml diff --git a/Controllers/HomeController.cs b/Controllers/HomeController.cs index 89547be..1ed9745 100644 --- a/Controllers/HomeController.cs +++ b/Controllers/HomeController.cs @@ -15,6 +15,15 @@ namespace VirtualTask.Controllers public IActionResult Index() { + string t = HttpContext.Session.GetString("tok"); + if (!string.IsNullOrEmpty(t)) + { + ViewBag.Token = t; + + } + else + ViewBag.Token = string.Empty; + return View(); } diff --git a/Controllers/LoginController.cs b/Controllers/LoginController.cs new file mode 100644 index 0000000..8cdb26d --- /dev/null +++ b/Controllers/LoginController.cs @@ -0,0 +1,50 @@ +using Microsoft.AspNetCore.Mvc; +using Newtonsoft.Json; +using System.Text; +using VirtualTask.Models; + +namespace VirtualTask.Controllers +{ + public class LoginController : Controller + { + + //https://localhost:7068/api/Polo/loginTechnical + Uri baseAddress = new Uri("http://10.0.0.187:5068/api/Polo/loginTechnical"); + HttpClient client; + public LoginController() + { + client = new HttpClient(); + client.BaseAddress = baseAddress; + } + public IActionResult Index() + { + return View(); + } + public IActionResult Login() + { + return View(); + } + + [HttpPost] + public IActionResult Login(Login model) + { + LoginOut loginOut = new LoginOut(); + string data = JsonConvert.SerializeObject(model); + StringContent content = new StringContent(data, Encoding.UTF8, "application/json"); + HttpResponseMessage response = client.PostAsync(baseAddress, content).Result; + if (response.IsSuccessStatusCode) + { + //HttpContext.Session.SetString("tok", "Jarvik"); + //string t= HttpContext.Session.GetString("tok"); + + string risultato = response.Content.ReadAsStringAsync().Result; + loginOut = JsonConvert.DeserializeObject(risultato); + HttpContext.Session.SetString("tok", loginOut.Tok); + + + return RedirectToAction("Index","Home"); + } + return View(); + } + } +} diff --git a/Models/AziendaRif.cs b/Models/AziendaRif.cs new file mode 100644 index 0000000..27fc152 --- /dev/null +++ b/Models/AziendaRif.cs @@ -0,0 +1,23 @@ +namespace VirtualTask.Models +{ + public class AziendaRif + { + /// azienda + public string? piazihoc { get; set; } + + /// tecnico + public string? picodtec { get; set; } + + /// tecnico + public string? pirifazi { get; set; } + + /// Nome azienda collegata + public string? pinomede { get; set; } + + /// url logo + public string? pilogurl { get; set; } + + /// Testo rapportino + public string? pitextin { get; set; } + } +} diff --git a/Models/Login.cs b/Models/Login.cs new file mode 100644 index 0000000..de15e3c --- /dev/null +++ b/Models/Login.cs @@ -0,0 +1,14 @@ +namespace VirtualTask.Models +{ + public class Login + { + /// Username + public string? Username { get; set; } + + /// Password + public string? Password { get; set; } + + /// Tenant + public string? Tenant { get; set; } + } +} diff --git a/Models/LoginOut.cs b/Models/LoginOut.cs new file mode 100644 index 0000000..f8d474f --- /dev/null +++ b/Models/LoginOut.cs @@ -0,0 +1,199 @@ +using System.ComponentModel.DataAnnotations.Schema; + +namespace VirtualTask.Models +{ + + /// Conf (configurazioni app) + public class Conf + { + /// pulsante naviga nelle liste + public bool? abilita_naviga { get; set; } + + /// pulsante telefona nelle liste + public bool? abilita_telefona { get; set; } + + /// abilita funzione + public bool? abilita_chiamate { get; set; } + + /// abilita funzione + public bool? abilita_manutenzioni { get; set; } + + /// barcode abilitato opzionalmente in varie sezioni. Per renderlo obbligatorio vedi flag sott + public bool? abilita_barcode { get; set; } + + /// + public bool? chiamate_accetta { get; set; } + + /// barcode obbligatorio + public bool? chiamate_accetta_barcode { get; set; } + + /// funziona anche offline + public bool? chiamate_accetta_offline { get; set; } + + /// abilita funzione + public bool? chiamate_rifiuta { get; set; } + + /// hiamate_rifiuta_barcode + public bool? chiamate_rifiuta_barcode { get; set; } + + /// funziona anche offline + public bool? chiamate_rifiuta_offline { get; set; } + + /// barcode obbligatorio + public bool? chiamate_chiudi_barcode { get; set; } + + /// barcode obbligatorio + public bool? chiamate_firma_barcode { get; set; } + + /// barcode obbligatorio + public bool? chiamate_chiudi_salva_barcode { get; set; } + + /// abilita funzione + public bool? manutenzioni_accetta { get; set; } + + /// funziona anche offline + public bool? chiamate_chiudi_salva_offline { get; set; } + + /// abilita funzione + public bool? manutenzioni_rifiuta { get; set; } + + /// barcode obbligatorio + public bool? manutenzioni_accetta_barcode { get; set; } + + /// funziona anche offline + public bool? manutenzioni_accetta_offline { get; set; } + + /// barcode obbligatorio + public bool? manutenzioni_chiudi_barcode { get; set; } + + /// barcode obbligatorio + public bool? manutenzioni_firma_barcode { get; set; } + + /// barcode obbligatorio + public bool? manutenzioni_chiudi_salva_barcode { get; set; } + + /// funziona anche offline + public bool? manutenzioni_chiudi_salva_offline { get; set; } + + /// chiede presena DPI prima di scheda + public bool? dpi_checkbox { get; set; } + + /// anagrafica visualizza anagrafica + public bool? anagrafica { get; set; } + + /// abilita stato impianto + public bool? stato_finale { get; set; } + + /// abilita + public bool? descrizione_intervento { get; set; } + + /// abilita + public bool? composizione_impianto { get; set; } + + /// abilita + public bool? note_intervento { get; set; } + + /// abilita + public bool? esito_intervento { get; set; } + + /// abilita + public bool? ora_inizio_fine { get; set; } + + /// abilita + public bool? materiali { get; set; } + + /// abilita + public bool? diritto_chiamata { get; set; } + + /// abilita + public bool? manodopera { get; set; } + + /// abilita + public bool? spese_viaggio { get; set; } + + /// abilita + public bool? tipo_pagamento { get; set; } + + /// abilita + public bool? note_pagamento { get; set; } + + /// abilita + public bool? causale { get; set; } + + /// abilita + public bool? time_sheet { get; set; } + + /// abilita + public bool? time_sheet_offline { get; set; } + + /// Costo orario intervento + [Column(TypeName = "decimal(8, 3)")] + public decimal? costo_orario { get; set; } + + /// porta ftp + public int? ftp_port { get; set; } + + /// barcode obbligatorio + public bool? manutenzioni_rifiuta_barcode { get; set; } + + /// storico rapportini abilita + public bool? storico { get; set; } + + /// storico impianto + public bool? storico_tecnico { get; set; } + + /// Abilita link storico interventi + public bool? storico_interventi { get; set; } + + /// Abilita link ricerca impianti + public bool? ricerca_impianti { get; set; } + + /// Abilita link storico impianto (solo per chi gestisce il magazzino) + public bool? storico_impianto { get; set; } + + /// Calcolo tempo rapportino automatico + public bool? ora_inizio_fine_automatica { get; set; } + + /// Stampa ora inizio-fine su buono + public bool? stampa_orario { get; set; } + + /// Stampa intestazione su buono + public string? intestazione_stampa { get; set; } + + /// Seriale chiamata da usare come teplate per inserire chiamata da app (commessa o normale) + public string? seriale_template_chi { get; set; } + + /// 0=non abilitata 1,2,3=abilitata + public Int16? abilita_inserimento_chiamate { get; set; } + } + /// LoginOut (token+user) + public class LoginOut + { + /// token + public string? Tok { get; set; } + + /// token + public string? Tccodice { get; set; } + + /// token + public string? Tcdescri { get; set; } + + /// token + public Conf? Config { get; set; } + + /// storico impianto + public List? aziende_coll { get; set; } + + /// Error Message + public string? err_title { get; set; } + + /// Error Message detail + public string? err_detail { get; set; } + + /// Status + public string? err_status_code { get; set; } + + + } + +} diff --git a/Program.cs b/Program.cs index 0727468..d04ec99 100644 --- a/Program.cs +++ b/Program.cs @@ -3,6 +3,15 @@ var builder = WebApplication.CreateBuilder(args); // Add services to the container. builder.Services.AddControllersWithViews(); +builder.Services.AddDistributedMemoryCache(); + +builder.Services.AddSession(options => +{ + options.IdleTimeout = TimeSpan.FromSeconds(10); + options.Cookie.HttpOnly = true; + options.Cookie.IsEssential = true; +}); + var app = builder.Build(); // Configure the HTTP request pipeline. @@ -20,8 +29,12 @@ app.UseRouting(); app.UseAuthorization(); +//app.MapControllerRoute( +// name: "default", +// pattern: "{controller=Home}/{action=Index}/{id?}"); + app.MapControllerRoute( name: "default", - pattern: "{controller=Home}/{action=Index}/{id?}"); - + pattern: "{controller=Login}/{action=Login}"); +app.UseSession(); app.Run(); diff --git a/Views/Home/Index.cshtml b/Views/Home/Index.cshtml index d2d19bd..bba54f5 100644 --- a/Views/Home/Index.cshtml +++ b/Views/Home/Index.cshtml @@ -4,5 +4,6 @@

Welcome

-

Learn about building Web apps with ASP.NET Core.

+ +
diff --git a/Views/Login/Login.cshtml b/Views/Login/Login.cshtml new file mode 100644 index 0000000..dd4f1c8 --- /dev/null +++ b/Views/Login/Login.cshtml @@ -0,0 +1,42 @@ +@model VirtualTask.Models.Login + +@{ + ViewData["Title"] = "Login"; + Layout = null; +} + +

Login

+ + +
+
+
+
+
+
+ + + +
+
+ + + +
+
+ + + +
+
+ +
+
+
+
+ + + +@section Scripts { + @{await Html.RenderPartialAsync("_ValidationScriptsPartial");} +} diff --git a/Views/Shared/_Layout.cshtml b/Views/Shared/_Layout.cshtml index 381e21f..35ba84b 100644 --- a/Views/Shared/_Layout.cshtml +++ b/Views/Shared/_Layout.cshtml @@ -38,7 +38,7 @@
- © 2023 - VirtualTask - Privacy + © 2023 - VirtualTask @ViewBag.Token