Пример #1
0
        public ActionResult Login([FromBody] ACuenta cuenta)
        {
            var       secretKey = Startup.cadenaToken;
            var       key       = Encoding.ASCII.GetBytes(secretKey);
            CuentaImp cuentaImp = new CuentaImp(new CuentaPersistencia());
            APersona  perosna   = cuentaImp.Login(cuenta);

            if (perosna == null)
            {
                return(NotFound());
            }

            var claims = new[]
            {
                new Claim(ClaimTypes.NameIdentifier, cuenta.NombreUsuario),
                new Claim(ClaimTypes.Actor, perosna.Rol)
            };
            ClaimsIdentity claimsIdentity = new ClaimsIdentity(claims);

            var tokenDescriptor = new SecurityTokenDescriptor
            {
                Subject            = claimsIdentity,
                Expires            = DateTime.UtcNow.AddHours(8),
                SigningCredentials = new SigningCredentials(new SymmetricSecurityKey(key), SecurityAlgorithms.HmacSha256Signature)
            };

            var tokenHandler = new JwtSecurityTokenHandler();
            var createdToken = tokenHandler.CreateToken(tokenDescriptor);

            var token = tokenHandler.WriteToken(createdToken);

            return(Ok(new { rol = perosna.Rol, token, idPersona = perosna.IdPersona }));
        }
Пример #2
0
        public bool RegistrarBD(ACuenta cuenta)


        {
            SHA256 mySHA256       = SHA256.Create();
            var    optionsBuilder = new DbContextOptionsBuilder <ApplicationContext>();

            optionsBuilder.UseSqlServer(Startup.urlConexion);
            using (var context = new ApplicationContext(optionsBuilder.Options)) {
                byte[]        bytes   = mySHA256.ComputeHash(Encoding.UTF8.GetBytes(cuenta.Contrasena));
                StringBuilder builder = new StringBuilder();
                for (int i = 0; i < bytes.Length; i++)
                {
                    builder.Append(bytes[i].ToString("x2"));
                }
                string contraseñasha = builder.ToString();
                cuenta.Contrasena = contraseñasha;
                Cuenta cuentaNueva = new Cuenta();
                cuentaNueva.Contrasena        = contraseñasha;
                cuentaNueva.NombreUsuario     = cuenta.NombreUsuario;
                cuentaNueva.PersonaForeignKey = cuenta.Persona.IdPersona;
                context.Cuenta.Add(cuentaNueva);
                context.SaveChanges();
            }


            return(true);
        }
Пример #3
0
        public APersona LoginBD(ACuenta cuenta)
        {
            SHA256 mySHA256       = SHA256.Create();
            var    optionsBuilder = new DbContextOptionsBuilder <ApplicationContext>();

            optionsBuilder.UseSqlServer(Startup.urlConexion);
            using (var context = new ApplicationContext(optionsBuilder.Options))
            {
                byte[]        bytes   = mySHA256.ComputeHash(Encoding.UTF8.GetBytes(cuenta.Contrasena));
                StringBuilder builder = new StringBuilder();
                for (int i = 0; i < bytes.Length; i++)
                {
                    builder.Append(bytes[i].ToString("x2"));
                }
                string  contraseñasha = builder.ToString();
                Persona personaBD     = context.Cuenta.Where(cuentaBD => cuentaBD.NombreUsuario == cuenta.NombreUsuario &&
                                                             cuentaBD.Contrasena == contraseñasha).Select(cuentadb => cuentadb.Persona).FirstOrDefault();
                APersona persona = null;
                if (personaBD != null)
                {
                    persona = new APersona()
                    {
                        IdPersona = personaBD.IdPersona,
                        Rol       = personaBD.Rol
                    };
                }
                return(persona);
            }
        }
Пример #4
0
 public APersona Login(ACuenta cuenta)
 {
     return(cuentaPersistencia.LoginBD(cuenta));
 }
Пример #5
0
 public bool Registar(ACuenta cuenta)
 {
     return(this.cuentaPersistencia.RegistrarBD(cuenta));
 }