diff --git a/contrib/openldap/core-fd.schema b/contrib/openldap/core-fd.schema index 692d4ee7a511bf66c75d54c4bfdc7da8303cdb5a..16e366a2a666938af7aa34329cbb45cef7e80d1a 100644 --- a/contrib/openldap/core-fd.schema +++ b/contrib/openldap/core-fd.schema @@ -123,10 +123,6 @@ objectclass ( 1.3.6.1.4.1.10098.1.2.1.19.6 NAME 'gosaAccount' SUP top AUXILIARY gosaDefaultLanguage $ academicTitle $ personalTitle $ dateOfBirth $ sambaBadPasswordCount $ sambaBadPasswordTime $ gender $ gosaLoginRestriction )) -objectclass ( 1.3.6.1.4.1.10098.1.2.1.19.11 NAME 'gosaUserTemplate' SUP top AUXILIARY - DESC 'Class for GOsa User Templates (v2.6.1)' - MUST ( cn )) - objectclass ( 1.3.6.1.4.1.10098.1.2.1.19.12 NAME 'gosaGroupOfNames' DESC 'GOsa object grouping (v2.6.1)' SUP top STRUCTURAL diff --git a/contrib/openldap/template-fd.schema b/contrib/openldap/template-fd.schema new file mode 100644 index 0000000000000000000000000000000000000000..828ae9a9ffc69f253b70aad374866cea91d1a028 --- /dev/null +++ b/contrib/openldap/template-fd.schema @@ -0,0 +1,15 @@ +## +## template-fd.schema - Needed by Fusion Directory for managing templates +## + +# Attributes +attributetype ( 1.3.6.1.4.1.38414.38.1.1 NAME 'fdTemplateField' + DESC 'FusionDirectory - template field' + EQUALITY caseExactIA5Match + SYNTAX 1.3.6.1.4.1.1466.115.121.1.26) + +# Objectclasses +objectclass (1.3.6.1.4.1.38414.38.2.1 NAME 'fdTemplate' + DESC 'FusionDirectory - template object' + MUST ( cn ) + MAY ( fdTemplateField ) ) diff --git a/include/class_tabs.inc b/include/class_tabs.inc index 4aeea2010ae35a9a8f7ba59ef5018ec54af572fd..dd0a36af3c7e75bc71d56190e5ed61b881b6b790 100644 --- a/include/class_tabs.inc +++ b/include/class_tabs.inc @@ -317,7 +317,7 @@ class tabs /* Check all plugins */ foreach ($this->by_object as $key => &$obj) { - if ($obj->is_account || $obj->ignore_account) { + if (($obj->is_account || $obj->ignore_account) && (!$obj->is_template)) { @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $key, "Checking"); $msg = $obj->check(); @@ -427,5 +427,15 @@ class tabs } unset($obj); } + + function setTemplateMode($cn) + { + $this->getBaseObject()->template_cn = $cn; + + foreach ($this->by_object as &$obj) { + $obj->is_template = TRUE; + } + unset($obj); + } } ?> diff --git a/plugins/admin/ogroups/class_ogroup.inc b/plugins/admin/ogroups/class_ogroup.inc index 768b42e64949b2a1fe8a368e5bbea9bccc69bcb3..d72cea6b0bc3f92afde4d8d89236b153f982eb05 100644 --- a/plugins/admin/ogroups/class_ogroup.inc +++ b/plugins/admin/ogroups/class_ogroup.inc @@ -677,7 +677,7 @@ class ogroup extends plugin $type= "I"; foreach(array( - "Y" => "gosaUserTemplate", + "Y" => "fdTemplate", "U" => "gosaAccount", "G" => "posixGroup", "A" => "gosaApplication", diff --git a/plugins/admin/ogroups/objectSelect/selectObject-filter.xml b/plugins/admin/ogroups/objectSelect/selectObject-filter.xml new file mode 100644 index 0000000000000000000000000000000000000000..5a12e616efae9a4cca8f3944751a7ff00bbd5907 --- /dev/null +++ b/plugins/admin/ogroups/objectSelect/selectObject-filter.xml @@ -0,0 +1,140 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<filterdef> + <definition> + <category>users</category> + <template>../plugins/admin/ogroups/objectSelect/selectObject-filter.tpl</template> + <initial>true</initial> + </definition> + + <search> + <query> + <backend>LDAPBlacklist</backend> + <filter>(&(| $USER $GROUP $APPLICATION $SERVER $WORKSTATION $WINSTATION $TERMINAL $PRINTER $PHONE) $NAME)</filter> + <attribute>dn</attribute> + <attribute>objectClass</attribute> + <attribute>cn</attribute> + <attribute>sn</attribute> + <attribute>ou</attribute> + <attribute>uid</attribute> + <attribute>givenName</attribute> + <attribute>description</attribute> + </query> + <query> + <backend>LDAPDepartmentBlacklist</backend> + <filter>(&(| $DEPARTMENT) $NAME)</filter> + <attribute>dn</attribute> + <attribute>objectClass</attribute> + <attribute>cn</attribute> + <attribute>sn</attribute> + <attribute>ou</attribute> + <attribute>uid</attribute> + <attribute>givenName</attribute> + <attribute>description</attribute> + </query> + <scope>auto</scope> + </search> + + <element> + <type>textfield</type> + <tag>NAME</tag> + <size>20</size> + <maxlength>60</maxlength> + <default></default> + <unset></unset> + <set>(|(cn=*$*)(sn=*$*)(givenName=*$*)(ou=*$*)(dc=*$*)(c=*$*)(l=*$*))</set> + <alphabet>true</alphabet> + <autocomplete> + <backend>LDAPBlacklist</backend> + <filter>(&(|(objectClass=gosaDepartment)(objectClass=gosaAccount)(objectClass=posixGroup)(objectClass=goServer)(objectClass=gotoWorkstation)(objectClass=sambaSamAccount)(objectClass=gotoTerminal)(objectClass=gotoPrinter)(objectClass=goFonHardware))(|(cn=*$NAME*)(sn=*$NAME*)(givenName=*$NAME*)(ou=*$NAME*)(dc=*$NAME*)(c=*$NAME*)(l=*$NAME*)))</filter> + <attribute>cn</attribute> + <attribute>l</attribute> + <attribute>o</attribute> + <attribute>dc</attribute> + <attribute>c</attribute> + <frequency>0.5</frequency> + <characters>3</characters> + </autocomplete> + </element> + + <element> + <type>checkbox</type> + <tag>USER</tag> + <default></default> + <set>(objectClass=gosaAccount)</set> + <unset></unset> + </element> + + <element> + <type>checkbox</type> + <tag>GROUP</tag> + <default></default> + <unset></unset> + <set>(objectClass=posixGroup)</set> + </element> + + <element> + <type>checkbox</type> + <tag>DEPARTMENT</tag> + <default></default> + <unset></unset> + <set>(objectClass=gosaDepartment)</set> + </element> + + <element> + <type>checkbox</type> + <tag>APPLICATION</tag> + <default></default> + <unset></unset> + <set>(objectClass=gosaApplication)</set> + </element> + + <element> + <type>checkbox</type> + <tag>SERVER</tag> + <default></default> + <unset></unset> + <set>(objectClass=goServer)</set> + </element> + + <element> + <type>checkbox</type> + <tag>WORKSTATION</tag> + <default></default> + <unset></unset> + <set>(objectClass=gotoWorkstation)</set> + </element> + + <element> + <type>checkbox</type> + <tag>WINSTATION</tag> + <default></default> + <unset></unset> + <set>(&(objectClass=sambaSamAccount)(objectClass=Account))</set> + </element> + + <element> + <type>checkbox</type> + <tag>TERMINAL</tag> + <default></default> + <unset></unset> + <set>(objectClass=gotoTerminal)</set> + </element> + + <element> + <type>checkbox</type> + <tag>PRINTER</tag> + <default></default> + <unset></unset> + <set>(objectClass=gotoPrinter)</set> + </element> + + <element> + <type>checkbox</type> + <tag>PHONE</tag> + <default></default> + <unset></unset> + <set>(objectClass=goFonHardware)</set> + </element> + +</filterdef> diff --git a/plugins/admin/users/class_userManagement.inc b/plugins/admin/users/class_userManagement.inc index 620234399f235d04f74485781e5ce5fcd8f7a4db..b648f3b5bd5d01f9ba37d3fb973dda42a5981a7b 100644 --- a/plugins/admin/users/class_userManagement.inc +++ b/plugins/admin/users/class_userManagement.inc @@ -173,7 +173,7 @@ class userManagement extends management function newTemplate($action, $entry) { $this->newEntry(); - $this->tabObject->set_template_mode (); + $this->tabObject->setTemplateMode('template_tmp'); // FIXME : this needs to be chosen by the user } @@ -767,7 +767,7 @@ class userManagement extends management if (preg_match("/c/", $acl)) { // Search all templates from the current dn. $ldap->cd(get_people_ou().$value); - $ldap->search("(objectClass=gosaUserTemplate)", array('cn')); + $ldap->search("(&(fdTemplateField=objectClass:person)(objectClass=fdTemplate))", array('cn')); if ($ldap->count() != 0) { while ($attrs = $ldap->fetch()) { $templates[$ldap->getDN()] = $attrs['cn'][0]." - ".LDAP::fix($key); diff --git a/plugins/admin/users/user-filter.xml b/plugins/admin/users/user-filter.xml index 99c5a41ed06a11f53125a3fb7bf2dd4e2d495636..fab5baa238674785148941dd75f12f8131d2bd07 100644 --- a/plugins/admin/users/user-filter.xml +++ b/plugins/admin/users/user-filter.xml @@ -10,7 +10,7 @@ <search> <query> <backend>LDAP</backend> - <filter>(&(objectClass=gosaAccount)$TEMPLATES$NAME(|$FUNCTIONAL$SAMBA$POSIX$MAIL))</filter> + <filter>(&$NAME(|(&(objectClass=gosaAccount)(|$FUNCTIONAL$SAMBA$POSIX$MAIL))$TEMPLATES))</filter> <attribute>dn</attribute> <attribute>objectClass</attribute> <attribute>givenName</attribute> @@ -44,8 +44,8 @@ <type>checkbox</type> <tag>TEMPLATES</tag> <default></default> - <unset>(!(objectClass=gosaUserTemplate))</unset> - <set></set> + <unset></unset> + <set>(objectClass=fdTemplate)</set> </element> <element> diff --git a/plugins/admin/users/user-list.xml b/plugins/admin/users/user-list.xml index f6678beef1ab3d34a7d408e6465eda2e37f3e637..dc0042572729581b5e1cd1926c5f7fbe88493dbe 100644 --- a/plugins/admin/users/user-list.xml +++ b/plugins/admin/users/user-list.xml @@ -11,22 +11,6 @@ <label>List of users</label> <defaultSortColumn>1</defaultSortColumn> - <objectType> - <label>Template</label> - <objectClass>gosaUserTemplate</objectClass> - <category>user</category> - <class>user</class> - <image>plugins/users/images/select_template.png</image> - </objectType> - - <objectType> - <label>User</label> - <objectClass>gosaAccount</objectClass> - <category>user</category> - <class>user</class> - <image>geticon.php?context=types&icon=user&size=16</image> - </objectType> - </definition> <table> @@ -49,7 +33,7 @@ <label>Surname</label> <sortAttribute>sn</sortAttribute> <sortType>string</sortType> - <value>%{filter:link(row,dn,"%s",sn)}</value> + <value>%{filter:filterRowLink(pid,row,dn,sn,cn)}</value> <export>true</export> </column> @@ -89,16 +73,16 @@ <label>Create</label> <action> - <name>new</name> + <name>new_user</name> <type>entry</type> <image>geticon.php?context=types&icon=user&size=16</image> <label>User</label> </action> <action> - <name>new_template</name> + <name>new_template_user</name> <type>entry</type> - <image>plugins/users/images/select_template.png</image> + <image>geticon.php?context=actions&icon=document-new&size=16</image> <label>Template</label> </action> </action> @@ -121,14 +105,6 @@ <label>Remove</label> </action> - <action> - <name>password</name> - <type>entry</type> - <image>geticon.php?context=status&icon=dialog-password&size=16</image> - <label>Change password</label> - <acl>user/password[w]</acl> - </action> - <action> <type>separator</type> </action> @@ -154,7 +130,7 @@ </action> <action> - <name>templatize</name> + <name>template_apply_user</name> <type>entry</type> <image>geticon.php?context=actions&icon=tools-wizard&size=16</image> <label>Apply template</label> @@ -185,23 +161,22 @@ <actiontriggers snapshot="true" copypaste="true"> <action> - <name>newfromtpl</name> + <name>template_apply_user</name> <type>entry</type> <image>geticon.php?context=actions&icon=document-new&size=16</image> - <objectclass>gosaUserTemplate</objectclass> + <objectclass>fdTemplate</objectclass> <label>New user from template</label> </action> <action> <name>cp</name> - <objectclass>!gosaUserTemplate</objectclass> + <objectclass>!fdTemplate</objectclass> <type>copypaste</type> </action> <action> <name>edit</name> <type>entry</type> - <objectclass>gosaAccount</objectclass> <image>geticon.php?context=actions&icon=document-edit&size=16</image> <label>Edit user</label> </action> @@ -209,32 +184,22 @@ <action> <name>lock</name> <type>entry</type> - <objectclass>!gosaUserTemplate</objectclass> + <objectclass>!fdTemplate</objectclass> <image>%{filter:lockImage(userPassword)}</image> <acl>user/password[w]</acl> <label>%{filter:lockLabel(userPassword)}</label> </action> - <action> - <name>password</name> - <type>entry</type> - <objectclass>!gosaUserTemplate</objectclass> - <acl>user/password[w]</acl> - <image>geticon.php?context=status&icon=dialog-password&size=16</image> - <label>Change password</label> - </action> - <action> <name>snapshot</name> <type>snapshot</type> - <objectclass>!gosaUserTemplate</objectclass> + <objectclass>!fdTemplate</objectclass> </action> <action> <name>remove</name> <type>entry</type> <image>geticon.php?context=actions&icon=edit-delete&size=16</image> - <objectclass>gosaAccount</objectclass> <acl>user/user[d]</acl> <label>Remove user</label> </action> diff --git a/plugins/personal/posix/trustSelect/trust-filter.xml b/plugins/personal/posix/trustSelect/trust-filter.xml deleted file mode 100644 index 8dd8d9685fa69ee565351d1581a9e22283073bd2..0000000000000000000000000000000000000000 --- a/plugins/personal/posix/trustSelect/trust-filter.xml +++ /dev/null @@ -1,72 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> - -<filterdef> - <definition> - <category>groups</category> - <template>../plugins/personal/posix/trustSelect/trust-filter.tpl</template> - <initial>true</initial> - </definition> - - <search> - <query> - <backend>LDAPBlacklist</backend> - <filter>(&(|$SERVER $WORKSTATION $WINSTATION $TERMINAL)$NAME)</filter> - <attribute>dn</attribute> - <attribute>objectClass</attribute> - <attribute>cn</attribute> - <attribute>description</attribute> - </query> - <scope>auto</scope> - </search> - - <element> - <type>textfield</type> - <tag>NAME</tag> - <size>20</size> - <maxlength>60</maxlength> - <default></default> - <unset></unset> - <set>(cn=*$*)</set> - <alphabet>false</alphabet> - <autocomplete> - <backend>LDAPBlacklist</backend> - <filter>(cn=*$NAME*)</filter> - <attribute>cn</attribute> - <frequency>0.5</frequency> - <characters>3</characters> - </autocomplete> - </element> - - <element> - <type>checkbox</type> - <tag>SERVER</tag> - <default>true</default> - <unset></unset> - <set>(objectClass=goServer)</set> - </element> - - <element> - <type>checkbox</type> - <tag>WORKSTATION</tag> - <default>true</default> - <unset></unset> - <set>(objectClass=gotoWorkstation)</set> - </element> - - <element> - <type>checkbox</type> - <tag>WINSTATION</tag> - <default>true</default> - <unset></unset> - <set>(&(objectClass=sambaSamAccount)(objectClass=Account))</set> - </element> - - <element> - <type>checkbox</type> - <tag>TERMINAL</tag> - <default>true</default> - <unset></unset> - <set>(objectClass=gotoTerminal)</set> - </element> - -</filterdef>