async Task <User> IRequestHandler <RegistrationCommand, User> .Handle(RegistrationCommand command, CancellationToken cancellationToken) { var user = _context.Users.FirstOrDefault(item => item.UserName == command.UserName); if (user != null) { throw new Exception("Such user already exists"); } _hashService.CreatePasswordHash(command.Password, out var passwordSalt, out var passwordHash); var newUser = new User() { Id = Guid.NewGuid(), UserName = command.UserName, PasswordSalt = passwordSalt, PasswordHash = passwordHash, Role = Role.User, Image = "./assets/Images/NewUser.jpg", Invoice = 100 }; _context.Users.Add(newUser); await _context.SaveChangesAsync(cancellationToken); return(newUser); }
async Task <bool> IRequestHandler <UploadGameImageCommand, bool> .Handle(UploadGameImageCommand command, CancellationToken cancellationToken) { var game = _context.Games.FirstOrDefault(item => item.Id == Guid.Parse(command.GameId)); _hashService.CreatePasswordHash(command.Image.FileName, out var passwordSalt, out var passwordHash); var fileName = BitConverter.ToString(passwordHash) + "_" + command.Image.FileName; var path = @"E:\Labs\ASP.NET Course Project\front\front-end\src\assets\Images\Games\"; using (var fileStream = new FileStream(path + fileName, FileMode.Create)) { await command.Image.CopyToAsync(fileStream); } if (game != null) { game.Image = "./assets/Images/Games/" + fileName; await _context.SaveChangesAsync(cancellationToken); return(true); } throw new Exception(); }
async Task <string> IRequestHandler <UploadImageCommand, string> .Handle(UploadImageCommand command, CancellationToken cancellationToken) { var user = _context.Users.FirstOrDefault(item => item.Id == Guid.Parse(command.UserId)); _hashService.CreatePasswordHash(command.Image.FileName, out var passwordSalt, out var passwordHash); var fileName = BitConverter.ToString(passwordHash) + "_" + command.Image.FileName; var path = @"E:\Labs\ASP.NET Course Project\front\front-end\src\assets\Images\Account\"; using (var fileStream = new FileStream(path + fileName, FileMode.Create)) { await command.Image.CopyToAsync(fileStream); } if (user != null) { var deleteFileName = user.Image.Split('/'); var deleteFile = new FileInfo(path + deleteFileName[deleteFileName.Length - 1]); if (deleteFile.Exists) { deleteFile.Delete(); } user.Image = "./assets/Images/Account/" + fileName; await _context.SaveChangesAsync(cancellationToken); return(user.Image); } throw new Exception(); }
public async Task Register(UserForRegistrationDto userForRegistration) { var user = _mapper.Map <Domain.Entities.User>(userForRegistration); var password = _hashService.CreatePasswordHash(userForRegistration.Password); user.PasswordHash = password.PasswordHash; user.PasswordSalt = password.PasswordSalt; user.Roles.Add(new UserRole { RoleId = (int)Roles.User }); _uow.Repository <Domain.Entities.User>().Add(user); await _uow.SaveAsync(); }
private static void SeedUserWithRoles(IHashService hashService) { var roles = new List <Role>(); var users = new List <User>(); foreach (var role in EnumLibrary.GetIdAndNameDictionaryOfEnumType(typeof(Common.Enums.Roles))) { var roleToAdd = new Role { Id = role.Key, Name = role.Value }; roles.Add(roleToAdd); // TODO: set this password in config var password = hashService.CreatePasswordHash("password"); var user = new User { Username = role.Value, PasswordHash = password.PasswordHash, PasswordSalt = password.PasswordSalt, Email = $"{role.Value}@testmail.com", Roles = new List <UserRole> { new UserRole { Role = roleToAdd } }, FirstName = "FirstName", LastName = "LastName" }; users.Add(user); } _uow.Repository <Role>().AddRange(roles); _uow.Repository <User>().AddRange(users); }
async Task <bool> IRequestHandler <ChangePasswordCommand, bool> .Handle(ChangePasswordCommand command, CancellationToken cancellationToken) { var user = _context.Users.FirstOrDefault(item => item.Id == Guid.Parse(command.UserId)); if (user == null) { return(false); } if (!_hashService.Verify(user.PasswordSalt, user.PasswordHash, command.OldPassword)) { return(false); } _hashService.CreatePasswordHash(command.NewPassword, out var passwordSalt, out var passwordHash); user.PasswordHash = passwordHash; user.PasswordSalt = passwordSalt; await _context.SaveChangesAsync(cancellationToken); return(true); }