Esempio n. 1
0
#pragma warning disable CS0161 // 'UsuariosController.Create(Usuarios)': no todas las rutas de acceso de código devuelven un valor
        public ActionResult Create(Usuarios u)
#pragma warning restore CS0161 // 'UsuariosController.Create(Usuarios)': no todas las rutas de acceso de código devuelven un valor
        {
            if (!ModelState.IsValid)
            {
                return(View());
            }
            try
            {
                string hashed = Convert.ToBase64String(KeyDerivation.Pbkdf2(
                                                           password: u.Clave,
                                                           salt: System.Text.Encoding.ASCII.GetBytes(configuration["Salt"]),
                                                           prf: KeyDerivationPrf.HMACSHA1,
                                                           iterationCount: 1000,
                                                           numBytesRequested: 256 / 8));
                u.Clave = hashed;

                var nbreRnd = Guid.NewGuid();//posible nombre aleatorio
                int res     = repositorioUsuarios.Alta(u);
                if (u.AvatarFile != null && u.IdUs > 0)
                {
                    string wwwPath = environment.WebRootPath;
                    string path    = Path.Combine(wwwPath, "img");
                    if (!Directory.Exists(path))
                    {
                        Directory.CreateDirectory(path);
                    }
                    //Path.GetFileName(u.AvatarFile.FileName);//este nombre se puede repetir
                    string fileName     = "avatar_" + u.IdUs + Path.GetExtension(u.AvatarFile.FileName);
                    string pathCompleto = Path.Combine(path, fileName);
                    u.Avatar = Path.Combine("/img", fileName);
                    using (FileStream stream = new FileStream(pathCompleto, FileMode.Create))
                    {
                        u.AvatarFile.CopyTo(stream);
                    }
                    repositorioUsuarios.Modificacion(u);
                }
                return(RedirectToAction(nameof(Index)));
            }
            catch
            {
                return(View());
            }
        }