コード例 #1
0
        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());
        }
コード例 #2
0
        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());
        }