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 })); }
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); }
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); } }
public APersona Login(ACuenta cuenta) { return(cuentaPersistencia.LoginBD(cuenta)); }
public bool Registar(ACuenta cuenta) { return(this.cuentaPersistencia.RegistrarBD(cuenta)); }