New prop : select auth type with radio box

This commit is contained in:
Faustin 2022-08-03 20:01:13 +02:00
parent d21fbd5a0f
commit 868d07ae96
5 changed files with 58 additions and 47 deletions

View File

@ -91,10 +91,8 @@ if ($action == 'update' && !$cancel) {
if (GETPOSTISSET("MAIN_MAIL_SMTPS_PW")) { if (GETPOSTISSET("MAIN_MAIL_SMTPS_PW")) {
dolibarr_set_const($db, "MAIN_MAIL_SMTPS_PW", GETPOST("MAIN_MAIL_SMTPS_PW", 'none'), 'chaine', 0, '', $conf->entity); dolibarr_set_const($db, "MAIN_MAIL_SMTPS_PW", GETPOST("MAIN_MAIL_SMTPS_PW", 'none'), 'chaine', 0, '', $conf->entity);
} }
if (GETPOSTISSET("MAIN_MAIL_SMTPS_USE_OAUTH")) { if (GETPOSTISSET("MAIN_MAIL_SMTPS_AUTH_TYPE")) {
dolibarr_set_const($db, "MAIN_MAIL_SMTPS_USE_OAUTH", GETPOST("MAIN_MAIL_SMTPS_USE_OAUTH", 'int'), 'chaine', 0, '', $conf->entity); dolibarr_set_const($db, "MAIN_MAIL_SMTPS_AUTH_TYPE", GETPOST("MAIN_MAIL_SMTPS_AUTH_TYPE", 'chaine'), 'chaine', 0, '', $conf->entity);
$method = GETPOST("MAIN_MAIL_SMTPS_USE_OAUTH", 'aZ09') == 1 ? 'XOAUTH2' : 'LOGIN';
dolibarr_set_const($db, "MAIL_SMTP_AUTH_TYPE", $method, 'chaine', 0, '', $conf->entity);
} }
if (GETPOSTISSET("MAIN_MAIL_SMTPS_OAUTH_SERVICE")) { if (GETPOSTISSET("MAIN_MAIL_SMTPS_OAUTH_SERVICE")) {
dolibarr_set_const($db, "MAIN_MAIL_SMTPS_OAUTH_SERVICE", GETPOST("MAIN_MAIL_SMTPS_OAUTH_SERVICE", 'chaine'), 'chaine', 0, '', $conf->entity); dolibarr_set_const($db, "MAIN_MAIL_SMTPS_OAUTH_SERVICE", GETPOST("MAIN_MAIL_SMTPS_OAUTH_SERVICE", 'chaine'), 'chaine', 0, '', $conf->entity);
@ -222,8 +220,7 @@ if ($action == 'edit') {
jQuery("#MAIN_MAIL_EMAIL_DKIM_PRIVATE_KEY").prop("disabled", true); jQuery("#MAIN_MAIL_EMAIL_DKIM_PRIVATE_KEY").prop("disabled", true);
jQuery(".smtp_method").hide(); jQuery(".smtp_method").hide();
jQuery(".dkim").hide(); jQuery(".dkim").hide();
jQuery(".smtp_oauth_service").hide(); jQuery(".smtp_auth_method").hide();
jQuery(".smtp_use_oauth").hide();
'; ';
if ($linuxlike) { if ($linuxlike) {
print ' print '
@ -266,8 +263,7 @@ if ($action == 'edit') {
jQuery("#smtp_port_mess").hide(); jQuery("#smtp_port_mess").hide();
jQuery(".smtp_method").show(); jQuery(".smtp_method").show();
jQuery(".dkim").hide(); jQuery(".dkim").hide();
jQuery(".smtp_oauth_service").show(); jQuery(".smtp_auth_method").show();
jQuery(".smtp_use_oauth").show();
} }
if (jQuery("#MAIN_MAIL_SENDMODE").val()==\'swiftmailer\') if (jQuery("#MAIN_MAIL_SENDMODE").val()==\'swiftmailer\')
{ {
@ -295,27 +291,30 @@ if ($action == 'edit') {
jQuery("#smtp_port_mess").hide(); jQuery("#smtp_port_mess").hide();
jQuery(".smtp_method").show(); jQuery(".smtp_method").show();
jQuery(".dkim").show(); jQuery(".dkim").show();
jQuery(".smtp_oauth_service").hide(); jQuery(".smtp_auth_method").hide();
jQuery(".smtp_use_oauth").hide();
} }
} }
function change_smtp_oauth_service() { function change_smtp_auth_method() {
console.log(jQuery("#MAIN_MAIL_SMTPS_USE_OAUTH").val()); console.log(jQuery("#radio_pw").prop("checked"));
if (jQuery("#MAIN_MAIL_SMTPS_USE_OAUTH").val() == 1) { if (jQuery("#MAIN_MAIL_SENDMODE").val()==\'smtps\' && jQuery("#radio_oauth").prop("checked")) {
jQuery(".smtp_oauth_service").show(); jQuery(".smtp_oauth_service").show();
jQuery(".smtp_pw").hide(); jQuery(".smtp_pw").hide();
} else if(jQuery("#MAIN_MAIL_SENDMODE").val()==\'mail\'){
jQuery(".smtp_oauth_service").hide();
jQuery(".smtp_pw").hide();
} else { } else {
jQuery(".smtp_oauth_service").hide(); jQuery(".smtp_oauth_service").hide();
jQuery(".smtp_pw").show(); jQuery(".smtp_pw").show();
} }
} }
initfields(); initfields();
change_smtp_oauth_service(); change_smtp_auth_method();
jQuery("#MAIN_MAIL_SENDMODE").change(function() { jQuery("#MAIN_MAIL_SENDMODE").change(function() {
initfields(); initfields();
change_smtp_auth_method();
}); });
jQuery("#MAIN_MAIL_SMTPS_USE_OAUTH").change(function() { jQuery("#radio_pw, #radio_oauth").change(function() {
change_smtp_oauth_service(); change_smtp_auth_method();
}); });
jQuery("#MAIN_MAIL_EMAIL_TLS").change(function() { jQuery("#MAIN_MAIL_EMAIL_TLS").change(function() {
if (jQuery("#MAIN_MAIL_EMAIL_TLS").val() == 1) if (jQuery("#MAIN_MAIL_EMAIL_TLS").val() == 1)
@ -416,20 +415,6 @@ if ($action == 'edit') {
} }
print '</tr>'; print '</tr>';
// OAUTH
if (!empty($conf->use_javascript_ajax) || (isset($conf->global->MAIN_MAIL_SENDMODE) && in_array($conf->global->MAIN_MAIL_SENDMODE, array('smtps', 'swiftmailer')))) {
print '<tr class="oddeven smtp_use_oauth"><td>'.$form->textwithpicto($langs->trans("MAIN_MAIL_SMTPS_USE_OAUTH"), $langs->trans("OauthNotAvailableForAll")).'</td><td>';
if (empty($conf->multicompany->enabled) || ($user->admin && !$user->entity)) {
print $form->selectyesno('MAIN_MAIL_SMTPS_USE_OAUTH', (!empty($conf->global->MAIN_MAIL_SMTPS_USE_OAUTH) ? $conf->global->MAIN_MAIL_SMTPS_USE_OAUTH : 0), 1);
} else {
$value = yn($conf->global->MAIN_MAIL_SMTPS_USE_OAUTH);
$htmltext = $langs->trans("ContactSuperAdminForChange");
print $form->textwithpicto($text, $htmltext, 1, 'superadmin');
print '<input type="hidden" id="MAIN_MAIL_SMTPS_USE_OAUTH" name="MAIN_MAIL_SMTPS_USE_OAUTH" value="'.$value.'">';
}
print '</td></tr>';
}
// Port // Port
print '<tr class="oddeven"><td>'; print '<tr class="oddeven"><td>';
if (!$conf->use_javascript_ajax && $linuxlike && $conf->global->MAIN_MAIL_SENDMODE == 'mail') { if (!$conf->use_javascript_ajax && $linuxlike && $conf->global->MAIN_MAIL_SENDMODE == 'mail') {
@ -474,6 +459,25 @@ if ($action == 'edit') {
print '</td></tr>'; print '</td></tr>';
} }
// OAUTH
if (!empty($conf->use_javascript_ajax) || (isset($conf->global->MAIN_MAIL_SENDMODE) && in_array($conf->global->MAIN_MAIL_SENDMODE, array('smtps', 'swiftmailer')))) {
print '<tr class="oddeven smtp_auth_method"><td>'.$langs->trans("MAIN_MAIL_SMTPS_AUTH_TYPE").'</td><td>';
if (empty($conf->multicompany->enabled) || ($user->admin && !$user->entity)) {
print '<input type="radio" id="radio_pw" name="MAIN_MAIL_SMTPS_AUTH_TYPE" value="LOGIN"'.($conf->global->MAIN_MAIL_SMTPS_AUTH_TYPE == 'LOGIN' ? ' checked' : '').'> ';
print '<label for="radio_pw" >'.$langs->trans("UsePassword").'</label>';
print '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;';
print '<input type="radio" id="radio_oauth" name="MAIN_MAIL_SMTPS_AUTH_TYPE" value="XOAUTH2"'.($conf->global->MAIN_MAIL_SMTPS_AUTH_TYPE == 'XOAUTH2' ? ' checked' : '').'> ';
print '<label for="radio_oauth" >'.$form->textwithpicto($langs->trans("UseOauth"), $langs->trans("OauthNotAvailableForAllAndHadToBeCreatedBefore")).'</label>';
} else {
$value = $conf->global->MAIN_MAIL_SMTPS_AUTH_TYPE;
$htmltext = $langs->trans("ContactSuperAdminForChange");
print $form->textwithpicto($langs->trans("MAIN_MAIL_SMTPS_AUTH_TYPE"), $htmltext, 1, 'superadmin');
print '<input type="hidden" id="MAIN_MAIL_SMTPS_AUTH_TYPE" name="MAIN_MAIL_SMTPS_AUTH_TYPE" value="'.$value.'">';
}
print '</td></tr>';
}
// PW // PW
if (!empty($conf->use_javascript_ajax) || (isset($conf->global->MAIN_MAIL_SENDMODE) && in_array($conf->global->MAIN_MAIL_SENDMODE, array('smtps', 'swiftmailer')))) { if (!empty($conf->use_javascript_ajax) || (isset($conf->global->MAIN_MAIL_SENDMODE) && in_array($conf->global->MAIN_MAIL_SENDMODE, array('smtps', 'swiftmailer')))) {
$mainsmtppw = (!empty($conf->global->MAIN_MAIL_SMTPS_PW) ? $conf->global->MAIN_MAIL_SMTPS_PW : ''); $mainsmtppw = (!empty($conf->global->MAIN_MAIL_SMTPS_PW) ? $conf->global->MAIN_MAIL_SMTPS_PW : '');
@ -493,7 +497,7 @@ if ($action == 'edit') {
// OAUTH service provider // OAUTH service provider
if (!empty($conf->use_javascript_ajax) || (isset($conf->global->MAIN_MAIL_SENDMODE) && in_array($conf->global->MAIN_MAIL_SENDMODE, array('smtps')))) { if (!empty($conf->use_javascript_ajax) || (isset($conf->global->MAIN_MAIL_SENDMODE) && in_array($conf->global->MAIN_MAIL_SENDMODE, array('smtps')))) {
print '<tr class="oddeven smtp_oauth_service"><td>'.$form->textwithpicto($langs->trans("MAIN_MAIL_SMTPS_OAUTH_SERVICE"), $langs->trans("DontForgetCreateTokenOauthMod")).'</td><td>'; print '<tr class="oddeven smtp_oauth_service"><td>'.$langs->trans("MAIN_MAIL_SMTPS_OAUTH_SERVICE").'</td><td>';
// SuperAdministrator access only // SuperAdministrator access only
if ((empty($conf->global->MAIN_MODULE_MULTICOMPANY)) || ($user->admin && !$user->entity)) { if ((empty($conf->global->MAIN_MODULE_MULTICOMPANY)) || ($user->admin && !$user->entity)) {
@ -680,10 +684,6 @@ if ($action == 'edit') {
print '<tr class="oddeven"><td>'.$langs->trans("MAIN_MAIL_SMTP_SERVER", ini_get('SMTP') ?ini_get('SMTP') : $langs->transnoentities("Undefined")).'</td><td>'.(!empty($conf->global->MAIN_MAIL_SMTP_SERVER) ? $conf->global->MAIN_MAIL_SMTP_SERVER : '').'</td></tr>'; print '<tr class="oddeven"><td>'.$langs->trans("MAIN_MAIL_SMTP_SERVER", ini_get('SMTP') ?ini_get('SMTP') : $langs->transnoentities("Undefined")).'</td><td>'.(!empty($conf->global->MAIN_MAIL_SMTP_SERVER) ? $conf->global->MAIN_MAIL_SMTP_SERVER : '').'</td></tr>';
} }
// Use OAUTH
if (isset($conf->global->MAIN_MAIL_SENDMODE) && in_array($conf->global->MAIN_MAIL_SENDMODE, array('smtps'))) {
print '<tr class="oddeven"><td>'.$langs->trans("MAIN_MAIL_SMTPS_USE_OAUTH").'</td><td>'.yn($conf->global->MAIN_MAIL_SMTPS_USE_OAUTH).'</td></tr>';
}
// Port // Port
if ($linuxlike && (isset($conf->global->MAIN_MAIL_SENDMODE) && $conf->global->MAIN_MAIL_SENDMODE == 'mail')) { if ($linuxlike && (isset($conf->global->MAIN_MAIL_SENDMODE) && $conf->global->MAIN_MAIL_SENDMODE == 'mail')) {
@ -697,13 +697,20 @@ if ($action == 'edit') {
print '<tr class="oddeven"><td>'.$langs->trans("MAIN_MAIL_SMTPS_ID").'</td><td>'.$conf->global->MAIN_MAIL_SMTPS_ID.'</td></tr>'; print '<tr class="oddeven"><td>'.$langs->trans("MAIN_MAIL_SMTPS_ID").'</td><td>'.$conf->global->MAIN_MAIL_SMTPS_ID.'</td></tr>';
} }
// AUTH method
if (isset($conf->global->MAIN_MAIL_SENDMODE) && in_array($conf->global->MAIN_MAIL_SENDMODE, array('smtps'))) {
$authtype = $conf->global->MAIN_MAIL_SMTPS_AUTH_TYPE;
$text = ($authtype === "LOGIN") ? $langs->trans("UsePassword") : ($authtype === "XOAUTH2" ? $langs->trans("UseOauth") : '') ;
print '<tr class="oddeven"><td>'.$langs->trans("MAIN_MAIL_SMTPS_AUTH_TYPE").'</td><td>'.$text.'</td></tr>';
}
// SMTPS PW // SMTPS PW
if (isset($conf->global->MAIN_MAIL_SENDMODE) && in_array($conf->global->MAIN_MAIL_SENDMODE, array('smtps', 'swiftmailer')) && (!(isset($conf->global->MAIL_SMTP_AUTH_TYPE) && $conf->global->MAIL_SMTP_AUTH_TYPE === "XOAUTH2"))) { if (isset($conf->global->MAIN_MAIL_SENDMODE) && (in_array($conf->global->MAIN_MAIL_SENDMODE, array('swiftmailer')) || (in_array($conf->global->MAIN_MAIL_SENDMODE, array('smtps')) && (isset($conf->global->MAIN_MAIL_SMTPS_AUTH_TYPE) && $conf->global->MAIN_MAIL_SMTPS_AUTH_TYPE === "LOGIN")))) {
print '<tr class="oddeven"><td>'.$langs->trans("MAIN_MAIL_SMTPS_PW").'</td><td>'.preg_replace('/./', '*', $conf->global->MAIN_MAIL_SMTPS_PW).'</td></tr>'; print '<tr class="oddeven"><td>'.$langs->trans("MAIN_MAIL_SMTPS_PW").'</td><td>'.preg_replace('/./', '*', $conf->global->MAIN_MAIL_SMTPS_PW).'</td></tr>';
} }
// SMTPS oauth service // SMTPS oauth service
if (isset($conf->global->MAIL_SMTP_AUTH_TYPE) && $conf->global->MAIL_SMTP_AUTH_TYPE === "XOAUTH2") { if (isset($conf->global->MAIN_MAIL_SENDMODE) && in_array($conf->global->MAIN_MAIL_SENDMODE, array('smtps')) && isset($conf->global->MAIN_MAIL_SMTPS_AUTH_TYPE) && $conf->global->MAIN_MAIL_SMTPS_AUTH_TYPE === "XOAUTH2") {
$text = $oauthservices[$conf->global->MAIN_MAIL_SMTPS_OAUTH_SERVICE]; $text = $oauthservices[$conf->global->MAIN_MAIL_SMTPS_OAUTH_SERVICE];
if (empty($text)) { if (empty($text)) {
$text = $langs->trans("Undefined").img_warning(); $text = $langs->trans("Undefined").img_warning();

View File

@ -658,7 +658,7 @@ class CMailFile
} }
$keyforsmtpserver = 'MAIN_MAIL_SMTP_SERVER'; $keyforsmtpserver = 'MAIN_MAIL_SMTP_SERVER';
$keyforsmtpuseoauth = "MAIN_MAIL_SMTPS_USE_OAUTH"; $keyforsmtpauthtype = "MAIN_MAIL_SMTPS_AUTH_TYPE";
$keyforsmtpoauthservice = "MAIN_MAIL_SMTPS_OAUTH_SERVICE"; $keyforsmtpoauthservice = "MAIN_MAIL_SMTPS_OAUTH_SERVICE";
$keyforsmtpport = 'MAIN_MAIL_SMTP_PORT'; $keyforsmtpport = 'MAIN_MAIL_SMTP_PORT';
$keyforsmtpid = 'MAIN_MAIL_SMTPS_ID'; $keyforsmtpid = 'MAIN_MAIL_SMTPS_ID';
@ -835,7 +835,7 @@ class CMailFile
$this->smtps->setPW($loginpass); $this->smtps->setPW($loginpass);
} }
if (!empty($conf->global->$keyforsmtpuseoauth)) { if (!empty($conf->global->$keyforsmtpauthtype) && $conf->global->$keyforsmtpauthtype === "XOAUTH2") {
require_once DOL_DOCUMENT_ROOT.'/core/lib/oauth.lib.php'; // define $supportedoauth2array require_once DOL_DOCUMENT_ROOT.'/core/lib/oauth.lib.php'; // define $supportedoauth2array
$keyforsupportedoauth2array = $conf->global->$keyforsmtpoauthservice; $keyforsupportedoauth2array = $conf->global->$keyforsmtpoauthservice;
if (preg_match('/^.*-/', $keyforsupportedoauth2array)) { if (preg_match('/^.*-/', $keyforsupportedoauth2array)) {

View File

@ -570,13 +570,13 @@ class SMTPs
} }
// Default authentication method is LOGIN // Default authentication method is LOGIN
if (empty($conf->global->MAIL_SMTP_AUTH_TYPE)) { if (empty($conf->global->MAIN_MAIL_SMTPS_AUTH_TYPE)) {
$conf->global->MAIL_SMTP_AUTH_TYPE = 'LOGIN'; $conf->global->MAIN_MAIL_SMTPS_AUTH_TYPE = 'LOGIN';
} }
// Send Authentication to Server // Send Authentication to Server
// Check for errors along the way // Check for errors along the way
switch ($conf->global->MAIL_SMTP_AUTH_TYPE) { switch ($conf->global->MAIN_MAIL_SMTPS_AUTH_TYPE) {
case 'NONE': case 'NONE':
// Do not send the 'AUTH type' message. For test purpose, if you don't need authentication, it is better to not enter login/pass into setup. // Do not send the 'AUTH type' message. For test purpose, if you don't need authentication, it is better to not enter login/pass into setup.
$_retVal = true; $_retVal = true;

View File

@ -2287,7 +2287,9 @@ NoName=No name
ShowAdvancedOptions= Show advanced options ShowAdvancedOptions= Show advanced options
HideAdvancedoptions= Hide advanced options HideAdvancedoptions= Hide advanced options
CIDLookupURL=The module brings an URL that can be used by an external tool to get the name of a thirdparty or contact from its phone number. URL to use is: CIDLookupURL=The module brings an URL that can be used by an external tool to get the name of a thirdparty or contact from its phone number. URL to use is:
MAIN_MAIL_SMTPS_USE_OAUTH=Use OAUTH2 authentication OauthNotAvailableForAllAndHadToBeCreatedBefore=OAUTH2 authentication is not available for all hosts, and a token with the right permissions must have been created upstream with the OAUTH module
OauthNotAvailableForAll=OAUTH2 authentication is not available for all hosts
MAIN_MAIL_SMTPS_OAUTH_SERVICE=OAUTH2 authentication service MAIN_MAIL_SMTPS_OAUTH_SERVICE=OAUTH2 authentication service
DontForgetCreateTokenOauthMod=A token with the right permissions must have been created upstream with the OAUTH module DontForgetCreateTokenOauthMod=A token with the right permissions must have been created upstream with the OAUTH module
MAIN_MAIL_SMTPS_AUTH_TYPE=Authentification method
UsePassword=Use a password
UseOauth=Use a OAUTH token

View File

@ -2287,7 +2287,9 @@ ShowAdvancedOptions= Show advanced options
HideAdvancedoptions= Hide advanced options HideAdvancedoptions= Hide advanced options
CIDLookupURL=The module brings an URL that can be used by an external tool to get the name of a thirdparty or contact from its phone number. URL to use is: CIDLookupURL=The module brings an URL that can be used by an external tool to get the name of a thirdparty or contact from its phone number. URL to use is:
DoesNotWorkWithAllThemes=Ne fonctionne pas avec tous les thèmes DoesNotWorkWithAllThemes=Ne fonctionne pas avec tous les thèmes
MAIN_MAIL_SMTPS_USE_OAUTH=Utilisation de l'authentification OAUTH2 OauthNotAvailableForAllAndHadToBeCreatedBefore=L'authentification OAUTH2 n'est pas disponible pour tous les hôtes, de plus, un jeton avec les bonnes permissions doit avoir été créé en amont avec le module OAUTH
OauthNotAvailableForAll=L'authentification OAUTH2 n'est pas disponible pour tous les hôtes
MAIN_MAIL_SMTPS_OAUTH_SERVICE=Service d'authentification OAUTH2 MAIN_MAIL_SMTPS_OAUTH_SERVICE=Service d'authentification OAUTH2
DontForgetCreateTokenOauthMod=Un jeton avec les bonnes permissions doit avoir été créé en amont avec le module OAUTH DontForgetCreateTokenOauthMod=Un jeton avec les bonnes permissions doit avoir été créé en amont avec le module OAUTH
MAIN_MAIL_SMTPS_AUTH_TYPE=Méthode d'authentication
UsePassword=Utiliser un mot de pass
UseOauth=Utiliser un jeton d'authentification OAUTH