public async Task <IActionResult> Create(RegistroViewModel model)
        {
            if (ModelState.IsValid)
            {
                Usuario usuario = new Usuario();
                usuario.NombreUsuario = model.Username;
                usuario.Correo        = model.Correo;
                usuario.Salt          = UtilsMethods.GenerarSalt();
                usuario.Contrasenia   = Crypto.HashPassword(model.Contrasenia + usuario.Salt);
                usuario.IdRol         = 2;
                usuario.FechaModifica = DateTime.Now;
                usuario.IpModifica    = Request.HttpContext.Connection.RemoteIpAddress.MapToIPv4().ToString();

                _context.Add(usuario);
                await _context.SaveChangesAsync();

                int ultimoUsuario = _context.Usuarios.
                                    OrderByDescending(u => u.IdUsuario).FirstOrDefault().IdUsuario;

                Cliente cliente = new Cliente();
                cliente.Nombre        = model.Nombres;
                cliente.Apellidos     = model.Apellidos;
                cliente.Direccion     = model.Direccion;
                cliente.Genero        = model.Genero;
                cliente.IdUsuario     = ultimoUsuario;
                cliente.FechaModifica = DateTime.Now;
                cliente.IpModifica    = Request.HttpContext.Connection.RemoteIpAddress.MapToIPv4().ToString();

                _context.Add(cliente);
                await _context.SaveChangesAsync();

                UtilsMethods.EnviarCorreo(usuario);

                return(RedirectToAction(nameof(Index)));
            }
            return(View(model));
        }
Пример #2
0
        public async Task <IActionResult> Recuperacion(RecuperacionViewModel model)
        {
            if (!ModelState.IsValid)
            {
                return(View(model));
            }

            var usuario = await _context.RecuperaContrasenias.Include(u => u.IdUsuarioNavigation)
                          .FirstOrDefaultAsync(u => u.Token == model.Token);

            if (usuario != null)
            {
                if (usuario.IdUsuarioNavigation != null)
                {
                    Usuario user = usuario.IdUsuarioNavigation;
                    user.Salt          = UtilsMethods.GenerarSalt();
                    user.Contrasenia   = CryptoHelper.Crypto.HashPassword(model.Contrasenia + user.Salt);
                    user.FechaModifica = DateTime.Now;
                    user.IpModifica    = Request.HttpContext.Connection.RemoteIpAddress.MapToIPv4().ToString();

                    usuario.Token = "Expired";
                    _context.Update(usuario);
                    _context.Update(user);
                    await _context.SaveChangesAsync();

                    ViewBag.Message = "Contraseña modificada con éxito";
                    return(View(nameof(Index)));
                }
            }
            else
            {
                ViewBag.Error = "Token no válido";
                return(View("Index"));
            }

            return(View(model));
        }