* Admin/Mail: allow to limit users to only create identities for aliases

This commit is contained in:
Ralf Becker 2016-10-28 14:27:07 +02:00
parent c6c0cd90d1
commit 74e2c62b48
10 changed files with 84 additions and 29 deletions

View File

@ -130,6 +130,17 @@ class admin_mail
'email' => 'EMail-address from account',
);
/**
* Options for further identities
*
* @var array
*/
public static $further_identities = array(
0 => 'Forbid users to create identities',
1 => 'Allow users to create further identities',
2 => 'Allow users to create identities for aliases',
);
/**
* List of domains know to not support Sieve
*
@ -929,6 +940,11 @@ class admin_mail
unset($content['acc_smtp_auth_session']);
unset($content['notify_use_default']);
}
// copy ident_email_alias selectbox back to regular name
elseif (isset($content['ident_email_alias']))
{
$content['ident_email'] = $content['ident_email_alias'];
}
$edit_access = Mail\Account::check_access(Acl::EDIT, $content);
// disable notification save-default and use-default, if only one account or no edit-rights
@ -1179,6 +1195,17 @@ class admin_mail
$sel_options['acc_imap_logintype'] = self::$login_types;
$sel_options['ident_id'] = $content['identities'];
$sel_options['acc_id'] = $content['accounts'];
$sel_options['acc_further_identities'] = self::$further_identities;
// if only aliases are allowed for futher identities, add them as options
if ($content['acc_further_identities'] == 2)
{
$sel_options['ident_email_alias'] = array_merge(
array('' => $content['mailLocalAddress'].' ('.lang('Default').')'),
array_combine($content['mailAlternateAddress'], $content['mailAlternateAddress']));
// copy ident_email to select-box ident_email_alias, as et2 requires unique ids
$content['ident_email_alias'] = $content['ident_email'];
}
// user is allowed to create or edit further identities
if ($edit_access || $content['acc_further_identities'])
@ -1227,6 +1254,10 @@ class admin_mail
// disable aliases tab for default smtp class EGroupware\Api\Mail\Smtp
$readonlys['tabs']['admin.mailaccount.aliases'] = !$content['acc_smtp_type'] ||
$content['acc_smtp_type'] == 'EGroupware\\Api\\Mail\\Smtp';
if ($readonlys['tabs']['admin.mailaccount.aliases'])
{
unset($sel_options['acc_further_identities'][2]); // can limit identities to aliases without aliases ;-)
}
// allow smtp class to disable certain features in alias tab
if ($content['acc_smtp_type'] && class_exists($content['acc_smtp_type']) &&

View File

@ -100,6 +100,7 @@ all users admin de Alle Benutzer
allow anonymous access to this app admin de Anonymen Zugriff auf diese Anwendung zulassen
allow remote administration from following install id's (comma separated) admin de Erlaube die Remote-Verwaltung durch folgende (Komma separierte) Install IDs
allow users to change forwards admin de Anwender dürfen Weiterleitung bearbeiten
allow users to create identities for aliases admin de Anwender dürfen Identitäten für Aliase anlegen
alternate email address admin de zusätzliche E-Mail-Adressen
and logged in admin de und eingeloggt
anonymous user admin de Anonymer Benutzer
@ -394,6 +395,7 @@ filtered by group admin de Suche nach Gruppenprofilen
folder acl admin de Zugriffsrechte
for the times above admin de für die oben angegebenen Zeiten
for the times below (empty values count as '*', all empty = every minute) admin de für die darunter angegebenen Zeiten (leere Felder zählen als "*", alles leer = jede Minute)
forbid users to create identities admin de Anwender dürfen keine Identitäten anlegen
force selectbox admin de Auswahl erzwingen
force users to change their password regularily?(empty for no,number for after that number of days admin de Erzwinge das ändern von Passwörtern durch den Benutzer nach X Tagen. (leer für nein, eine positive Zahl für alle X Tage)
forward also to admin de zusätzlich weiterleiten

View File

@ -100,6 +100,7 @@ all users admin en All users
allow anonymous access to this app admin en Allow anonymous access to this app
allow remote administration from following install id's (comma separated) admin en Allow remote administration from following install ID's, comma separated.
allow users to change forwards admin en Allow users to change forwards
allow users to create identities for aliases admin en Allow users to create identities for aliases
alternate email address admin en Alternate email address
and logged in admin en and logged in
anonymous user admin en Anonymous user
@ -394,6 +395,7 @@ filtered by group admin en Filtered by group
folder acl admin en Folder ACL
for the times above admin en For the times above
for the times below (empty values count as '*', all empty = every minute) admin en For the times below: empty values count as '*', all empty = every minute.
forbid users to create identities admin en Forbid users to create identities
force selectbox admin en Force select box
force users to change their password regularily?(empty for no,number for after that number of days admin en Set recurrent forced password change. Set a number of days. Empty = No
forward also to admin en Forward also to

View File

@ -12,29 +12,31 @@
<rows>
<row>
<description for="ident_id" value="Identity"/>
<menulist>
<menupopup id="ident_id" no_lang="1" onchange="1"/>
</menulist>
<checkbox label="allow users to create further identities" id="acc_further_identities" class="emailadmin_no_user"/>
<select id="ident_id" no_lang="1" onchange="1"/>
<select id="acc_further_identities" class="emailadmin_no_user" onchange="1"/>
</row>
<row>
<description for="ident_name" value="Name"/>
<textbox id="ident_name" size="80" maxlength="128" span="all" blur="default your name and email"/>
<textbox id="ident_name" size="90" maxlength="128" span="all" blur="default your name and email"/>
</row>
<row>
<description for="ident_realname" value="Your name"/>
<hbox span="all">
<textbox id="ident_realname" size="80" maxlength="128"/>
<textbox id="ident_realname" size="90" maxlength="128"/>
<buttononly label="Placeholders" id="button[placeholders]" onclick="window.open(egw::link('/index.php','menuaction=addressbook.addressbook_merge.show_replacements&amp;nonavbar=1'),'_blank','dependent=yes,width=860,height=620,scrollbars=yes,status=yes'); return false;" options="dialog_help"/>
</hbox>
</row>
<row>
<description for="ident_org" value="Organisation"/>
<textbox id="ident_org" size="80" maxlength="128" span="all"/>
<textbox id="ident_org" size="90" maxlength="128" span="all"/>
</row>
<row>
<row disabled="@acc_further_identities=2">
<description for="ident_email" value="EMail address"/>
<url-email id="ident_email" options="80,128" span="all"/>
<url-email id="ident_email" size="90" maxlength="128" span="all"/>
</row>
<row disabled="!@acc_further_identities=2">
<description for="ident_email_alias" value="EMail address"/>
<select id="ident_email_alias" span="all" class="et2_fullWidth"/>
</row>
<row>
<htmlarea expand_toolbar="false" height="125px" id="ident_signature" span="all" width="100%"/>

15
api/setup/setup.inc.php Executable file → Normal file
View File

@ -12,7 +12,7 @@
/* Basic information about this app */
$setup_info['api']['name'] = 'api';
$setup_info['api']['title'] = 'EGroupware API';
$setup_info['api']['version'] = '16.1.003';
$setup_info['api']['version'] = '16.1.004';
$setup_info['api']['versions']['current_header'] = '1.29';
$setup_info['api']['enable'] = 3;
$setup_info['api']['app_order'] = 1;
@ -44,12 +44,12 @@ $setup_info['api']['tables'][] = 'egw_locks';
$setup_info['api']['tables'][] = 'egw_sqlfs_props';
$setup_info['api']['tables'][] = 'egw_customfields';
$setup_info['api']['tables'][] = 'egw_sharing';
$setup_info['api']['tables'][] = 'egw_mailaccounts';
$setup_info['api']['tables'][] = 'egw_ea_accounts';
$setup_info['api']['tables'][] = 'egw_ea_credentials';
$setup_info['api']['tables'][] = 'egw_ea_identities';
$setup_info['api']['tables'][] = 'egw_ea_valid';
$setup_info['api']['tables'][] = 'egw_ea_notifications';
$setup_info['api']['tables'][] = 'egw_mailaccounts';
$setup_info['api']['tables'][] = 'egw_ea_accounts';
$setup_info['api']['tables'][] = 'egw_ea_credentials';
$setup_info['api']['tables'][] = 'egw_ea_identities';
$setup_info['api']['tables'][] = 'egw_ea_valid';
$setup_info['api']['tables'][] = 'egw_ea_notifications';
// hooks used by vfs_home_hooks to manage user- and group-directories for the new stream based VFS
$setup_info['api']['hooks']['addaccount'] = array('EGroupware\\Api\\Vfs\\Hooks::addAccount', 'EGroupware\\Api\\Mail\\Hooks::addaccount');
@ -128,3 +128,4 @@ $setup_info['groupdav']['author'] = $setup_info['groupdav']['maintainer'] = arra
$setup_info['groupdav']['license'] = 'GPL';
$setup_info['groupdav']['hooks']['preferences'] = 'EGroupware\\Api\\CalDAV\\Hooks::menus';
$setup_info['groupdav']['hooks']['settings'] = 'EGroupware\\Api\\CalDAV\\Hooks::settings';

