Пример #1
0
        public async Task <IActionResult> ComenzarRecuperacion(CorreoViewModel model)
        {
            if (!ModelState.IsValid)
            {
                return(View(model));
            }

            var usuario = await _context.Usuarios
                          .FirstOrDefaultAsync(u => u.Correo == model.Correo);

            if (usuario != null)
            {
                RecuperaContrasenia recupera = new RecuperaContrasenia();
                recupera.IdUsuario     = usuario.IdUsuario;
                recupera.Token         = GenerarToken();
                recupera.FechaModifica = DateTime.Now;
                recupera.IpModifica    = Request.HttpContext.Connection.RemoteIpAddress.MapToIPv4().ToString();
                _context.Add(recupera);
                await _context.SaveChangesAsync();

                // Enviamos correo
                UtilsMethods.EnviarCorreo(usuario, recupera.Token);
                ViewBag.Message = "Se ha enviado un correo con un link de recuperación";
            }
            return(View());
        }
        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));
        }