Пример #1
0
 public virtual void UpdatedUser(SyncUserFile user, IEnumerable <UserUpdate> changes)
 {
     _baseLogger.Info($"[U] User {user.User.UserName}");
     foreach (var updatedProperty in changes)
     {
         var role = updatedProperty as UserRoleUpdate;
         if (role == null)
         {
             if (!updatedProperty.Deleted)
             {
                 _baseLogger.Debug($"* [U] {updatedProperty.Property} updated from {updatedProperty.OriginalValue} to {updatedProperty.NewValue}.");
             }
             else
             {
                 _baseLogger.Debug($"* [D] {updatedProperty.Property} was removed.");
             }
         }
         else
         {
             if (role.Removed)
             {
                 _baseLogger.Debug($"* [D] {role.RoleName} role was removed.");
             }
             else
             {
                 _baseLogger.Debug($"* [A] {role.RoleName} role was added.");
             }
         }
     }
 }
Пример #2
0
        protected virtual void DeserializeUser(SyncUserFile serializedUser)
        {
            var changes             = new List <UserUpdate>();
            var syncUser            = serializedUser.User;
            var missingRolesForUser = syncUser.Roles.FindAll(roleName => !Roles.RoleExists(roleName));

            if (missingRolesForUser.Count > 0)
            {
                _logger.MissingRoles(serializedUser, missingRolesForUser.ToArray());
                return;
            }

            bool addedUser;
            var  existingUser = GetOrCreateUser(serializedUser, out addedUser);

            MembershipUser updatedUser = new MembershipUser(
                existingUser.ProviderName,
                syncUser.UserName,
                existingUser.ProviderUserKey,
                syncUser.Email,
                null,
                syncUser.Comment,
                syncUser.IsApproved,
                existingUser.IsLockedOut,
                syncUser.CreationDate,
                existingUser.LastLoginDate,
                existingUser.LastActivityDate,
                addedUser ? DateTime.UtcNow : existingUser.LastPasswordChangedDate,
                existingUser.LastLockoutDate);

            if (!addedUser)
            {
                if (!existingUser.Email.Equals(updatedUser.Email))
                {
                    changes.Add(new UserUpdate("Email", existingUser.Email, updatedUser.Email));
                }
                if (!existingUser.Comment.Equals(updatedUser.Comment))
                {
                    changes.Add(new UserUpdate("Comment", existingUser.Comment, updatedUser.Comment));
                }
                if (!existingUser.IsApproved.Equals(updatedUser.IsApproved))
                {
                    changes.Add(new UserUpdate("IsApproved", existingUser.IsApproved.ToString(), updatedUser.IsApproved.ToString()));
                }
            }

            Membership.UpdateUser(updatedUser);

            PasteProfileValues(updatedUser, syncUser, changes);

            PasteRoles(syncUser, User.FromName(serializedUser.User.UserName, true), addedUser, changes);

            if (changes.Count > 0 && !addedUser)
            {
                _logger.UpdatedUser(serializedUser, changes);
            }
        }
Пример #3
0
        protected virtual string CreateNewUserPassword(SyncUserFile user)
        {
            var password = _syncConfiguration.DefaultPassword;

            if (password.Equals("random", StringComparison.OrdinalIgnoreCase))
            {
                return Membership.GeneratePassword(32, 0);
            }

            if (password.Length < 8) throw new InvalidOperationException("I will not set the default user password to anything less than 8 characters. Change your userSyncConfiguration's defaultPassword setting to something more secure.");

            return password;
        }
Пример #4
0
        protected virtual string CreateNewUserPassword(SyncUserFile user)
        {
            var password = _syncConfiguration.DefaultPassword;

            if (password.Equals("random", StringComparison.OrdinalIgnoreCase))
            {
                return(Membership.GeneratePassword(32, 0));
            }

            if (password.Length < _syncConfiguration.MinPasswordLength)
            {
                throw new InvalidOperationException($"I will not set the default user password to anything less than {_syncConfiguration.MinPasswordLength} characters. Change your userSyncConfiguration\'s defaultPassword setting to something more secure.");
            }

            return(password);
        }