View File

@ -440,7 +440,6 @@ $phpgw_baseline = array(
'acc_imap_type' => array('type' => 'ascii','precision' => '32','default' => 'emailadmin_imap','comment' => 'imap class to use'),
'acc_imap_logintype' => array('type' => 'ascii','precision' => '20','comment' => 'standard, vmailmgr, admin, uidNumber'),
'acc_domain' => array('type' => 'varchar','precision' => '100','comment' => 'domain name'),
'acc_further_identities' => array('type' => 'bool','nullable' => False,'default' => '1','comment' => '0=no, 1=yes'),
'acc_user_editable' => array('type' => 'bool','nullable' => False,'default' => '1','comment' => '0=no, 1=yes'),
'acc_sieve_ssl' => array('type' => 'int','precision' => '1','default' => '1','comment' => '0=none, 1=starttls, 2=tls, 3=ssl, &8=validate certificate'),
'acc_modified' => array('type' => 'timestamp','nullable' => False,'default' => 'current_timestamp'),
@ -449,7 +448,8 @@ $phpgw_baseline = array(
'acc_folder_junk' => array('type' => 'varchar','precision' => '128','comment' => 'junk folder'),
'acc_imap_default_quota' => array('type' => 'int','precision' => '4','comment' => 'default quota, if no user specific one set'),
'acc_imap_timeout' => array('type' => 'int','precision' => '2','comment' => 'timeout for imap connection'),
'acc_user_forward' => array('type' => 'bool','default' => '0','comment' => 'allow user to define forwards')
'acc_user_forward' => array('type' => 'bool','default' => '0','comment' => 'allow user to define forwards'),
'acc_further_identities' => array('type' => 'int','precision' => '1','nullable' => False,'default' => '1','comment' => '0=no, 1=yes, 2=only matching aliases')
),
'pk' => array('acc_id'),
'fk' => array(),
@ -508,5 +508,5 @@ $phpgw_baseline = array(
'fk' => array(),
'ix' => array(array('account_id','acc_id')),
'uc' => array()
),
)
);

