| 58 | } |
| 59 | |
| 60 | void UsersConfigAccessStorage::parseFromConfig(const Poco::Util::AbstractConfiguration & config) |
| 61 | { |
| 62 | try |
| 63 | { |
| 64 | UsersConfigParser parser{access_control}; |
| 65 | auto allowed_profile_ids = UsersConfigParser::getAllowedIDs(config, "profiles", AccessEntityType::SETTINGS_PROFILE); |
| 66 | auto role_ids_from_users_config = UsersConfigParser::getAllowedIDs(config, "roles", AccessEntityType::ROLE); |
| 67 | |
| 68 | std::vector<std::pair<UUID, AccessEntityPtr>> all_entities; |
| 69 | |
| 70 | for (const auto & entity : parser.parseUsers(config, allowed_profile_ids, role_ids_from_users_config)) |
| 71 | all_entities.emplace_back(UsersConfigParser::generateID(*entity), entity); |
| 72 | |
| 73 | for (const auto & entity : parser.parseQuotas(config)) |
| 74 | all_entities.emplace_back(UsersConfigParser::generateID(*entity), entity); |
| 75 | |
| 76 | for (const auto & entity : parser.parseRowPolicies(config)) |
| 77 | all_entities.emplace_back(UsersConfigParser::generateID(*entity), entity); |
| 78 | |
| 79 | for (const auto & entity : parser.parseSettingsProfiles(config, allowed_profile_ids)) |
| 80 | all_entities.emplace_back(UsersConfigParser::generateID(*entity), entity); |
| 81 | |
| 82 | for (const auto & entity : parser.parseRoles(config, role_ids_from_users_config)) |
| 83 | all_entities.emplace_back(UsersConfigParser::generateID(*entity), entity); |
| 84 | |
| 85 | memory_storage.setAll(all_entities); |
| 86 | } |
| 87 | catch (Exception & e) |
| 88 | { |
| 89 | e.addMessage(fmt::format("while loading {}", path.empty() ? "configuration" : ("configuration file " + quoteString(path)))); |
| 90 | throw; |
| 91 | } |
| 92 | } |
| 93 | |
| 94 | void UsersConfigAccessStorage::load( |
| 95 | const String & users_config_path, |
nothing calls this directly
no test coverage detected