瀏覽代碼

add temporary email description

Filip Marek 1 年之前
父節點
當前提交
60ca25026d

+ 5 - 2
data/web/inc/functions.mailbox.inc.php

@@ -48,6 +48,7 @@ function mailbox($_action, $_type, $_data = null, $_extra = null) {
             $_data["validity"] = 8760;
           }
           $domain = $_data['domain'];
+          $description = $_data['description'];
           $valid_domains[] = mailbox('get', 'mailbox_details', $username)['domain'];
           $valid_alias_domains = user_get_alias_details($username)['alias_domains'];
           if (!empty($valid_alias_domains)) {
@@ -62,10 +63,11 @@ function mailbox($_action, $_type, $_data = null, $_extra = null) {
             return false;
           }
           $validity = strtotime("+" . $_data["validity"] . " hour");
-          $stmt = $pdo->prepare("INSERT INTO `spamalias` (`address`, `goto`, `validity`) VALUES
-            (:address, :goto, :validity)");
+          $stmt = $pdo->prepare("INSERT INTO `spamalias` (`address`, `description`, `goto`, `validity`) VALUES
+            (:address, :description, :goto, :validity)");
           $stmt->execute(array(
             ':address' => readable_random_string(rand(rand(3, 9), rand(3, 9))) . '.' . readable_random_string(rand(rand(3, 9), rand(3, 9))) . '@' . $domain,
+            ':description' => $description,
             ':goto' => $username,
             ':validity' => $validity
           ));
@@ -4201,6 +4203,7 @@ function mailbox($_action, $_type, $_data = null, $_extra = null) {
           }
           $stmt = $pdo->prepare("SELECT `address`,
             `goto`,
+            `description`,
             `validity`,
             `created`,
             `modified`

+ 1 - 0
data/web/inc/init_db.inc.php

@@ -527,6 +527,7 @@ function init_db_schema() {
         "cols" => array(
           "address" => "VARCHAR(255) NOT NULL",
           "goto" => "TEXT NOT NULL",
+          "description" => "TEXT NOT NULL",
           "created" => "DATETIME(0) NOT NULL DEFAULT NOW(0)",
           "modified" => "DATETIME ON UPDATE CURRENT_TIMESTAMP",
           "validity" => "INT(11)"

+ 5 - 0
data/web/js/site/user.js

@@ -202,6 +202,11 @@ jQuery(function($){
           data: 'address',
           defaultContent: ''
         },
+        {
+          title: lang.description,
+          data: 'description',
+          defaultContent: ''
+        },
         {
           title: lang.alias_valid_until,
           data: 'validity',

+ 2 - 1
data/web/lang/lang.ca-es.json

@@ -493,6 +493,7 @@
         "client_configuration": "Guies de configuració per als clients de correu més habituals",
         "create_syncjob": "Afegir treball de sincronitzaió",
         "day": "Dia",
+        "description": "Descripció",
         "direct_aliases": "Adreces àlies directes",
         "direct_aliases_desc": "Els àlies directes sí que es veuen afectat per la configuració de l'usuari",
         "eas_reset": "Fer un reset de la cache d'ActiveSync del dispositiu",
@@ -558,4 +559,4 @@
         "week": "Setmana",
         "weeks": "Setmanes"
     }
-}
+}

+ 2 - 1
data/web/lang/lang.cs-cz.json

@@ -1164,6 +1164,7 @@
         "created_on": "Vytvoreno",
         "daily": "Každý den",
         "day": "den",
+        "description": "Popis",
         "delete_ays": "Potvrďte odstranění.",
         "direct_aliases": "Přímé aliasy",
         "direct_aliases_desc": "Na přímé aliasy se uplatňuje filtr spamu a nastavení pravidel TLS",
@@ -1309,4 +1310,4 @@
         "session_token": "Token formuláře není platný: Token mismatch",
         "session_ua": "Token formuláře není platný: User-Agent validation error"
     }
-}
+}

+ 2 - 1
data/web/lang/lang.da-dk.json

@@ -971,6 +971,7 @@
         "create_syncjob": "Opret nyt sync job",
         "daily": "Dagligt",
         "day": "dag",
+        "description": "Beskrivelse",
         "delete_ays": "Bekræft venligst ønsket om sletning.",
         "direct_aliases": "Direkte alias addresser",
         "direct_aliases_desc": "Direkte alias-adresser påvirkes af spamfilter og TLS-politiske indstillinger.",
@@ -1091,4 +1092,4 @@
             "first": "Først"
         }
     }
