示例#1
0
        public IUserAuth UpdateUserAuth(IUserAuth existingUser, IUserAuth newUser, string password)
        {
            newUser.ValidateNewUser(password);

            AssertNoExistingUser(mongoDatabase, newUser, existingUser);

            var hash = existingUser.PasswordHash;
            var salt = existingUser.Salt;

            if (password != null)
            {
                var saltedHash = HostContext.Resolve <IHashProvider>();
                saltedHash.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;
            SaveUser(newUser);

            return(newUser);
        }
示例#2
0
        public virtual async Task <IUserAuth> CreateUserAuthAsync(IUserAuth newUser, string password, CancellationToken token = default)
        {
            newUser.ValidateNewUser(password);

            await using var redis = await factory.GetClientAsync(token).ConfigAwait();
            await AssertNoExistingUserAsync(redis, newUser, token : token).ConfigAwait();

            newUser.Id = await redis.AsAsync <IUserAuth>().GetNextSequenceAsync(token).ConfigAwait();

            newUser.PopulatePasswordHashes(password);
            newUser.CreatedDate  = DateTime.UtcNow;
            newUser.ModifiedDate = newUser.CreatedDate;

            var userId = newUser.Id.ToString(CultureInfo.InvariantCulture);

            if (!newUser.UserName.IsNullOrEmpty())
            {
                await redis.SetEntryInHashAsync(IndexUserNameToUserId, newUser.UserName, userId, token).ConfigAwait();
            }
            if (!newUser.Email.IsNullOrEmpty())
            {
                await redis.SetEntryInHashAsync(IndexEmailToUserId, newUser.Email, userId, token).ConfigAwait();
            }

            await redis.StoreAsync(newUser, token).ConfigAwait();

            return(newUser);
        }
示例#3
0
        public virtual IUserAuth UpdateUserAuth(IUserAuth existingUser, IUserAuth newUser, string password)
        {
            newUser.ValidateNewUser(password);

            return(Exec(db =>
            {
                AssertNoExistingUser(db, newUser, existingUser);

                var hash = existingUser.PasswordHash;
                var salt = existingUser.Salt;
                if (password != null)
                {
                    HostContext.Resolve <IHashProvider>().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)
                {
                    digestHash = new DigestAuthFunctions().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((TUserAuth)newUser);

                return newUser;
            }));
        }
        public IUserAuth UpdateUserAuth(IUserAuth existingUser, IUserAuth newUser, string password)
        {
            newUser.ValidateNewUser(password);

            AssertNoExistingUser(newUser, existingUser);

            var hash = existingUser.PasswordHash;
            var salt = existingUser.Salt;

            if (password != null)
            {
                var saltedHash = HostContext.Resolve <IHashProvider>();
                saltedHash.GetHashAndSaltString(password, out hash, out salt);
            }

            newUser.Id           = existingUser.Id;
            newUser.PasswordHash = hash;
            newUser.Salt         = salt;
            newUser.CreatedDate  = existingUser.CreatedDate;
            newUser.ModifiedDate = DateTime.UtcNow;

            var nhSession = GetCurrentSessionFn(sessionFactory);

            nhSession.Save(new UserAuthNHibernate(newUser));

            return(newUser);
        }
示例#5
0
        public IUserAuth CreateUserAuth(IUserAuth newUser, string password)
        {
            newUser.ValidateNewUser(password);

            AssertNoExistingUser(mongoDatabase, newUser);

            newUser.PopulatePasswordHashes(password);
            newUser.CreatedDate  = DateTime.UtcNow;
            newUser.ModifiedDate = newUser.CreatedDate;

            SaveUser(newUser);
            return(newUser);
        }
示例#6
0
        public IUserAuth CreateUserAuth(IUserAuth newUser, string password)
        {
            newUser.ValidateNewUser(password);

            var command = new Domain.Authentication.Users.Commands.Register
            {
                UserAuthId = newUser.UserName,
                Password   = password
            };

            _bus.CommandToDomain(command).Wait();

            return(newUser);
        }
示例#7
0
        public async Task <IUserAuth> UpdateUserAuthAsync(IUserAuth existingUser, IUserAuth newUser, string password, CancellationToken token = default)
        {
            newUser.ValidateNewUser(password);

            await AssertNoExistingUserAsync(mongoDatabase, newUser, existingUser, token).ConfigAwait();

            newUser.Id = existingUser.Id;
            newUser.PopulatePasswordHashes(password, existingUser);
            newUser.CreatedDate  = existingUser.CreatedDate;
            newUser.ModifiedDate = DateTime.UtcNow;
            await SaveUserAsync(newUser, token).ConfigAwait();

            return(newUser);
        }
示例#8
0
        public IUserAuth CreateUserAuth(IUserAuth newUser, string password)
        {
            newUser.ValidateNewUser(password);

            AssertNoExistingUser(newUser);

            newUser.PopulatePasswordHashes(password);
            newUser.CreatedDate  = DateTime.UtcNow;
            newUser.ModifiedDate = newUser.CreatedDate;

            newUser = UserAuthRepository.CreateUpdate(new JarsUserAuth(newUser), MODIEFIED_BY);

            return(newUser);
        }
示例#9
0
        public IUserAuth CreateUserAuth(IUserAuth newUser, string password)
        {
            newUser.ValidateNewUser(password);

            var command = new Identity.User.Commands.Register
            {
                UserName  = newUser.UserName,
                Password  = password,
                GivenName = newUser.DisplayName
            };

            _bus.CommandToDomain(command).Wait();

            return(newUser);
        }
示例#10
0
        public IUserAuth CreateUserAuth(IUserAuth newUser, string password)
        {
            newUser.ValidateNewUser(password);

            AssertNoExistingUser(newUser);

            newUser.PopulatePasswordHashes(password);
            newUser.CreatedDate  = DateTime.UtcNow;
            newUser.ModifiedDate = newUser.CreatedDate;

            var nhSession = GetCurrentSessionFn(sessionFactory);

            nhSession.Save(new UserAuthNHibernate(newUser));

            return(newUser);
        }
示例#11
0
        public IUserAuth UpdateUserAuth(IUserAuth existingUser, IUserAuth newUser)
        {
            newUser.ValidateNewUser();

            AssertNoExistingUser(mongoDatabase, newUser);

            newUser.Id            = existingUser.Id;
            newUser.PasswordHash  = existingUser.PasswordHash;
            newUser.Salt          = existingUser.Salt;
            newUser.DigestHa1Hash = existingUser.DigestHa1Hash;
            newUser.CreatedDate   = existingUser.CreatedDate;
            newUser.ModifiedDate  = DateTime.UtcNow;
            SaveUser(newUser);

            return(newUser);
        }
示例#12
0
        public IUserAuth CreateUserAuth(IUserAuth newUser, string password)
        {
            newUser.ValidateNewUser(password);

            AssertNoExistingUser(newUser);

            newUser.PopulatePasswordHashes(password);
            newUser.CreatedDate  = DateTime.UtcNow;
            newUser.ModifiedDate = newUser.CreatedDate;

            using var session = documentStore.OpenSession();
            session.Store(newUser);
            UpdateIntKey(newUser);
            session.SaveChanges();
            return(newUser);
        }
        public async Task <IUserAuth> CreateUserAuthAsync(IUserAuth newUser, string password, CancellationToken token = default)
        {
            newUser.ValidateNewUser(password);

            await AssertNoExistingUserAsync(newUser, token : token).ConfigAwait();

            newUser.PopulatePasswordHashes(password);
            newUser.CreatedDate  = DateTime.UtcNow;
            newUser.ModifiedDate = newUser.CreatedDate;

            using var session = documentStore.OpenSession();
            session.Store(newUser);
            session.SaveChanges();

            return(newUser);
        }
示例#14
0
        public async Task <IUserAuth> UpdateUserAuthAsync(IUserAuth existingUser, IUserAuth newUser, CancellationToken token = default)
        {
            newUser.ValidateNewUser();

            await AssertNoExistingUserAsync(mongoDatabase, newUser, token : token).ConfigAwait();

            newUser.Id            = existingUser.Id;
            newUser.PasswordHash  = existingUser.PasswordHash;
            newUser.Salt          = existingUser.Salt;
            newUser.DigestHa1Hash = existingUser.DigestHa1Hash;
            newUser.CreatedDate   = existingUser.CreatedDate;
            newUser.ModifiedDate  = DateTime.UtcNow;
            await SaveUserAsync(newUser, token).ConfigAwait();

            return(newUser);
        }
示例#15
0
        public IUserAuth UpdateUserAuth(IUserAuth existingUser, IUserAuth newUser)
        {
            newUser.ValidateNewUser();

            AssertNoExistingUser(newUser, existingUser);

            newUser.Id           = existingUser.Id;
            newUser.PasswordHash = existingUser.PasswordHash;
            newUser.Salt         = existingUser.Salt;
            newUser.CreatedDate  = existingUser.CreatedDate;
            newUser.ModifiedDate = DateTime.UtcNow;

            newUser = UserAuthRepository.CreateUpdate(new JarsUserAuth(newUser), MODIEFIED_BY);

            return(newUser);
        }
示例#16
0
        public async Task <IUserAuth> UpdateUserAuthAsync(IUserAuth existingUser, IUserAuth newUser, CancellationToken token = default)
        {
            newUser.ValidateNewUser();

            await AssertNoExistingUserAsync(newUser, token : token);

            newUser.PasswordHash  = existingUser.PasswordHash;
            newUser.Salt          = existingUser.Salt;
            newUser.DigestHa1Hash = existingUser.DigestHa1Hash;
            newUser.CreatedDate   = existingUser.CreatedDate;
            newUser.ModifiedDate  = DateTime.UtcNow;

            await Db.PutItemAsync(Sanitize(newUser), token : token);

            newUser = DeSanitize(Db.GetItem <TUserAuth>(newUser.Id));
            return(newUser);
        }
示例#17
0
        public async Task <IUserAuth> CreateUserAuthAsync(IUserAuth newUser, string password, CancellationToken token = default)
        {
            newUser.ValidateNewUser(password);

            await AssertNoExistingUserAsync(newUser, token : token);

            Sanitize(newUser);

            newUser.PopulatePasswordHashes(password);
            newUser.CreatedDate  = DateTime.UtcNow;
            newUser.ModifiedDate = newUser.CreatedDate;

            await Db.PutItemAsync((TUserAuth)newUser, token : token);

            newUser = DeSanitize(Db.GetItem <TUserAuth>(newUser.Id));
            return(newUser);
        }
示例#18
0
        public virtual async Task <IUserAuth> UpdateUserAuthAsync(IUserAuth existingUser, IUserAuth newUser, CancellationToken token = default)
        {
            newUser.ValidateNewUser();

            await using var redis = await factory.GetClientAsync(token).ConfigAwait();
            await AssertNoExistingUserAsync(redis, newUser, existingUser, token).ConfigAwait();

            newUser.Id            = existingUser.Id;
            newUser.PasswordHash  = existingUser.PasswordHash;
            newUser.Salt          = existingUser.Salt;
            newUser.DigestHa1Hash = existingUser.DigestHa1Hash;
            newUser.CreatedDate   = existingUser.CreatedDate;
            newUser.ModifiedDate  = DateTime.UtcNow;

            await redis.StoreAsync(newUser, token).ConfigAwait();

            return(newUser);
        }
示例#19
0
        public IUserAuth UpdateUserAuth(IUserAuth existingUser, IUserAuth newUser)
        {
            newUser.ValidateNewUser();

            AssertNoExistingUser(newUser, existingUser);

            newUser.Id           = existingUser.Id;
            newUser.PasswordHash = existingUser.PasswordHash;
            newUser.Salt         = existingUser.Salt;
            newUser.CreatedDate  = existingUser.CreatedDate;
            newUser.ModifiedDate = DateTime.UtcNow;

            var nhSession = GetCurrentSessionFn(sessionFactory);

            nhSession.Save(new UserAuthNHibernate(newUser));

            return(newUser);
        }
示例#20
0
        public virtual IUserAuth UpdateUserAuth(IUserAuth existingUser, IUserAuth newUser, string password)
        {
            newUser.ValidateNewUser(password);

            return(Exec(db =>
            {
                AssertNoExistingUser(db, newUser, existingUser);

                newUser.Id = existingUser.Id;
                newUser.PopulatePasswordHashes(password, existingUser);
                newUser.CreatedDate = existingUser.CreatedDate;
                newUser.ModifiedDate = DateTime.UtcNow;

                db.Save((TUserAuth)newUser);

                return newUser;
            }));
        }
示例#21
0
        public virtual IUserAuth CreateUserAuth(IUserAuth newUser, string password)
        {
            newUser.ValidateNewUser(password);

            return(Exec(db =>
            {
                AssertNoExistingUser(db, newUser);

                newUser.PopulatePasswordHashes(password);
                newUser.CreatedDate = DateTime.UtcNow;
                newUser.ModifiedDate = newUser.CreatedDate;

                db.Save((TUserAuth)newUser);

                newUser = db.SingleById <TUserAuth>(newUser.Id);
                return newUser;
            }));
        }
        public virtual async Task <IUserAuth> UpdateUserAuthAsync(IUserAuth existingUser, IUserAuth newUser, string password, CancellationToken token = default)
        {
            newUser.ValidateNewUser(password);

            return(await ExecAsync(async db =>
            {
                await AssertNoExistingUserAsync(db, newUser, existingUser, token).ConfigAwait();

                newUser.Id = existingUser.Id;
                newUser.PopulatePasswordHashes(password, existingUser);
                newUser.CreatedDate = existingUser.CreatedDate;
                newUser.ModifiedDate = DateTime.UtcNow;

                await db.SaveAsync((TUserAuth)newUser, token: token).ConfigAwait();

                return newUser;
            }).ConfigAwait());
        }
示例#23
0
        public virtual IUserAuth UpdateUserAuth(IUserAuth existingUser, IUserAuth newUser)
        {
            newUser.ValidateNewUser();

            return(Exec(db =>
            {
                AssertNoExistingUser(db, newUser, existingUser);

                newUser.Id = existingUser.Id;
                newUser.PasswordHash = existingUser.PasswordHash;
                newUser.Salt = existingUser.Salt;
                newUser.DigestHa1Hash = existingUser.DigestHa1Hash;
                newUser.CreatedDate = existingUser.CreatedDate;
                newUser.ModifiedDate = DateTime.UtcNow;

                db.Save((TUserAuth)newUser);

                return newUser;
            }));
        }
        public async Task <IUserAuth> UpdateUserAuthAsync(IUserAuth existingUser, IUserAuth newUser, CancellationToken token = default)
        {
            newUser.ValidateNewUser();

            await AssertNoExistingUserAsync(newUser, existingUser, token).ConfigAwait();

            UpdateKey(existingUser, newUser);

            newUser.Id            = existingUser.Id;
            newUser.PasswordHash  = existingUser.PasswordHash;
            newUser.Salt          = existingUser.Salt;
            newUser.DigestHa1Hash = existingUser.DigestHa1Hash;
            newUser.CreatedDate   = existingUser.CreatedDate;
            newUser.ModifiedDate  = DateTime.UtcNow;

            using var session = documentStore.OpenSession();
            session.Store(newUser);
            session.SaveChanges();

            return(newUser);
        }
示例#25
0
        public IUserAuth UpdateUserAuth(IUserAuth existingUser, IUserAuth newUser)
        {
            newUser.ValidateNewUser();

            AssertNoExistingUser(newUser, existingUser);

            UpdateKey(existingUser, newUser);

            newUser.Id            = existingUser.Id;
            newUser.PasswordHash  = existingUser.PasswordHash;
            newUser.Salt          = existingUser.Salt;
            newUser.DigestHa1Hash = existingUser.DigestHa1Hash;
            newUser.CreatedDate   = existingUser.CreatedDate;
            newUser.ModifiedDate  = DateTime.UtcNow;

            using var session = documentStore.OpenSession();
            session.Store(newUser);
            session.SaveChanges();

            return(newUser);
        }
示例#26
0
        public IUserAuth CreateUserAuth(IUserAuth newUser, string password)
        {
            newUser.ValidateNewUser(password);

            AssertNoExistingUser(mongoDatabase, newUser);

            var    saltedHash = HostContext.Resolve <IHashProvider>();
            string salt;
            string hash;

            saltedHash.GetHashAndSaltString(password, out hash, out salt);
            var digestHelper = new DigestAuthFunctions();

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

            SaveUser(newUser);
            return(newUser);
        }
示例#27
0
        public virtual IUserAuth CreateUserAuth(IUserAuth newUser, string password)
        {
            newUser.ValidateNewUser(password);

            return(Exec(db =>
            {
                AssertNoExistingUser(db, newUser);

                string salt;
                string hash;
                HostContext.Resolve <IHashProvider>().GetHashAndSaltString(password, out hash, out salt);
                var digestHelper = new DigestAuthFunctions();
                newUser.DigestHa1Hash = digestHelper.CreateHa1(newUser.UserName, DigestAuthProvider.Realm, password);
                newUser.PasswordHash = hash;
                newUser.Salt = salt;
                newUser.CreatedDate = DateTime.UtcNow;
                newUser.ModifiedDate = newUser.CreatedDate;

                db.Save((TUserAuth)newUser);

                newUser = db.SingleById <TUserAuth>(newUser.Id);
                return newUser;
            }));
        }
示例#28
0
        public IUserAuth CreateUserAuth(IUserAuth newUser, string password)
        {
            newUser.ValidateNewUser(password);

            AssertNoExistingUser(mongoDatabase, newUser);

            var saltedHash = HostContext.Resolve<IHashProvider>();
            string salt;
            string hash;
            saltedHash.GetHashAndSaltString(password, out hash, out salt);
            var digestHelper = new DigestAuthFunctions();
            newUser.DigestHa1Hash = digestHelper.CreateHa1(newUser.UserName, DigestAuthProvider.Realm, password);
            newUser.PasswordHash = hash;
            newUser.Salt = salt;
            newUser.CreatedDate = DateTime.UtcNow;
            newUser.ModifiedDate = newUser.CreatedDate;

            SaveUser(newUser);
            return newUser;
        }
示例#29
0
        public IUserAuth UpdateUserAuth(IUserAuth existingUser, IUserAuth newUser)
        {
            newUser.ValidateNewUser();

            AssertNoExistingUser(mongoDatabase, newUser);

            newUser.Id = existingUser.Id;
            newUser.PasswordHash = existingUser.PasswordHash;
            newUser.Salt = existingUser.Salt;
            newUser.DigestHa1Hash = existingUser.DigestHa1Hash;
            newUser.CreatedDate = existingUser.CreatedDate;
            newUser.ModifiedDate = DateTime.UtcNow;
            SaveUser(newUser);

            return newUser;
        }
示例#30
0
        public IUserAuth UpdateUserAuth(IUserAuth existingUser, IUserAuth newUser, string password)
        {
            newUser.ValidateNewUser(password);

            AssertNoExistingUser(mongoDatabase, newUser, existingUser);

            var hash = existingUser.PasswordHash;
            var salt = existingUser.Salt;
            if (password != null)
            {
                var saltedHash = HostContext.Resolve<IHashProvider>();
                saltedHash.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;
            SaveUser(newUser);

            return newUser;
        }
        public IUserAuth UpdateUserAuth(IUserAuth existingUser, IUserAuth newUser, string password)
        {
            newUser.ValidateNewUser(password);

            AssertNoExistingUser(newUser, existingUser);

            var hash = existingUser.PasswordHash;
            var salt = existingUser.Salt;
            if (password != null)
            {
                var saltedHash = HostContext.Resolve<IHashProvider>();
                saltedHash.GetHashAndSaltString(password, out hash, out salt);
            }

            newUser.Id = existingUser.Id;
            newUser.PasswordHash = hash;
            newUser.Salt = salt;
            newUser.CreatedDate = existingUser.CreatedDate;
            newUser.ModifiedDate = DateTime.UtcNow;

            var nhSession = GetCurrentSessionFn(sessionFactory);
            nhSession.Save(new UserAuthNHibernate(newUser));

            return newUser;
        }
        public IUserAuth UpdateUserAuth(IUserAuth existingUser, IUserAuth newUser)
        {
            newUser.ValidateNewUser();

            AssertNoExistingUser(newUser, existingUser);

            newUser.Id = existingUser.Id;
            newUser.PasswordHash = existingUser.PasswordHash;
            newUser.Salt = existingUser.Salt;
            newUser.CreatedDate = existingUser.CreatedDate;
            newUser.ModifiedDate = DateTime.UtcNow;

            var nhSession = GetCurrentSessionFn(sessionFactory);
            nhSession.Save(new UserAuthNHibernate(newUser));

            return newUser;
        }