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("С пользователем рут все в порядке")); }
/// <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} правильно заполнена.")); }