Назад | Перейти на главную страницу

Пользователи FreeIPA не могут видеть новые настраиваемые атрибуты

Я добавил несколько новых настраиваемых атрибутов в свой FreeIPA, и до сих пор я использовал учетную запись администратора, чтобы проверять их в WebUI. Но сегодня я получил доступ к WebUI, используя учетную запись обычного пользователя, и был удивлен, увидев, что новые атрибуты не отображаются. когда я использовал "проверить элементы" для просмотра кода страницы, я нашел код атрибута следующим образом:

<dev class="widget text-widget" name="bloodtype" style="display: none;">...</dev>

обратите внимание, что атрибут все еще виден для администратора.

схема атрибутов:

dn: cn=schema
changetype: modify
add: attributeTypes
attributeTypes: ( 1.3.6.1.4.1.32473.1.1.591
  NAME 'bloodtype'
  DESC 'Employee Blood type'
  SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
  SINGLE-VALUE
  X-ORIGIN 'Oracle Unified Directory Server'
  USAGE userApplications )

Класс объекта:

objectclasses: ( 2.16.840.1.113730.3.8.61.11 NAME 'customPerson' SUP person STRUCTURAL MAY bloodtype X-ORIGIN ( 'Extending FreeIPA' 'user defined' ) )

плагин python:

from ipalib.plugins import user
from ipalib.parameters import Str
from ipalib import _
def validate(ugettext,value):
    if value not in ['A','B','AB','O']:
    return _("Blood type must be either A, B, AB or O.")
user.user.takes_params = user.user.takes_params + (
    Str('bloodtype?',validate,
        cli_name='bloodtype',
        label=_('Blood Type'),
    ),
)
user.user.default_attributes.append('bloodtype')

Плагин javascript:

define([
    'freeipa/phases',
    'freeipa/user'],
    function(phases, user_mod) {
    // helper function
        function get_item(array, attr, value) {
            for (var i=0,l=array.length; i<l; i++) {
                if (array[i][attr] === value) return array[i];
            }
            return null;
        }
    var plugin = {};
    plugin.add_fields = function() {
        var facet = get_item(user_mod.entity_spec.facets, '$type', 'details');
        var section = get_item(facet.sections, 'name', 'identity');
        section.fields.push({
            $type:'radio',
            options:[{label:'A',value:'A'},{label:'B',value:'B'},{label:'AB',value:'AB'},{label:'O',value:'O'}],
            label:'Blood type',
            name:'bloodtype'
        });
        return true;
    };
    phases.on('customization', plugin.add_fields);
    return plugin;
});

В чем проблема и как разрешить всем пользователям просматривать ее?

вы должны добавить новый атрибут в ACI.

Вы можете изменить ACI в cn = users, cn = accounts, dn = example, = dn = com напрямую

или вы можете добавить новый атрибут в «managed_permissions» в классе пользователя для разрешения, которое вы хотите предоставить для доступа к ним. После этого вам нужно запустить ipa-ldap-updater --upgrade.

или вы можете создать новое разрешение ACI и добавить его к существующим привилегиям.