public async Task <ActionResult> recupero_complete([FromBody] LogonCompleteCommand comando) { Usuario usuario = await _context.Usuarios.FirstOrDefaultAsync <Usuario>(e => e.Email == comando.Email); if (usuario == null) { usuario = await _context.Usuarios.FirstOrDefaultAsync <Usuario>(e => e.Email == comando.Email + "_" + e.Sal); if (usuario == null) { return(BadRequest()); } } string hashed = Convert.ToBase64String(KeyDerivation.Pbkdf2( password: comando.Password, salt: Convert.FromBase64String(usuario.Sal), prf: KeyDerivationPrf.HMACSHA1, iterationCount: 10000, numBytesRequested: 256 / 8)); usuario.Email = comando.Email + "_" + usuario.Sal; usuario.Password = hashed; usuario.Ticket = Guid.NewGuid().ToString().Substring(0, 6).ToUpper(); _context.Usuarios.Update(usuario); await _context.SaveChangesAsync(); await _mailService.newUserMail(usuario.Perfil, usuario.Ticket, comando.Email, usuario.Apellido + ", " + usuario.Nombre); return(Ok()); }
public async Task <ActionResult> logon_complete([FromBody] LogonCompleteCommand comando) { if (await _context.Usuarios.AnyAsync(e => e.Email == comando.Email)) { return(BadRequest()); } if (await _context.Usuarios.AnyAsync(e => e.Email == comando.Email + "_" + e.Sal)) { return(BadRequest()); } Usuario usuario = new Usuario(); usuario.Ticket = Guid.NewGuid().ToString(); byte[] salt = new byte[128 / 8]; using (var rng = RandomNumberGenerator.Create()) { rng.GetBytes(salt); } string sal = Convert.ToBase64String(salt); string hashed = Convert.ToBase64String(KeyDerivation.Pbkdf2( password: comando.Password, salt: Convert.FromBase64String(sal), prf: KeyDerivationPrf.HMACSHA1, iterationCount: 10000, numBytesRequested: 256 / 8)); usuario.Email = comando.Email + "_" + sal; usuario.Password = hashed; usuario.Sal = sal; usuario.Ticket = Guid.NewGuid().ToString().Substring(0, 6).ToUpper(); usuario.FechaCreacion = DateTime.UtcNow; usuario.Nombre = comando.Nombre; usuario.Apellido = comando.Apellido; usuario.Sexo = comando.Sexo; usuario.FechaNacimiento = comando.FechaNacimiento; usuario.LugarResidencia = comando.LugarResidencia; usuario.Foto = comando.Foto; usuario.Documento = comando.Documento; usuario.TipoDocumento = comando.TipoDocumento; usuario.Perfil = Roles.Cliente; usuario.Telefono = comando.Telefono; usuario.Activo = true; _context.Usuarios.Add(usuario); await _context.SaveChangesAsync(); await _mailService.newUserMail(usuario.Perfil, usuario.Ticket, comando.Email, usuario.Apellido + ", " + usuario.Nombre); return(Ok()); }