-}
+}

+ 2 - 1
data/web/lang/lang.de-de.json

@@ -1185,6 +1185,7 @@
         "created_on": "Erstellt am",
         "daily": "Täglich",
         "day": "Tag",
+        "description": "Beschreibung",
         "delete_ays": "Soll der Löschvorgang wirklich ausgeführt werden?",
         "direct_aliases": "Direkte Alias-Adressen",
         "direct_aliases_desc": "Nur direkte Alias-Adressen werden für benutzerdefinierte Einstellungen berücksichtigt.",
@@ -1338,4 +1339,4 @@
         "hour": "Nachrichten / Stunde",
         "day": "Nachrichten / Tag"
     }
-}
+}

+ 2 - 1
data/web/lang/lang.en-gb.json

@@ -1192,6 +1192,7 @@
         "created_on": "Created on",
         "daily": "Daily",
         "day": "day",
+        "description": "Description",
         "delete_ays": "Please confirm the deletion process.",
         "direct_aliases": "Direct alias addresses",
         "direct_aliases_desc": "Direct alias addresses are affected by spam filter and TLS policy settings.",
@@ -1338,4 +1339,4 @@
         "session_token": "Form token invalid: Token mismatch",
         "session_ua": "Form token invalid: User-Agent validation error"
     }
-}
+}

+ 2 - 1
data/web/lang/lang.es-es.json

@@ -709,6 +709,7 @@
         "create_syncjob": "Crear nuevo trabajo de sincronización",
         "daily": "Cada día",
         "day": "Día",
+        "description": "Descripción",
         "direct_aliases": "Alias directos",
         "direct_aliases_desc": "Los alias directos se ven afectadas por el filtro de correo no deseado y la configuración de la política TLS del usuario.",
         "eas_reset": "Resetear el caché ActiveSync",
@@ -778,4 +779,4 @@
         "fuzzy_learn_error": "Error aprendiendo hash: %s",
         "ip_invalid": "IP inválida omitida: %s"
     }
-}
+}

+ 2 - 1
data/web/lang/lang.fi-fi.json

@@ -810,6 +810,7 @@
         "create_syncjob": "Luo uusi synkronointi työ",
         "daily": "Päivittäin",
         "day": "Päivä",
+        "description": "Kuvaus",
         "direct_aliases": "Suorat alias osoitteet",
         "direct_aliases_desc": "Roska posti suodatus-ja TLS-käytäntö asetukset vaikuttavat suora aliaksen osoitteisiin.",
         "eas_reset": "Tyhjennä ActiveSync-laitteen väli muisti",
@@ -908,4 +909,4 @@
             "last": "Edellinen"
         }
     }
-}
+}

+ 2 - 1
data/web/lang/lang.fr-fr.json

@@ -1101,6 +1101,7 @@
         "create_syncjob": "Créer une tâche de synchronisation",
         "daily": "Quotidien",
         "day": "jour",
+        "description": "Description",
         "delete_ays": "Veuillez confirmer le processus de suppression.",
         "direct_aliases": "Adresses alias directes",
         "direct_aliases_desc": "Les adresses d’alias directes sont affectées par le filtre anti-spam et les paramètres de politique TLS.",
@@ -1267,4 +1268,4 @@
     "ratelimit": {
         "disabled": "Désactivé"
     }
-}
+}

+ 2 - 1
data/web/lang/lang.hu-hu.json

@@ -406,6 +406,7 @@
         "create_syncjob": "Új szinkronizációs művelet létrehozása",
         "daily": "Napi",
         "day": "nap",
+        "description": "Leírás",
         "delete_ays": "Erősítse meg a törlést.",
         "direct_aliases": "Közvetlen alias címek",
         "eas_reset": "ActiveSync eszköz gyorsítótár ürítése",
@@ -591,4 +592,4 @@
         "app_name": "Alkalmazás neve",
         "app_passwd_protocols": "Engedélyezett protokollok az alkalmazás jelszavához"
     }
-}
+}

+ 2 - 1
data/web/lang/lang.it-it.json

@@ -1126,6 +1126,7 @@
         "created_on": "Creato il",
         "daily": "Giornaliero",
         "day": "giorno",