Пример #5
0
        protected virtual MembershipUser GetOrCreateUser(SyncUserFile user, out bool addedUser)
        {
            addedUser = false;

            var existingUser = Membership.GetUser(user.User.UserName);

            if (existingUser != null)
            {
                return(existingUser);
            }

            addedUser = true;
            _logger.AddedNewUser(user);

            return(Membership.CreateUser(user.User.UserName, CreateNewUserPassword(user)));
        }
Пример #6
0
 public virtual void AddedNewUser(SyncUserFile user)
 {
     _baseLogger.Info($"[A] User {user.User.UserName}");
 }
Пример #7
0
 public virtual void MissingRoles(SyncUserFile user, string[] missingRoleNames)
 {
     _baseLogger.Error($"Error deserializing {user.User.UserName} user; some roles it is member of don't exist:{string.Join(", ", missingRoleNames)}.");
 }
Пример #8
0
        protected virtual void DeserializeUser(SyncUserFile serializedUser)
        {
            var changes = new List<UserUpdate>();
            var syncUser = serializedUser.User;
            var missingRolesForUser = syncUser.Roles.FindAll(roleName => !Roles.RoleExists(roleName));

            if (missingRolesForUser.Count > 0)
            {
                _logger.MissingRoles(serializedUser, missingRolesForUser.ToArray());
                return;
            }

            bool addedUser;
            var existingUser = GetOrCreateUser(serializedUser, out addedUser);

            var updatedUser = new MembershipUser(existingUser.ProviderName, syncUser.UserName, existingUser.ProviderUserKey, syncUser.Email, null, syncUser.Comment, syncUser.IsApproved, existingUser.IsLockedOut, syncUser.CreationDate, existingUser.LastLoginDate, existingUser.LastActivityDate, addedUser ? DateTime.UtcNow : existingUser.LastPasswordChangedDate, existingUser.LastLockoutDate);

            if (!addedUser)
            {
                if (existingUser.Email != null && !existingUser.Email.Equals(updatedUser.Email))
                    changes.Add(new UserUpdate("Email", existingUser.Email, updatedUser.Email));
                if (existingUser.Comment != null && !existingUser.Comment.Equals(updatedUser.Comment))
                    changes.Add(new UserUpdate("Comment", existingUser.Comment, updatedUser.Comment));
                if (!existingUser.IsApproved.Equals(updatedUser.IsApproved))
                    changes.Add(new UserUpdate("IsApproved", existingUser.IsApproved.ToString(), updatedUser.IsApproved.ToString()));
                if (!existingUser.CreationDate.Equals(updatedUser.CreationDate.ToUniversalTime()))
                    changes.Add(new UserUpdate("CreationDate", existingUser.CreationDate.ToString(CultureInfo.InvariantCulture), updatedUser.CreationDate.ToUniversalTime().ToString(CultureInfo.InvariantCulture) + " (UTC)"));
            }

            Membership.UpdateUser(updatedUser);

            PasteProfileValues(updatedUser, syncUser, changes);

            PasteRoles(syncUser, User.FromName(serializedUser.User.UserName, true), addedUser, changes);

            if (changes.Count > 0 && !addedUser)
                _logger.UpdatedUser(serializedUser, changes);
        }
Пример #9
0
        protected virtual MembershipUser GetOrCreateUser(SyncUserFile user, out bool addedUser)
        {
            addedUser = false;

            var existingUser = Membership.GetUser(user.User.UserName);

            if (existingUser != null)
                return existingUser;

            addedUser = true;
            _logger.AddedNewUser(user);

            return Membership.CreateUser(user.User.UserName, CreateNewUserPassword(user));
        }