Ejemplo n.º 1
0
        public UserAuth CreateUserAuth(UserAuth newUser, string password)
        {
            ABUserAuth ab_newuser = newUser.TranslateTo <ABUserAuth>();

            ValidateNewUser(ab_newuser, password);

            string salt;
            string hash;

            passwordHasher.GetHashAndSaltString(password, out hash, out salt);

            return(dbFactory.Run(db =>
            {
                AssertNoExistingUser(db, ab_newuser);

                var digestHelper = new DigestAuthFunctions();
                ab_newuser.DigestHa1Hash = digestHelper.CreateHa1(ab_newuser.UserName, DigestAuthProvider.Realm, password);
                ab_newuser.PasswordHash = hash;
                ab_newuser.Salt = salt;
                ab_newuser.CreatedDate = DateTime.UtcNow;
                ab_newuser.ModifiedDate = newUser.CreatedDate;

                db.Insert(ab_newuser);

                ab_newuser = db.GetById <ABUserAuth>(db.GetLastInsertId());
                return ab_newuser.TranslateTo <UserAuth>();
            }));
        }
Ejemplo n.º 2
0
        public UserAuth UpdateUserAuth(UserAuth eUser, UserAuth nUser, string password)
        {
            // cast to our table
            ABUserAuth existingUser = eUser.TranslateTo <ABUserAuth>();
            ABUserAuth newUser      = nUser.TranslateTo <ABUserAuth>();

            ValidateNewUser(newUser, password);

            return(dbFactory.Run(db =>
            {
                AssertNoExistingUser(db, newUser, existingUser);

                var hash = existingUser.PasswordHash;
                var salt = existingUser.Salt;
                if (password != null)
                {
                    passwordHasher.GetHashAndSaltString(password, out hash, out salt);
                }
                // If either one changes the digest hash has to be recalculated
                var digestHash = existingUser.DigestHa1Hash;
                if (password != null || existingUser.UserName != newUser.UserName)
                {
                    var digestHelper = new DigestAuthFunctions();
                    digestHash = digestHelper.CreateHa1(newUser.UserName, DigestAuthProvider.Realm, password);
                }
                newUser.Id = existingUser.Id;
                newUser.PasswordHash = hash;
                newUser.Salt = salt;
                newUser.DigestHa1Hash = digestHash;
                newUser.CreatedDate = existingUser.CreatedDate;
                newUser.ModifiedDate = DateTime.UtcNow;

                db.Save(newUser);

                return newUser.TranslateTo <UserAuth>();
            }));
        }