+        "description": "Descrizione",
         "delete_ays": "Please confirm the deletion process.",
         "direct_aliases": "Direct alias addresses",
         "direct_aliases_desc": "Direct alias addresses are affected by spam filter and TLS policy settings.",
@@ -1308,4 +1309,4 @@
         },
         "decimal": "."
     }
-}
+}

+ 2 - 1
data/web/lang/lang.ko-kr.json

@@ -911,6 +911,7 @@
         "create_syncjob": "새 동기화 작업 생성",
         "daily": "매일",
         "day": "일",
+        "description": "Description",
         "delete_ays": "진짜 삭제하겠습니까?",
         "direct_aliases": "Direct alias addresses",
         "direct_aliases_desc": "Direct alias addresses are affected by spam filter and TLS policy settings.",
@@ -1020,4 +1021,4 @@
         "session_token": "Form token invalid: Token mismatch",
         "session_ua": "Form token invalid: User-Agent validation error"
     }
-}
+}

+ 2 - 1
data/web/lang/lang.lv-lv.json

@@ -551,6 +551,7 @@
         "client_configuration": "Parādīt konfigurācijas norādes e-pasta klientiem un tālruņiem",
         "create_syncjob": "Izveidot jaunu sinhronizācijas darbu",
         "day": "Dienas",
+        "description": "Apraksts",
         "direct_aliases": "Tiešas aizstājadreses",
         "direct_aliases_desc": "Tiešās aizstājadreses ir surogātpasta atlasīšanas un TLS nosacījumu iestatījumu ietekmētas.",
         "eas_reset": "Atiestatīt ActiveSync ierīces kešatmiņu",
@@ -659,4 +660,4 @@
     "fido2": {
         "fido2_auth": "Pieteikties ar FIDO2"
     }
-}
+}

+ 2 - 1
data/web/lang/lang.nl-nl.json

@@ -1028,6 +1028,7 @@
         "create_syncjob": "Voeg sync job toe",
         "daily": "Dagelijks",
         "day": "dag",
+        "description": "Beschrijving",
         "delete_ays": "Bevestig de verwijdering.",
         "direct_aliases": "Directe aliasadressen",
         "direct_aliases_desc": "Directe aliasadressen worden beïnvloed door spamfilters en het versleutelingsbeleid.",
@@ -1167,4 +1168,4 @@
         "search": "Zoeken:",
         "zeroRecords": "Geen overeenkomsten gevonden"
     }
-}
+}

+ 2 - 1
data/web/lang/lang.pl-pl.json

@@ -363,6 +363,7 @@
         "create_syncjob": "Utwórz nowe polecenie synchronizacji",
         "daily": "Co dzień",
         "day": "Dzień",
+        "description": "Opis",
         "direct_aliases": "Aliasy bezpośrednie",
         "direct_aliases_desc": "Na aliasy bezpośrednie wpływają filtry spamu i ustawienia TLS.",
         "eas_reset": "Zresetuj pamięć podręczną urządzenia ActiveSync",
@@ -431,4 +432,4 @@
         "weekly": "Co tydzień",
         "weeks": "Tygodnie"
     }
-}
+}

+ 2 - 1
data/web/lang/lang.pt-br.json

@@ -1186,6 +1186,7 @@
         "created_on": "Criado em",
         "daily": "Diariamente",
         "day": "dia",
+        "description": "Descrição",
         "delete_ays": "Confirme o processo de exclusão.",
         "direct_aliases": "Endereços de alias diretos",
         "direct_aliases_desc": "Os endereços de alias diretos são afetados pelo filtro de spam e pelas configurações da política TLS.",
@@ -1332,4 +1333,4 @@
         "session_token": "Token de formulário inválido: incompatibilidade de token",
         "session_ua": "Token de formulário inválido: erro de validação do agente de usuário"
     }
-}
+}

+ 2 - 1
data/web/lang/lang.pt-pt.json

@@ -236,6 +236,7 @@
         "aliases_send_as_all": "Não verificar remetente para os domínios",
         "change_password": "Alterar senha",
         "day": "Dia",
+        "description": "Descrição",
         "edit": "Editar",
         "hour": "Hora",
         "hours": "Horas",
@@ -272,4 +273,4 @@
         "week": "Semana",
         "weeks": "Semanas"
     }
-}
+}

+ 2 - 1
data/web/lang/lang.ro-ro.json

