diff --git a/Aspnet/Controllers/AdminController.cs b/Aspnet/Controllers/AdminController.cs index 1c7f319..d41d0e0 100644 --- a/Aspnet/Controllers/AdminController.cs +++ b/Aspnet/Controllers/AdminController.cs @@ -81,7 +81,7 @@ public class AdminController: ControllerBase if (mcon == null) throw new Exception(); mc = new MinioClient().WithCredentials(mcon.usr, mcon.scrt) - .WithEndpoint("192.168.1.11:9000") + .WithEndpoint("0.0.0.0:9000") .WithSSL(false) .Build(); } diff --git a/Aspnet/Controllers/ContratoController.cs b/Aspnet/Controllers/ContratoController.cs index 1f45809..f617f37 100644 --- a/Aspnet/Controllers/ContratoController.cs +++ b/Aspnet/Controllers/ContratoController.cs @@ -519,10 +519,10 @@ public class ContratoController: ControllerBase { if (mcon == null) throw new Exception(); mc = new MinioClient().WithCredentials(mcon.usr, mcon.scrt) - .WithEndpoint("192.168.1.11:9000") + .WithEndpoint("0.0.0.0:9000") .WithSSL(false) .Build(); - } + } } [HttpPost("api/contratos/subirContrato")] @@ -768,7 +768,7 @@ public class ContratoController: ControllerBase { Contrato? cont = RepositorioContratos.Singleton.ObtenerContratoPorId(idcontrato); if (cont == null) return BadRequest(); - if (cont.Dniinquilino != cli.Dni && cont.Dnipropietario != cli.Dni) return BadRequest(); + if ((cont.Dniinquilino != cli.Dni && cont.Dnipropietario != cli.Dni)|| !RepositorioGrupos.Singleton.CheckGrupos(Auth, "Admin")) return BadRequest(); var list = cont.Idgarantes; List l = new(); @@ -835,4 +835,4 @@ public class ContratoController: ControllerBase { return ret; } -} \ No newline at end of file +} diff --git a/Aspnet/Controllers/VentaController.cs b/Aspnet/Controllers/VentaController.cs index 6518713..76706ca 100644 --- a/Aspnet/Controllers/VentaController.cs +++ b/Aspnet/Controllers/VentaController.cs @@ -225,7 +225,7 @@ public class VentaController:ControllerBase { if (mcon == null) throw new Exception(); mc = new MinioClient().WithCredentials(mcon.usr, mcon.scrt) - .WithEndpoint("192.168.1.11:9000") + .WithEndpoint("0.0.0.0:9000") .WithSSL(false) .Build(); } diff --git a/Aspnet/Program.cs b/Aspnet/Program.cs index 4ad5df2..aa81588 100644 --- a/Aspnet/Program.cs +++ b/Aspnet/Program.cs @@ -16,7 +16,7 @@ builder.Services.AddEndpointsApiExplorer(); builder.Services.AddSwaggerGen(); builder.Services.AddMinio(options => options .WithCredentials(mcon.usr, mcon.scrt) - .WithEndpoint("192.168.1.11:9000") + .WithEndpoint("127.0.0.0:9000") .WithSSL(false) .Build()); diff --git a/Aspnet/bin/Debug/net8.0/settings.json b/Aspnet/bin/Debug/net8.0/settings.json index b13e63f..ca7cba9 100644 --- a/Aspnet/bin/Debug/net8.0/settings.json +++ b/Aspnet/bin/Debug/net8.0/settings.json @@ -1,4 +1,4 @@ { - "usr":"u39RPWIpfVa5S67gGiNk", - "scrt":"UzNdqpwpao7Cjh3VSyvZVw7IIXW8SQ9c1F2JsttY" + "usr":"nwFNMLJcn5m0owbzeXMs", + "scrt":"Mf9HxTir5mIGwWSBtQXd6DRK2k00V0EyXk7QTu70" } diff --git a/Aspnet/settings.json b/Aspnet/settings.json index a595e0c..ca7cba9 100644 --- a/Aspnet/settings.json +++ b/Aspnet/settings.json @@ -1,4 +1,4 @@ { - "usr":"aVO9C3PqeK1hiPCyqZCj", - "scrt":"szj58kceWG3GcRZ8P1QCQiv5tSjMI7iD5zfjneTT" -} \ No newline at end of file + "usr":"nwFNMLJcn5m0owbzeXMs", + "scrt":"Mf9HxTir5mIGwWSBtQXd6DRK2k00V0EyXk7QTu70" +} diff --git a/Entidades/Alquilafacilcontext.cs b/Entidades/Alquilafacilcontext.cs index 1412713..0d9ce17 100644 --- a/Entidades/Alquilafacilcontext.cs +++ b/Entidades/Alquilafacilcontext.cs @@ -55,7 +55,7 @@ public partial class AlquilaFacilContext : DbContext protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) #warning To protect potentially sensitive information in your connection string, you should move it out of source code. You can avoid scaffolding the connection string by using the Name= syntax to read it from configuration - see https://go.microsoft.com/fwlink/?linkid=2131148. For more guidance on storing connection strings, see https://go.microsoft.com/fwlink/?LinkId=723263. - => optionsBuilder.UseMySQL("Server=fedesrv.ddns.net;Port=30006;Database=AlquilaFacil;Uid=AlquilaFacil;Pwd=.n@9c2ve*0,b1ETv].Kipa/~pR~V;Connection Timeout=5;SslMode=none"); + => optionsBuilder.UseMySQL("Server=127.0.0.1;Port=3306;Database=AlquilaFacil;Uid=AlquilaFacil;Pwd=.n@9c2ve*0,b1ETv].Kipa/~pR~V;Connection Timeout=5;SslMode=none"); protected override void OnModelCreating(ModelBuilder modelBuilder) { @@ -419,6 +419,42 @@ public partial class AlquilaFacilContext : DbContext entity.Property(e => e.Nombre) .HasMaxLength(12) .HasColumnName("nombre"); + + entity.HasMany(d => d.IdGrupoHijos).WithMany(p => p.IdGrupoPadres) + .UsingEntity>( + "GrupoSubgrupo", + r => r.HasOne().WithMany() + .HasForeignKey("IdGrupoHijo") + .HasConstraintName("Grupo_Subgrupo_ibfk_2"), + l => l.HasOne().WithMany() + .HasForeignKey("IdGrupoPadre") + .HasConstraintName("Grupo_Subgrupo_ibfk_1"), + j => + { + j.HasKey("IdGrupoPadre", "IdGrupoHijo").HasName("PRIMARY"); + j.ToTable("Grupo_Subgrupo"); + j.HasIndex(new[] { "IdGrupoHijo" }, "IdGrupoHijo"); + j.IndexerProperty("IdGrupoPadre").HasColumnType("int(11)"); + j.IndexerProperty("IdGrupoHijo").HasColumnType("int(11)"); + }); + + entity.HasMany(d => d.IdGrupoPadres).WithMany(p => p.IdGrupoHijos) + .UsingEntity>( + "GrupoSubgrupo", + r => r.HasOne().WithMany() + .HasForeignKey("IdGrupoPadre") + .HasConstraintName("Grupo_Subgrupo_ibfk_1"), + l => l.HasOne().WithMany() + .HasForeignKey("IdGrupoHijo") + .HasConstraintName("Grupo_Subgrupo_ibfk_2"), + j => + { + j.HasKey("IdGrupoPadre", "IdGrupoHijo").HasName("PRIMARY"); + j.ToTable("Grupo_Subgrupo"); + j.HasIndex(new[] { "IdGrupoHijo" }, "IdGrupoHijo"); + j.IndexerProperty("IdGrupoPadre").HasColumnType("int(11)"); + j.IndexerProperty("IdGrupoHijo").HasColumnType("int(11)"); + }); }); modelBuilder.Entity(entity => diff --git a/Entidades/Grupo.cs b/Entidades/Grupo.cs index 420bc05..4aac993 100644 --- a/Entidades/Grupo.cs +++ b/Entidades/Grupo.cs @@ -4,14 +4,34 @@ using System.Text.Json.Serialization; namespace Entidades; -public partial class Grupo +public partial class Grupo:IComponenteSeguridad { public int Id { get; set; } public string Nombre { get; set; } = null!; + [JsonIgnore] + public virtual ICollection IdGrupoHijos { get; set; } = new List(); + + [JsonIgnore] + public virtual ICollection IdGrupoPadres { get; set; } = new List(); + [JsonIgnore] public virtual ICollection Idclientes { get; set; } = new List(); public virtual ICollection Idpermisos { get; set; } = new List(); + + public void ObtenerPermisos(HashSet permisos, HashSet visitados) + { + if (visitados.Contains(Id)) return; + visitados.Add(Id); + foreach (var permiso in Idpermisos) { + permisos.Add(permiso); + } + + foreach (var subgrupo in IdGrupoPadres) { + subgrupo.ObtenerPermisos(permisos, visitados); + } + + } } diff --git a/Entidades/Permiso.cs b/Entidades/Permiso.cs index e8da1b5..ec85059 100644 --- a/Entidades/Permiso.cs +++ b/Entidades/Permiso.cs @@ -4,12 +4,17 @@ using System.Text.Json.Serialization; namespace Entidades; -public partial class Permiso +public partial class Permiso:IComponenteSeguridad { public int Id { get; set; } public string Descripcion { get; set; } = null!; - + [JsonIgnore] public virtual ICollection Idgrupos { get; set; } = new List(); + + public void ObtenerPermisos(HashSet permisos, HashSet visitados) + { + permisos.Add(this); + } } diff --git a/Entidades/SeguridadComposite/ComponenteSeguridad.cs b/Entidades/SeguridadComposite/ComponenteSeguridad.cs new file mode 100644 index 0000000..140a116 --- /dev/null +++ b/Entidades/SeguridadComposite/ComponenteSeguridad.cs @@ -0,0 +1,5 @@ +namespace Entidades; + +public interface IComponenteSeguridad { + public void ObtenerPermisos(HashSet permisos, HashSet visitados); +} \ No newline at end of file diff --git a/Entidades/makefile b/Entidades/makefile index cdf19d7..b9d75c1 100644 --- a/Entidades/makefile +++ b/Entidades/makefile @@ -1,5 +1,5 @@ run: - dotnet ef dbcontext scaffold "Server=fedesrv.ddns.net;Port=30006;Database=AlquilaFacil;Uid=AlquilaFacil;Pwd=.n@9c2ve*0,b1ETv].Kipa/~pR~V;Connection Timeout=5;SslMode=none" MySql.EntityFrameworkCore -o . + dotnet ef dbcontext scaffold "Server=127.0.0.1;Port=3306;Database=AlquilaFacil;Uid=AlquilaFacil;Pwd=.n@9c2ve*0,b1ETv].Kipa/~pR~V;Connection Timeout=5;SslMode=none" MySql.EntityFrameworkCore -o . ./convert_to_pascalcase.sh clean: diff --git a/Front/package-lock.json b/Front/package-lock.json index e879516..5f90268 100644 --- a/Front/package-lock.json +++ b/Front/package-lock.json @@ -9,6 +9,7 @@ "version": "0.0.0", "dependencies": { "@sveltestrap/sveltestrap": "^6.2.8", + "bootstrap": "^5.3.3", "chartjs": "^0.3.24", "svelte-routing": "^2.13.0" }, @@ -206,6 +207,25 @@ "node": ">= 0.4" } }, + "node_modules/bootstrap": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.3.3.tgz", + "integrity": "sha512-8HLCdWgyoMguSO9o+aH+iuZ+aht+mzW0u3HIMzVu7Srrpv7EBBxTnrFlSCskwdY1+EOFQSm7uMJhNQHkdPcmjg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/twbs" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/bootstrap" + } + ], + "license": "MIT", + "peerDependencies": { + "@popperjs/core": "^2.11.8" + } + }, "node_modules/chartjs": { "version": "0.3.24", "license": "MIT" diff --git a/Front/package.json b/Front/package.json index 4dc3054..e9fd606 100644 --- a/Front/package.json +++ b/Front/package.json @@ -22,6 +22,7 @@ }, "dependencies": { "@sveltestrap/sveltestrap": "^6.2.8", + "bootstrap": "^5.3.3", "chartjs": "^0.3.24", "svelte-routing": "^2.13.0" } diff --git a/Front/src/App.svelte b/Front/src/App.svelte index b5870a8..59f47f0 100644 --- a/Front/src/App.svelte +++ b/Front/src/App.svelte @@ -1,4 +1,5 @@