Требуется разделить агентов на несколько групп, выполняющих свой круг обязанностей.
В рамках системы OTRS это сводится к распределению прав агентов в группах и назначению групп для очередей.
В идеале, конечно, не назначать агентам права в группах, а привязывать их к ролям, а настройку прав производить уже для ролей.
Всё это завязать через единую LDAP авторизацию.
Задача.
В зависимости от нахождения агента в определенной группе безопасности (LDAP) привязаться к назначенной роли.
На данный момент имеется возможность привязать права rw списку групп:
Код: Выделить всё
$Self->{'AuthSyncModule::LDAP::UserSyncInitialGroups'} = [ 'osiv', 'users', 'customers', 'faq' ];
Смотрите: \otrs\Kernel\System\Auth.pm
Код: Выделить всё
# load auth module
for my $Count ( '', 1 .. 10 ) {
my $GenericModule = $Self->{ConfigObject}->Get("AuthModule$Count");
next if !$GenericModule;
if ( !$Self->{MainObject}->Require($GenericModule) ) {
$Self->{MainObject}->Die("Can't load backend module $GenericModule! $@");
}
$Self->{"AuthBackend$Count"} = $GenericModule->new( %Param, Count => $Count );
}
Причем можно использовать разношерстные варианты LDAP DB HTTP.
Но синтаксиса передачи настроек для каждого отдельного модуля не описано, так что всё нужно выуживать из программного кода.
Как правило значение номера нужно ставить всегда в конце...
Пример:
Код: Выделить всё
$Self->{'AuthModule2'} = 'Kernel::System::Auth::LDAP';
$Self->{'AuthModule::LDAP::Host2'} = 'pdc.domain.com';
$Self->{'AuthModule::LDAP::BaseDN2'} = 'DC=domain,DC=com';
$Self->{'AuthModule::LDAP::UID2'} = 'sAMAccountName';
$Self->{'AuthModule::LDAP::SearchUserDN2'} = 'CN=otrsldap,OU=Otrs users,DC=domain,DC=com';
$Self->{'AuthModule::LDAP::SearchUserPw2'} = 'otrsldappass';
$Self->{'AuthModule::LDAP::GroupDN2'} = 'CN=OTRS,OU=Otrs users,DC=domain,DC=com';
$Self->{'AuthModule::LDAP::AccessAttr2'} = 'member';
$Self->{'AuthModule::LDAP::UserAttr2'} = 'DN';
$Self->{'AuthModule::LDAP::AlwaysFilter2'} = '(objectclass=user)';
Код: Выделить всё
# load sync module
for my $Count ( '', 1 .. 10 ) {
my $GenericModule = $Self->{ConfigObject}->Get("AuthSyncModule$Count");
next if !$GenericModule;
if ( !$Self->{MainObject}->Require($GenericModule) ) {
$Self->{MainObject}->Die("Can't load backend module $GenericModule! $@");
}
$Self->{"AuthSyncBackend$Count"} = $GenericModule->new( %Param, Count => $Count );
}
Таким образом, имея несколько SyncModule, мы можем назначать права rw группам OTRS согласно членству в 11 группах безопасности AD.
Только вот эти права закрепятся перманентно при первом логоне. Если сменить членство в группах безопасности, права уже созданного пользователя не изменятся, что тоже минус. Да и для удовлетворения моих требований не подходит выделение только прав 'rw'.