@@ -1064,6 +1064,7 @@
         "created_on": "Creat în",
         "daily": "Zilnic",
         "day": "zi",
+        "description": "Descriere",
         "delete_ays": "Vă rugăm să confirmați stergerea.",
         "direct_aliases": "Adrese alias directe",
         "direct_aliases_desc": "Adresele alias directe sunt afectate de setările filtrului de spam și ale politicii TLS.",
@@ -1210,4 +1211,4 @@
         "expand_all": "Expandează tot",
         "decimal": ","
     }
-}
+}

+ 2 - 1
data/web/lang/lang.ru-ru.json

@@ -1192,6 +1192,7 @@
         "created_on": "Дата создания",
         "daily": "Раз в день",
         "day": "день",
+        "description": "Описание",
         "delete_ays": "Пожалуйста, подтвердите удаление",
         "direct_aliases": "Личные псевдонимы",
         "direct_aliases_desc": "На личные псевдонимы распространяются фильтры нежелательной почты и параметры политики TLS.",
@@ -1338,4 +1339,4 @@
         "session_token": "Неверный токен формы: несоответствие токена",
         "session_ua": "Неверный токен формы: ошибка проверки User-Agent"
     }
-}
+}

+ 2 - 1
data/web/lang/lang.sk-sk.json

@@ -1116,6 +1116,7 @@
         "created_on": "Vytvorené",
         "daily": "Denne",
         "day": "deň",
+        "description": "Popis",
         "delete_ays": "Potvrďte zmazanie.",
         "direct_aliases": "Priame alias adresy",
         "direct_aliases_desc": "Priame aliasy sú ovplyvnené spam filtrom a nastavením TLS pravidiel.",
@@ -1258,4 +1259,4 @@
         "session_token": "Formulárový token neplatný: Tokenová nezhoda",
         "session_ua": "Formulárový token neplatný: User-Agent validation error"
     }
-}
+}

+ 2 - 1
data/web/lang/lang.sv-se.json

@@ -993,6 +993,7 @@
         "created_on": "Skapad vid",
         "daily": "Dagligen",
         "day": "dag",
+        "description": "Beskrivning",
         "delete_ays": "Är du säker att du vill ta bort det här objektet?",
         "direct_aliases": "Direkta aliasadresser",
         "direct_aliases_desc": "Endast direkta aliasadresser påverkas av spamfilter och TLS-policyföreskrifter.",
@@ -1112,4 +1113,4 @@
         "session_token": "Formulär-nyckeln är ogiltig: Nyckeln matchar inte",
         "session_ua": "Formulär-nyckeln är ogiltig: User-Agenten kunde inte valideras"
     }
-}
+}

+ 2 - 1
data/web/lang/lang.tr-tr.json

@@ -1207,6 +1207,7 @@
         "created_on": "Oluşturulma tarihi",
         "daily": "Günlük",
         "day": "Gün",
+        "description": "Açıklama",
         "delete_ays": "Lütfen silme işlemini onaylayın.",
         "direct_aliases": "Doğrudan takma ad adresleri",
         "eas_reset_help": "Birçok durumda cihaz önbelleğini sıfırlama, bozuk bir ActiveSync profilini kurtarmaya yardımcı olur.<br><b>Dikkat:</b> Tüm öğeler yeniden indirilecek!",
@@ -1313,4 +1314,4 @@
         "q_reject": "Reddedildi",
         "week": "Hafta"
     }
-}
+}

+ 2 - 1
data/web/lang/lang.uk-ua.json

@@ -1135,6 +1135,7 @@
         "created_on": "Дата створення",
         "daily": "Раз на день",
         "day": "день",
+        "description": "Опис",
         "delete_ays": "Будь ласка, підтвердіть видалення.",
         "eas_reset": "Скинути кеш ActiveSync пристроїв",
         "eas_reset_help": "У багатьох випадках скидання кешу пристроїв допомагає відновити пошкоджений профіль ActiveSync.<br><b>Увага:</b> всі листи, календарі та контакти будуть завантажені заново на всі ваші пристрої!",
@@ -1311,4 +1312,4 @@
         },
         "collapse_all": "Згорнути все"
     }
-}
+}

+ 2 - 1
data/web/lang/lang.zh-cn.json

@@ -1164,6 +1164,7 @@
         "created_on": "添加于",
         "daily": "每日",
         "day": "日",
