NobGit
public nobgit read

NobMail

Based on mailcow: dockerized

Languages

Repository composition by tracked source files.

PHP
PHP 49% JavaScript 35% HTML 9% CSS 4% Shell 2% Python 1% Lua 0% Perl 0% Ruby 0% SCSS 0%
Create file Wiki Documentation
Clone
https://nobgit.com/orgs/nobgit/nobmail.git
ssh://[email protected]:2222/orgs/nobgit/nobmail.git

Commit

add temporary email description

60ca2502
Filip Marek <[email protected]> 1 year, 11 months ago
data/web/inc/functions.mailbox.inc.php   |  7 +++++--
 data/web/inc/init_db.inc.php             |  1 +
 data/web/js/site/user.js                 |  5 +++++
 data/web/lang/lang.ca-es.json            |  3 ++-
 data/web/lang/lang.cs-cz.json            |  3 ++-
 data/web/lang/lang.da-dk.json            |  3 ++-
 data/web/lang/lang.de-de.json            |  3 ++-
 data/web/lang/lang.en-gb.json            |  3 ++-
 data/web/lang/lang.es-es.json            |  3 ++-
 data/web/lang/lang.fi-fi.json            |  3 ++-
 data/web/lang/lang.fr-fr.json            |  3 ++-
 data/web/lang/lang.hu-hu.json            |  3 ++-
 data/web/lang/lang.it-it.json            |  3 ++-
 data/web/lang/lang.ko-kr.json            |  3 ++-
 data/web/lang/lang.lv-lv.json            |  3 ++-
 data/web/lang/lang.nl-nl.json            |  3 ++-
 data/web/lang/lang.pl-pl.json            |  3 ++-
 data/web/lang/lang.pt-br.json            |  3 ++-
 data/web/lang/lang.pt-pt.json            |  3 ++-
 data/web/lang/lang.ro-ro.json            |  3 ++-
 data/web/lang/lang.ru-ru.json            |  3 ++-
 data/web/lang/lang.sk-sk.json            |  3 ++-
 data/web/lang/lang.sv-se.json            |  3 ++-
 data/web/lang/lang.tr-tr.json            |  3 ++-
 data/web/lang/lang.uk-ua.json            |  3 ++-
 data/web/lang/lang.zh-cn.json            |  3 ++-
 data/web/lang/lang.zh-tw.json            |  3 ++-
 data/web/templates/modals/user.twig      | 29 ++++++++++-------------------
 data/web/templates/user/SpamAliases.twig |  2 +-
 29 files changed, 70 insertions(+), 46 deletions(-)

Diff

