Esempio n. 1
0
 public Users AddUser(AddUserCommand user)
 {
     using (var db = _paintStoreContext)
     {
         if (db.Users.Any(x => x.Email == user.Email))
         {
             throw new DuplicateEmailException();
         }
         if (db.Users.Any(x => x.Name == user.Name))
         {
             throw new DuplicateNameException();
         }
         var newUser = new Users()
         {
             Email = user.Email, Name = user.Name, Link = user.Name.ToLower(), About = ""
         };
         newUser.PasswordSoil = CredentialsHelpers.CreateSalt();
         var encoding = new ASCIIEncoding();
         var soil     = encoding.GetBytes(newUser.PasswordSoil);
         var password = encoding.GetBytes(user.Password);
         newUser.PasswordHash = Convert.ToBase64String(CredentialsHelpers.GenerateSaltedHash(password, soil));
         db.Users.Add(newUser);
         db.SaveChanges();
         return(newUser);
     }
 }
Esempio n. 2
0
        public Users EditUserCredentials(EditUserCredentialsCommand account)
        {
            using (var db = _paintStoreContext)
            {
                _signInService.SignInCheck(new SignInCommand {
                    Email = account.OldEmail, Password = account.OldPassword
                }, db);

                var accountToUpdate = db.Users.First(x => x.Id == account.Id);

                if (account.NewEmail != null)
                {
                    accountToUpdate.Email = account.NewEmail;
                }
                if (account.NewPassword != null)
                {
                    if (account.NewPassword.Length < 8)
                    {
                        throw new BadPasswordException();
                    }
                    accountToUpdate.PasswordSoil = CredentialsHelpers.CreateSalt();
                    var encoding = new ASCIIEncoding();
                    var soil     = encoding.GetBytes(accountToUpdate.PasswordSoil);
                    var password = encoding.GetBytes(account.NewPassword);
                    accountToUpdate.PasswordHash = Convert.ToBase64String(CredentialsHelpers.GenerateSaltedHash(password, soil));
                }

                accountToUpdate.Token = CredentialsHelpers.CreateSalt();
                db.SaveChanges();
                return(accountToUpdate);
            }
        }
Esempio n. 3
0
        public SignInResult SignInCheck(SignInCommand signInCommand, PaintStoreContext db)
        {
            var userToSignIn = db.Users.FirstOrDefault(x => x.Email == signInCommand.Email);

            if (userToSignIn == null)
            {
                throw new UnauthorizedAccessException();
            }

            var soil          = _encoding.GetBytes(userToSignIn.PasswordSoil);
            var passwordBytes = _encoding.GetBytes(signInCommand.Password);

            var soiledPassword = Convert.ToBase64String(CredentialsHelpers.GenerateSaltedHash(passwordBytes, soil));

            if (soiledPassword != userToSignIn.PasswordHash)
            {
                throw new UnauthorizedAccessException();
            }

            if (userToSignIn.Token == null)
            {
                userToSignIn.Token = CredentialsHelpers.CreateSalt();
                return(new SignInResult()
                {
                    UserId = userToSignIn.Id, Token = userToSignIn.Token
                });
            }
            else
            {
                return(new SignInResult()
                {
                    UserId = userToSignIn.Id, Token = userToSignIn.Token
                });
            }
        }
        private string GenerateHashedPassword(Users user, string passwordToSet)
        {
            var encoding = new ASCIIEncoding();
            var soil     = encoding.GetBytes(user.PasswordSoil);
            var password = encoding.GetBytes(passwordToSet);

            return(Convert.ToBase64String(CredentialsHelpers.GenerateSaltedHash(password, soil)));
        }
Esempio n. 5
0
 public bool SignOut(SignOutCommand signOutCommand)
 {
     try
     {
         using (var db = _paintStoreContext)
         {
             var userToSignOut = db.Users.First(x => x.Id == signOutCommand.UserId);
             userToSignOut.Token = CredentialsHelpers.CreateSalt();
             db.SaveChanges();
         }
         return(true);
     }
     catch (Exception)
     {
         return(false);
     }
 }