Example #1
0
        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();
        }
Example #4
0
        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();
        }
Example #5
0
        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);
        }
Example #6
0
        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);
        }