diff --git a/data/web/inc/functions.mailbox.inc.php b/data/web/inc/functions.mailbox.inc.php
index 73c11541..069b40c2 100644
--- a/data/web/inc/functions.mailbox.inc.php
+++ b/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`
diff --git a/data/web/inc/init_db.inc.php b/data/web/inc/init_db.inc.php
index 3cfeb37d..67a6dff8 100644
--- a/data/web/inc/init_db.inc.php
+++ b/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)"
diff --git a/data/web/js/site/user.js b/data/web/js/site/user.js
index 59d65d8c..c1a68080 100644
--- a/data/web/js/site/user.js
+++ b/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',
diff --git a/data/web/lang/lang.ca-es.json b/data/web/lang/lang.ca-es.json
index 877b46cd..43079339 100644
--- a/data/web/lang/lang.ca-es.json
+++ b/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"
     }
-}
+}
\ No newline at end of file
diff --git a/data/web/lang/lang.cs-cz.json b/data/web/lang/lang.cs-cz.json
index e72fb216..6efdd31e 100644
--- a/data/web/lang/lang.cs-cz.json
+++ b/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"
     }
-}
+}
\ No newline at end of file
diff --git a/data/web/lang/lang.da-dk.json b/data/web/lang/lang.da-dk.json
index 95db916e..f0f3bb92 100644
--- a/data/web/lang/lang.da-dk.json
+++ b/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"
         }
     }
-}
+}
\ No newline at end of file
diff --git a/data/web/lang/lang.de-de.json b/data/web/lang/lang.de-de.json
index 807393d7..d8eb5de7 100644
--- a/data/web/lang/lang.de-de.json
+++ b/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"
     }
-}
+}
\ No newline at end of file
diff --git a/data/web/lang/lang.en-gb.json b/data/web/lang/lang.en-gb.json
index 6e898099..28d9ca14 100644
--- a/data/web/lang/lang.en-gb.json
+++ b/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"
     }
-}
+}
\ No newline at end of file
diff --git a/data/web/lang/lang.es-es.json b/data/web/lang/lang.es-es.json
index 8a8c0527..6cc02f5b 100644
--- a/data/web/lang/lang.es-es.json
+++ b/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"
     }
-}
+}
\ No newline at end of file
diff --git a/data/web/lang/lang.fi-fi.json b/data/web/lang/lang.fi-fi.json
index 9b3cc848..dfa8e816 100644
--- a/data/web/lang/lang.fi-fi.json
+++ b/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"
         }
     }
-}
+}
\ No newline at end of file
diff --git a/data/web/lang/lang.fr-fr.json b/data/web/lang/lang.fr-fr.json
index 386a4dfc..56c88814 100644
--- a/data/web/lang/lang.fr-fr.json
+++ b/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é"
     }
-}
+}
\ No newline at end of file
diff --git a/data/web/lang/lang.hu-hu.json b/data/web/lang/lang.hu-hu.json
index e9762ff5..5737794f 100644
--- a/data/web/lang/lang.hu-hu.json
+++ b/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"
     }
-}
+}
\ No newline at end of file
diff --git a/data/web/lang/lang.it-it.json b/data/web/lang/lang.it-it.json
index f73f938b..d0d28fce 100644
--- a/data/web/lang/lang.it-it.json
+++ b/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": "."
     }
-}
+}
\ No newline at end of file
diff --git a/data/web/lang/lang.ko-kr.json b/data/web/lang/lang.ko-kr.json
index 3f3cb153..14c7966d 100644
--- a/data/web/lang/lang.ko-kr.json
+++ b/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"
     }
-}
+}
\ No newline at end of file
diff --git a/data/web/lang/lang.lv-lv.json b/data/web/lang/lang.lv-lv.json
index 98cb04ae..856566ae 100644
--- a/data/web/lang/lang.lv-lv.json
+++ b/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"
     }
-}
+}
\ No newline at end of file
diff --git a/data/web/lang/lang.nl-nl.json b/data/web/lang/lang.nl-nl.json
index fdfc91c7..49113cd3 100644
--- a/data/web/lang/lang.nl-nl.json
+++ b/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"
     }
-}
+}
\ No newline at end of file
diff --git a/data/web/lang/lang.pl-pl.json b/data/web/lang/lang.pl-pl.json
index aa185d32..cba7372a 100644
--- a/data/web/lang/lang.pl-pl.json
+++ b/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"
     }
-}
+}
\ No newline at end of file
diff --git a/data/web/lang/lang.pt-br.json b/data/web/lang/lang.pt-br.json
index 2fbd4353..7afea258 100644
--- a/data/web/lang/lang.pt-br.json
+++ b/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"
     }
-}
+}
\ No newline at end of file
diff --git a/data/web/lang/lang.pt-pt.json b/data/web/lang/lang.pt-pt.json
index 624acd6d..2279c2ce 100644
--- a/data/web/lang/lang.pt-pt.json
+++ b/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"
     }
-}
+}
\ No newline at end of file
diff --git a/data/web/lang/lang.ro-ro.json b/data/web/lang/lang.ro-ro.json
index 90c96c21..04fb31fe 100644
--- a/data/web/lang/lang.ro-ro.json
+++ b/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": ","
     }
-}
+}
\ No newline at end of file
diff --git a/data/web/lang/lang.ru-ru.json b/data/web/lang/lang.ru-ru.json
index 5d1ef9af..b021fd69 100644
--- a/data/web/lang/lang.ru-ru.json
+++ b/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"
     }
-}
+}
\ No newline at end of file
diff --git a/data/web/lang/lang.sk-sk.json b/data/web/lang/lang.sk-sk.json
index 466afdb8..0abe95d4 100644
--- a/data/web/lang/lang.sk-sk.json
+++ b/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"
     }
-}
+}
\ No newline at end of file
diff --git a/data/web/lang/lang.sv-se.json b/data/web/lang/lang.sv-se.json
index bbf0d958..31cc1487 100644
--- a/data/web/lang/lang.sv-se.json
+++ b/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"
     }
-}
+}
\ No newline at end of file
diff --git a/data/web/lang/lang.tr-tr.json b/data/web/lang/lang.tr-tr.json
index 7049046c..4d18a73b 100644
--- a/data/web/lang/lang.tr-tr.json
+++ b/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"
     }
-}
+}
\ No newline at end of file
diff --git a/data/web/lang/lang.uk-ua.json b/data/web/lang/lang.uk-ua.json
index f2884cd4..d003b9fd 100644
--- a/data/web/lang/lang.uk-ua.json
+++ b/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": "Згорнути все"
     }
-}
+}
\ No newline at end of file
diff --git a/data/web/lang/lang.zh-cn.json b/data/web/lang/lang.zh-cn.json
index ca6c9aaf..5cdaef09 100644
--- a/data/web/lang/lang.zh-cn.json
+++ b/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": "未找到符合条件的记录"
     }
-}
+}
\ No newline at end of file
diff --git a/data/web/lang/lang.zh-tw.json b/data/web/lang/lang.zh-tw.json
index 2017d1dd..e3cc3aed 100644
--- a/data/web/lang/lang.zh-tw.json
+++ b/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": "取消保留"
     }
-}
+}
\ No newline at end of file
diff --git a/data/web/templates/modals/user.twig b/data/web/templates/modals/user.twig
index c9cd4b97..b8e3bf3a 100644
--- a/data/web/templates/modals/user.twig
+++ b/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>
diff --git a/data/web/templates/user/SpamAliases.twig b/data/web/templates/user/SpamAliases.twig
index 40b3ec77..83b056c3 100644
--- a/data/web/templates/user/SpamAliases.twig
+++ b/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>