View File

@ -117,3 +117,25 @@ function api_upgrade16_1_002()
return $GLOBALS['setup_info']['api']['currentver'] = '16.1.003';
}
/**
* Change egw_ea_accounts.acc_further_identities from boolean to int(1)
*
* @return type
*/
function api_upgrade16_1_003()
{
$GLOBALS['egw_setup']->oProc->RenameColumn('egw_ea_accounts', 'acc_further_identities', 'further_bool');
$GLOBALS['egw_setup']->oProc->AddColumn('egw_ea_accounts','acc_further_identities',array(
'type' => 'int',
'precision' => '1',
'nullable' => False,
'default' => '1',
'comment' => '0=no, 1=yes, 2=only matching aliases'
));
$GLOBALS['egw_setup']->oProc->query('UPDATE egw_ea_accounts SET acc_further_identities=0 WHERE NOT further_bool', __LINE__, __FILE__);
$GLOBALS['egw_setup']->oProc->DropColumn('egw_ea_accounts',
$GLOBALS['egw_setup']->db->get_table_definitions('api', 'egw_ea_accounts'), 'further_bool');
return $GLOBALS['setup_info']['api']['currentver'] = '16.1.004';
}

View File

@ -1045,7 +1045,7 @@ class Account implements \ArrayAccess
*/
protected static function db2data(array $data)
{
foreach(array('acc_sieve_enabled','acc_further_identities','acc_user_editable','acc_smtp_auth_session','acc_user_forward') as $name)
foreach(array('acc_sieve_enabled','acc_user_editable','acc_smtp_auth_session','acc_user_forward') as $name)
{
if (isset($data[$name]))
{

View File

@ -32,7 +32,7 @@ all of mail de alle
all subfolders will be deleted too, and all messages in all affected folders will be lost mail de Alle Unterordner und Nachrichten in den betroffenen Ordnern werden unwiederruflich gelöscht.
allow external images mail de Erlaube Bilder von externen Bildquellen
allow images from external sources in html emails mail de Erlaube Bilder von externen Bildquellen in HTML-E-Mails
allow users to create further identities mail de Anwender dürfen weitere Identitäten hinzufügen
allow users to create further identities mail de Anwender dürfen weitere Identitäten anlegen
allways a new window mail de immer in einem neuen Fenster
always show html emails mail de HTML-E-Mails immer anzeigen
an error happend while trying to remove acl rights from the account %1! mail de Ein Fehler trat auf beim Versuch die Zugriffskontrollrechte vom Konto %1 zu entfernen!
@ -102,14 +102,9 @@ deleted! mail de gelöscht!
deleting %1 folders in progress ... mail de %1 Ordner in Bearbeitung zum Löschen
deleting folders mail de Ordner werden gelöscht
deny certain groups access to following features mail de Den Zugriff auf bestimmte Funktionen im E-Mail Modul einschränken.
<<<<<<< Updated upstream
directories have to be shared. mail de Verzeichnisse müssen freigegeben werden.
disable mail de Deaktivieren
=======
details mail de Mit Kurzvorschau
directories have to be shared. mail de Verzeichnisse müssen freigegeben werden
disable mail de deaktivieren
>>>>>>> Stashed changes
disable ruler for separation of mailbody and signature mail de Signatur-Trennzeichen ausblenden
disable use of flowed lines in plain text mails (rfc3676) mail de Variablen Zeilenumbruch in text Mails (RFC3676) abschalten
disabled! mail de deaktiviert

View File

@ -173,6 +173,7 @@ error:could not save the acl! because some names are empty! mail en Error:Could
esync will fail without a working email configuration! mail en eSync will FAIL without a working eMail configuration!
event details follow mail en Event Details follow
everyone mail en Everyone
examine namespace to retrieve folders in others and shared mail en Examine Namespace to retrieve Folders in OTHERS and SHARED
extended mail en Extended
extra sent folders mail en Extra sent folders
failed to delete %1 mail en Failed to delete %1
@ -259,7 +260,7 @@ importance mail en importance
important mail en important
in mailbox: %1, with id: %2, and partid: %3 mail en In Mailbox: %1, with ID: %2, and PartID: %3
inbox mail en INBOX
initialization of mail failed. Please use the Wizard to cope with the problem. mail en Initialization of mail failed. Please use the Wizard to cope with the problem.
initialization of mail failed. please use the wizard to cope with the problem. mail en Initialization of mail failed. Please use the Wizard to cope with the problem.
inline mail en Inline
insert the signature at top of the new (or reply) message when opening compose dialog (you may not be able to switch signatures) mail en insert the signature at top of the new (or reply) message when opening compose dialog (you may not be able to switch signatures)
job mail en job
@ -296,8 +297,8 @@ move mail en Move
move folder mail en Move Folder
move selected mails to archive mail en Move selected mails to archive
move selected to mail en Move selected to
move to archive mail en Move to archive folder
move to mail en Move to
move to archive mail en Move to archive folder
move to trash mail en move to trash
moved %1 message(s) from %2 to %3 mail en moved %1 message(s) from %2 to %3
moving folders from one mailaccount to another is not supported mail en Moving Folders from one Mailaccount to another is not supported
@ -565,4 +566,3 @@ you need to install mailvelope plugin available for chrome and firefox from %1.
you need to save the message as draft first before to be able to save it into vfs mail en You need to save the message as draft first before to be able to save it into VFS
you will loose current message body, unless you save it to your clipboard! mail en You will loose current message body, unless you save it to your clipboard!
you've got new mail mail en You've got new mail
examine namespace to retrieve folders in others and shared mail en Examine Namespace to retrieve Folders in OTHERS and SHARED