Esempio n. 1
0
        public async Task <IActionResult> Create([Bind("UserName,Password,IsActive,Thumbnail")] UsersViewModel users) // فیلدهایی که در تگ بایندینگ می گذاریم را فقط می فرستیم برای بکند
        {
            //if (ModelState.IsValid)
            //{
            //    users.Id = Guid.NewGuid();
            //    _context.Add(users);
            //    await _context.SaveChangesAsync();
            //    return RedirectToAction(nameof(Index));
            //}
            //return View(users);
            MemoryStream stream = new MemoryStream();

            users.Thumbnail.CopyTo(stream);

            var    saltPassword = new Guid();
            var    hashPassword = EncryptionUtility.HashPasswordWithSalt(users.Password, saltPassword.ToString());
            string newFileName  = $"{Guid.NewGuid()}.{ Path.GetExtension(users.Thumbnail.FileName)}"; //generate new file name

            var user = new Users {
                Id           = Guid.NewGuid(),
                UserName     = users.UserName,
                Password     = hashPassword,
                PasswordSalt = saltPassword,
                IsActive     = users.IsActive,
                //save file in db
                Thumbnail = stream.ToArray(),
                ThumbnailFileExtention = users.Thumbnail.ContentType,
                ThumbnailUrl           = newFileName
            };

            await _context.AddAsync(user);

            await _context.SaveChangesAsync();

            //save file in disk
            //string folderPath = Path.Combine(_webHostEnvironment.WebRootPath, "Files");
            string filePath = Path.Combine(_webHostEnvironment.WebRootPath, "Files", newFileName);

            using (var fileStream = new FileStream(filePath, FileMode.Create))
            {
                await users.Thumbnail.CopyToAsync(fileStream);
            }



            return(RedirectToAction(nameof(Index)));
        }
Esempio n. 2
0
        public async Task <IActionResult> Register(RegisterViewModel model)
        {
            //if username exist
            //check password and confirmpassword
            //get saltpassword from user table

            var saltPassword = Guid.NewGuid();
            var hashPassword = EncryptionUtility.HashPasswordWithSalt(model.Password, saltPassword.ToString());

            var user = new Users
            {
                Id           = Guid.NewGuid(),
                IsActive     = true,
                UserName     = model.UserName,
                Password     = hashPassword,
                PasswordSalt = saltPassword
            };

            await _context.Users.AddAsync(user);

            await _context.SaveChangesAsync();

            return(RedirectToAction(nameof(Login)));
        }