mirror of
https://github.com/altlinux/admc.git
synced 2025-02-04 09:47:02 +03:00
load linked policies under OU's
in policy tree
This commit is contained in:
parent
2dfe183132
commit
49e5652ae3
@ -369,6 +369,10 @@ QString AdConfig::extended_rights_dn() const {
|
||||
return QString("CN=Extended-Rights,%1").arg(configuration_dn());
|
||||
}
|
||||
|
||||
QString AdConfig::policies_dn() const {
|
||||
return QString("CN=Policies,CN=System,%1").arg(domain_dn());
|
||||
}
|
||||
|
||||
bool AdConfig::control_is_supported(const QString &control_oid) const {
|
||||
const bool supported = d->supported_control_list.contains(control_oid);
|
||||
|
||||
|
@ -58,6 +58,7 @@ public:
|
||||
QString schema_dn() const;
|
||||
QString partitions_dn() const;
|
||||
QString extended_rights_dn() const;
|
||||
QString policies_dn() const;
|
||||
bool control_is_supported(const QString &control_oid) const;
|
||||
|
||||
QString get_attribute_display_name(const Attribute &attribute, const ObjectClass &objectClass) const;
|
||||
|
@ -95,6 +95,51 @@ void PolicyOUImpl::fetch(const QModelIndex &index) {
|
||||
// at the bottom of the policy tree
|
||||
console->set_item_sort_index(all_policies_item->index(), 1);
|
||||
}
|
||||
|
||||
// Add policies linked to this OU
|
||||
if (!is_domain) {
|
||||
const QList<QString> gpo_list = [&]() {
|
||||
const AdObject parent_object = ad.search_object(dn);
|
||||
const QString gplink_string = parent_object.get_string(ATTRIBUTE_GPLINK);
|
||||
const Gplink gplink = Gplink(gplink_string);
|
||||
const QList<QString> out = gplink.get_gpo_list();
|
||||
|
||||
return out;
|
||||
}();
|
||||
|
||||
if (!gpo_list.isEmpty()) {
|
||||
const QString base = g_adconfig->policies_dn();
|
||||
const SearchScope scope = SearchScope_Children;
|
||||
const QString filter = [&]() {
|
||||
|
||||
const QList<QString> subfilter_list = [&]() {
|
||||
QList<QString> out;
|
||||
|
||||
for (const QString &gpo : gpo_list) {
|
||||
const QString subfilter = filter_CONDITION(Condition_Equals, ATTRIBUTE_DN, gpo);
|
||||
out.append(subfilter);
|
||||
}
|
||||
|
||||
return out;
|
||||
}();
|
||||
|
||||
const QString out = filter_OR(subfilter_list);
|
||||
|
||||
return out;
|
||||
}();
|
||||
const QList<QString> attributes = {
|
||||
ATTRIBUTE_DISPLAY_NAME
|
||||
};
|
||||
|
||||
const QHash<QString, AdObject> results = ad.search(base, scope, filter, attributes);
|
||||
|
||||
for (const AdObject &object : results.values()) {
|
||||
const QList<QStandardItem *> row = console->add_scope_item(ItemType_Policy, index);
|
||||
|
||||
console_policy_load(row, object);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void PolicyOUImpl::refresh(const QList<QModelIndex> &index_list) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user