+        "description": "描述",
         "delete_ays": "请确认删除。",
         "direct_aliases": "直接别名",
         "direct_aliases_desc": "垃圾邮件过滤和 TLS 策略会作用于直接别名。",
@@ -1336,4 +1337,4 @@
         "loadingRecords": "加载中...",
         "zeroRecords": "未找到符合条件的记录"
     }
-}
+}

+ 2 - 1
data/web/lang/lang.zh-tw.json

@@ -1140,6 +1140,7 @@
         "created_on": "建立於",
         "daily": "每日",
         "day": "日",
+        "description": "描述",
         "delete_ays": "請確認刪除。",
         "direct_aliases": "直接別名",
         "direct_aliases_desc": "直接別名會受到垃圾郵件過濾器和 TLS 規則限制。",
@@ -1328,4 +1329,4 @@
         "hold_mail": "保留",
         "unhold_mail": "取消保留"
     }
-}
+}

+ 10 - 19
data/web/templates/modals/user.twig

@@ -340,31 +340,22 @@
 <div class="modal fade" id="tempAliasModal" tabindex="-1" role="dialog" aria-labelledby="tempAliasModalLabel">
   <div class="modal-dialog modal-lg" role="document">
     <div class="modal-content">
+      <div class="modal-header">
+        <h3 class="modal-title">{{ lang.user.alias_create_random }}</h3>
+        <button type="button" class="btn-close" data-bs-dismiss="modal"></button>
+      </div>
       <div class="modal-body">
-        <form class="form-horizontal" data-cached-form="false" data-id="pwchange" role="form" method="post" autocomplete="off">
-          <div class="row">
-            <label class="control-label col-sm-3" for="user_new_pass">{{ lang.user.new_password }} (<a href="#" class="generate_password">{{ lang.user.generate }}</a>)</label>
-            <div class="col-sm-5">
-              <input type="password" data-pwgen-field="true" data-hibp="true" class="form-control" name="user_new_pass" autocomplete="new-password" required>
-            </div>
-          </div>
-          <div class="row">
-            <label class="control-label col-sm-3" for="user_new_pass2">{{ lang.user.new_password_repeat }}</label>
-            <div class="col-sm-5">
-              <input type="password" data-pwgen-field="true" class="form-control" name="user_new_pass2" autocomplete="new-password" required>
-              <p class="text-muted">{{ lang.user.new_password_description }}</p>
-            </div>
-          </div>
-          <hr>
-          <div class="row">
-            <label class="control-label col-sm-3" for="user_old_pass">{{ lang.user.password_now }}</label>
+        <form class="form-horizontal" data-cached-form="false" data-id="tempaliascreate" role="form" method="post" autocomplete="off">
+          <div class="row mb-4">
+            <label class="control-label col-sm-3" for="description">{{ lang.user.description }}</label>
             <div class="col-sm-5">
-              <input type="password" class="form-control" name="user_old_pass" autocomplete="off" required>
+              <input type="hidden" id="temp_alias_domain" name="domain">
+              <input type="description" id="temp_alias_description" class="form-control" name="description" autocomplete="off">
             </div>
           </div>
           <div class="row">
             <div class="offset-sm-3 col-sm-9">
-              <button class="btn btn-xs-lg d-block d-sm-inline btn-success" data-action="edit_selected" data-id="pwchange" data-item="null" data-api-url='edit/self' data-api-attr='{}' href="#">{{ lang.user.change_password }}</button>
+              <button class="btn btn-xs-lg d-block d-sm-inline btn-success" data-action="add_item" data-id="tempaliascreate" data-item="null" data-api-url='add/time_limited_alias' data-api-attr='' href="#">{{ lang.admin.add }}</button>
             </div>
           </div>
         </form>

+ 1 - 1
data/web/templates/user/SpamAliases.twig

@@ -33,7 +33,7 @@
             <ul class="dropdown-menu">
               {% for domain in user_domains %}
                 <li>
-                  <a class="dropdown-item" data-action="add_item" data-api-url='add/time_limited_alias' data-api-attr='{"domain":"{{ domain }}"}' href="#">
+                  <a class="dropdown-item" data-bs-toggle="modal" data-bs-target="#tempAliasModal" onclick='$("#tempAliasModal #temp_alias_domain").val("{{ domain }}")' href="#">
                     @ {{ domain }}
                   </a>
                 </li>