Example #1
0
        public async Task <CrocoHealthCheckerResult> CheckHealth(CancellationToken token = default)
        {
            var rootSettings = await SettingsFactory.GetSettingAsync <RootSettings>();

            if (string.IsNullOrWhiteSpace(rootSettings.RootEmail))
            {
                return(CrocoHealthCheckerResult.UnHealthy($"Проверьте настройку {typeof(RootSettings).FullName} ее свойство {nameof(RootSettings.RootEmail)}"));
            }

            var rootUser = await UserSearcher.GetUserByEmailAsync(rootSettings.RootEmail);

            if (rootUser == null)
            {
                return(CrocoHealthCheckerResult.UnHealthy($"Рут пользователь не создан." +
                                                          $" Воспользуйтесь методом {nameof(AccountInitiator.CreateRootUserAsync)} класса {nameof(AccountInitiator)} чтобы исправить данную ситуацию."));
            }

            if (rootUser.IsInRole(rootSettings.RootEmail))
            {
                return(CrocoHealthCheckerResult.UnHealthy($"Текущий рут пользователь не имеет рут прав." +
                                                          $" Воспользуйтесь методом {nameof(AccountInitiator.CreateRootUserAsync)} класса {nameof(AccountInitiator)} чтобы исправить данную ситуацию."));
            }

            return(CrocoHealthCheckerResult.Healthy("С пользователем рут все в порядке"));
        }
Example #2
0
        /// <inheritdoc />
        public async Task <CrocoHealthCheckerResult> CheckHealth(CancellationToken token = default)
        {
            var setting = await SettingsFactory.GetSettingAsync <CltRolesSetting>();

            if (string.IsNullOrWhiteSpace(setting.AdminRoleName))
            {
                return(CrocoHealthCheckerResult.Warning($"Настройка {typeof(CltRolesSetting).FullName} неправильно заполнена." +
                                                        $" Проверьте свойство {nameof(CltRolesSetting.AdminRoleName)}."));
            }

            if (string.IsNullOrWhiteSpace(setting.RootRoleName))
            {
                return(CrocoHealthCheckerResult.Warning($"Настройка {typeof(CltRolesSetting).FullName} неправильно заполнена." +
                                                        $" Проверьте свойство {nameof(CltRolesSetting.RootRoleName)}."));
            }

            if (setting.RootRoleName == setting.AdminRoleName)
            {
                return(CrocoHealthCheckerResult.Warning($"Настройка {typeof(CltRolesSetting).FullName} неправильно заполнена." +
                                                        $" Свойства {nameof(CltRolesSetting.RootRoleName)} и {nameof(CltRolesSetting.AdminRoleName)} не должны быть одинаковыми."));
            }

            var roleNames = new List <string>(setting.OtherRoleNames)
            {
                setting.AdminRoleName,
                setting.RootRoleName
            };

            var hasDuplicates = roleNames
                                .GroupBy(x => x)
                                .Any(x => x.Count() > 1);

            if (hasDuplicates)
            {
                return(CrocoHealthCheckerResult.Warning($"Настройка {typeof(CltRolesSetting).FullName} неправильно заполнена." +
                                                        $" Не должно быть дубликатов в названиях ролей, а также пересечений c ролями в свойствах {nameof(CltRolesSetting.AdminRoleName)} и {nameof(CltRolesSetting.RootRoleName)}"));
            }

            return(CrocoHealthCheckerResult.Healthy($"Настройка {typeof(CltRolesSetting).FullName} правильно заполнена."));
        }