mirror of
https://github.com/anonaddy/anonaddy.git
synced 2025-12-28 07:55:07 +00:00
Added info tooltips
This commit is contained in:
parent
bc626e80bf
commit
0e75d42e3d
@ -144,33 +144,37 @@ class ForwardEmail extends Mailable implements ShouldBeEncrypted, ShouldQueue
|
||||
}
|
||||
|
||||
// Create and swap with alias reply-to addresses to allow easy reply-all
|
||||
if (count($this->tos)) {
|
||||
$this->tos = collect($this->tos)
|
||||
->map(function ($to) {
|
||||
// Leave alias email To as it is
|
||||
if (stripEmailExtension($to['address']) === $this->alias->email) {
|
||||
return [
|
||||
'display' => $to['display'] != $to['address'] ? $to['display'] : null,
|
||||
'address' => $this->alias->email,
|
||||
];
|
||||
}
|
||||
|
||||
$this->tos = collect($this->tos)
|
||||
->when(! count($this->tos), function ($tos) {
|
||||
return $tos->push([
|
||||
'display' => null,
|
||||
'address' => $this->alias->email,
|
||||
]);
|
||||
})
|
||||
->map(function ($to) {
|
||||
// Leave alias email To as it is
|
||||
if (stripEmailExtension($to['address']) === $this->alias->email) {
|
||||
return [
|
||||
'display' => $to['display'] != $to['address'] ? $to['display'] : null,
|
||||
'address' => $this->alias->local_part.'+'.Str::replaceLast('@', '=', $to['address']).'@'.$this->alias->domain,
|
||||
'address' => $this->alias->email,
|
||||
];
|
||||
})
|
||||
->filter(fn ($to) => filter_var($to['address'], FILTER_VALIDATE_EMAIL))
|
||||
->map(function ($to) {
|
||||
// Only add in display if it exists
|
||||
if ($to['display']) {
|
||||
return $to['display'].' <'.$to['address'].'>';
|
||||
}
|
||||
}
|
||||
|
||||
return '<'.$to['address'].'>';
|
||||
})
|
||||
->toArray();
|
||||
}
|
||||
return [
|
||||
'display' => $to['display'] != $to['address'] ? $to['display'] : null,
|
||||
'address' => $this->alias->local_part.'+'.Str::replaceLast('@', '=', $to['address']).'@'.$this->alias->domain,
|
||||
];
|
||||
})
|
||||
->filter(fn ($to) => filter_var($to['address'], FILTER_VALIDATE_EMAIL))
|
||||
->map(function ($to) {
|
||||
// Only add in display if it exists
|
||||
if ($to['display']) {
|
||||
return $to['display'].' <'.$to['address'].'>';
|
||||
}
|
||||
|
||||
return '<'.$to['address'].'>';
|
||||
})
|
||||
->toArray();
|
||||
|
||||
$this->displayFrom = $emailData->display_from;
|
||||
$this->replyToAddress = $emailData->reply_to_address ?? $this->sender;
|
||||
|
||||
@ -85,8 +85,17 @@ class EmailData
|
||||
}
|
||||
}
|
||||
|
||||
$this->ccs = collect($parser->getAddresses('cc'))->all();
|
||||
$this->tos = collect($parser->getAddresses('to'))->all();
|
||||
try {
|
||||
$this->ccs = collect($parser->getAddresses('cc'))->all();
|
||||
} catch (\Throwable $e) {
|
||||
$this->ccs = [];
|
||||
}
|
||||
|
||||
try {
|
||||
$this->tos = collect($parser->getAddresses('to'))->all();
|
||||
} catch (\Throwable $e) {
|
||||
$this->tos = [];
|
||||
}
|
||||
|
||||
if ($originalCc = $parser->getHeader('cc')) {
|
||||
$this->originalCc = $originalCc;
|
||||
|
||||
@ -19,7 +19,7 @@ class ValidDomain implements ValidationRule
|
||||
*/
|
||||
public function validate(string $attribute, mixed $value, Closure $fail): void
|
||||
{
|
||||
if (! preg_match('/(?=^.{4,253}$)(^((?!-)[a-zA-Z0-9-]{0,62}[a-zA-Z0-9]\.)+[a-zA-Z]{2,63}$)/', $value)) {
|
||||
if (! preg_match('/(?=^.{4,253}$)(^((?!-)[a-zA-Z0-9-]{0,62}[a-zA-Z0-9]\.)+[a-zA-Z0-9-]{2,63}$)/', $value)) {
|
||||
$fail('Invalid domain name.');
|
||||
}
|
||||
}
|
||||
|
||||
715
composer.lock
generated
715
composer.lock
generated
File diff suppressed because it is too large
Load Diff
178
package-lock.json
generated
178
package-lock.json
generated
@ -668,20 +668,20 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@tanstack/virtual-core": {
|
||||
"version": "3.7.0",
|
||||
"resolved": "https://registry.npmjs.org/@tanstack/virtual-core/-/virtual-core-3.7.0.tgz",
|
||||
"integrity": "sha512-p0CWuqn+n8iZmsL7/l0Xg7kbyIKnHNqkEJkMDOkg4x3Ni3LohszmnJY8FPhTgG7Ad9ZFGcdKmn1R1mKUGEh9Xg==",
|
||||
"version": "3.8.1",
|
||||
"resolved": "https://registry.npmjs.org/@tanstack/virtual-core/-/virtual-core-3.8.1.tgz",
|
||||
"integrity": "sha512-uNtAwenT276M9QYCjTBoHZ8X3MUeCRoGK59zPi92hMIxdfS9AyHjkDWJ94WroDxnv48UE+hIeo21BU84jKc8aQ==",
|
||||
"funding": {
|
||||
"type": "github",
|
||||
"url": "https://github.com/sponsors/tannerlinsley"
|
||||
}
|
||||
},
|
||||
"node_modules/@tanstack/vue-virtual": {
|
||||
"version": "3.7.0",
|
||||
"resolved": "https://registry.npmjs.org/@tanstack/vue-virtual/-/vue-virtual-3.7.0.tgz",
|
||||
"integrity": "sha512-RkSrajvJpV1RdJKgZnPgzyzVVx76QjPAu+spgdAms+SZRcSbYMUKlcjusnHjhszck5ngHXSXbSBp45ycF1nlDw==",
|
||||
"version": "3.8.1",
|
||||
"resolved": "https://registry.npmjs.org/@tanstack/vue-virtual/-/vue-virtual-3.8.1.tgz",
|
||||
"integrity": "sha512-uhty1LzUbbcVc5zdMMSUjUt/ECTlMCtK49Ww7dH2m4lNNLGYwkj5SbfrAD8uCZxV1VeV7DRMXqhwUTELyR5rrA==",
|
||||
"dependencies": {
|
||||
"@tanstack/virtual-core": "3.7.0"
|
||||
"@tanstack/virtual-core": "3.8.1"
|
||||
},
|
||||
"funding": {
|
||||
"type": "github",
|
||||
@ -745,36 +745,36 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@vue/compiler-core": {
|
||||
"version": "3.4.30",
|
||||
"resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.4.30.tgz",
|
||||
"integrity": "sha512-ZL8y4Xxdh8O6PSwfdZ1IpQ24PjTAieOz3jXb/MDTfDtANcKBMxg1KLm6OX2jofsaQGYfIVzd3BAG22i56/cF1w==",
|
||||
"version": "3.4.31",
|
||||
"resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.4.31.tgz",
|
||||
"integrity": "sha512-skOiodXWTV3DxfDhB4rOf3OGalpITLlgCeOwb+Y9GJpfQ8ErigdBUHomBzvG78JoVE8MJoQsb+qhZiHfKeNeEg==",
|
||||
"dependencies": {
|
||||
"@babel/parser": "^7.24.7",
|
||||
"@vue/shared": "3.4.30",
|
||||
"@vue/shared": "3.4.31",
|
||||
"entities": "^4.5.0",
|
||||
"estree-walker": "^2.0.2",
|
||||
"source-map-js": "^1.2.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@vue/compiler-dom": {
|
||||
"version": "3.4.30",
|
||||
"resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.4.30.tgz",
|
||||
"integrity": "sha512-+16Sd8lYr5j/owCbr9dowcNfrHd+pz+w2/b5Lt26Oz/kB90C9yNbxQ3bYOvt7rI2bxk0nqda39hVcwDFw85c2Q==",
|
||||
"version": "3.4.31",
|
||||
"resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.4.31.tgz",
|
||||
"integrity": "sha512-wK424WMXsG1IGMyDGyLqB+TbmEBFM78hIsOJ9QwUVLGrcSk0ak6zYty7Pj8ftm7nEtdU/DGQxAXp0/lM/2cEpQ==",
|
||||
"dependencies": {
|
||||
"@vue/compiler-core": "3.4.30",
|
||||
"@vue/shared": "3.4.30"
|
||||
"@vue/compiler-core": "3.4.31",
|
||||
"@vue/shared": "3.4.31"
|
||||
}
|
||||
},
|
||||
"node_modules/@vue/compiler-sfc": {
|
||||
"version": "3.4.30",
|
||||
"resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.4.30.tgz",
|
||||
"integrity": "sha512-8vElKklHn/UY8+FgUFlQrYAPbtiSB2zcgeRKW7HkpSRn/JjMRmZvuOtwDx036D1aqKNSTtXkWRfqx53Qb+HmMg==",
|
||||
"version": "3.4.31",
|
||||
"resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.4.31.tgz",
|
||||
"integrity": "sha512-einJxqEw8IIJxzmnxmJBuK2usI+lJonl53foq+9etB2HAzlPjAS/wa7r0uUpXw5ByX3/0uswVSrjNb17vJm1kQ==",
|
||||
"dependencies": {
|
||||
"@babel/parser": "^7.24.7",
|
||||
"@vue/compiler-core": "3.4.30",
|
||||
"@vue/compiler-dom": "3.4.30",
|
||||
"@vue/compiler-ssr": "3.4.30",
|
||||
"@vue/shared": "3.4.30",
|
||||
"@vue/compiler-core": "3.4.31",
|
||||
"@vue/compiler-dom": "3.4.31",
|
||||
"@vue/compiler-ssr": "3.4.31",
|
||||
"@vue/shared": "3.4.31",
|
||||
"estree-walker": "^2.0.2",
|
||||
"magic-string": "^0.30.10",
|
||||
"postcss": "^8.4.38",
|
||||
@ -782,58 +782,58 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@vue/compiler-ssr": {
|
||||
"version": "3.4.30",
|
||||
"resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.4.30.tgz",
|
||||
"integrity": "sha512-ZJ56YZGXJDd6jky4mmM0rNaNP6kIbQu9LTKZDhcpddGe/3QIalB1WHHmZ6iZfFNyj5mSypTa4+qDJa5VIuxMSg==",
|
||||
"version": "3.4.31",
|
||||
"resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.4.31.tgz",
|
||||
"integrity": "sha512-RtefmITAje3fJ8FSg1gwgDhdKhZVntIVbwupdyZDSifZTRMiWxWehAOTCc8/KZDnBOcYQ4/9VWxsTbd3wT0hAA==",
|
||||
"dependencies": {
|
||||
"@vue/compiler-dom": "3.4.30",
|
||||
"@vue/shared": "3.4.30"
|
||||
"@vue/compiler-dom": "3.4.31",
|
||||
"@vue/shared": "3.4.31"
|
||||
}
|
||||
},
|
||||
"node_modules/@vue/reactivity": {
|
||||
"version": "3.4.30",
|
||||
"resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.4.30.tgz",
|
||||
"integrity": "sha512-bVJurnCe3LS0JII8PPoAA63Zd2MBzcKrEzwdQl92eHCcxtIbxD2fhNwJpa+KkM3Y/A4T5FUnmdhgKwOf6BfbcA==",
|
||||
"version": "3.4.31",
|
||||
"resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.4.31.tgz",
|
||||
"integrity": "sha512-VGkTani8SOoVkZNds1PfJ/T1SlAIOf8E58PGAhIOUDYPC4GAmFA2u/E14TDAFcf3vVDKunc4QqCe/SHr8xC65Q==",
|
||||
"dependencies": {
|
||||
"@vue/shared": "3.4.30"
|
||||
"@vue/shared": "3.4.31"
|
||||
}
|
||||
},
|
||||
"node_modules/@vue/runtime-core": {
|
||||
"version": "3.4.30",
|
||||
"resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.4.30.tgz",
|
||||
"integrity": "sha512-qaFEbnNpGz+tlnkaualomogzN8vBLkgzK55uuWjYXbYn039eOBZrWxyXWq/7qh9Bz2FPifZqGjVDl/FXiq9L2g==",
|
||||
"version": "3.4.31",
|
||||
"resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.4.31.tgz",
|
||||
"integrity": "sha512-LDkztxeUPazxG/p8c5JDDKPfkCDBkkiNLVNf7XZIUnJ+66GVGkP+TIh34+8LtPisZ+HMWl2zqhIw0xN5MwU1cw==",
|
||||
"dependencies": {
|
||||
"@vue/reactivity": "3.4.30",
|
||||
"@vue/shared": "3.4.30"
|
||||
"@vue/reactivity": "3.4.31",
|
||||
"@vue/shared": "3.4.31"
|
||||
}
|
||||
},
|
||||
"node_modules/@vue/runtime-dom": {
|
||||
"version": "3.4.30",
|
||||
"resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.4.30.tgz",
|
||||
"integrity": "sha512-tV6B4YiZRj5QsaJgw2THCy5C1H+2UeywO9tqgWEc21tn85qHEERndHN/CxlyXvSBFrpmlexCIdnqPuR9RM9thw==",
|
||||
"version": "3.4.31",
|
||||
"resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.4.31.tgz",
|
||||
"integrity": "sha512-2Auws3mB7+lHhTFCg8E9ZWopA6Q6L455EcU7bzcQ4x6Dn4cCPuqj6S2oBZgN2a8vJRS/LSYYxwFFq2Hlx3Fsaw==",
|
||||
"dependencies": {
|
||||
"@vue/reactivity": "3.4.30",
|
||||
"@vue/runtime-core": "3.4.30",
|
||||
"@vue/shared": "3.4.30",
|
||||
"@vue/reactivity": "3.4.31",
|
||||
"@vue/runtime-core": "3.4.31",
|
||||
"@vue/shared": "3.4.31",
|
||||
"csstype": "^3.1.3"
|
||||
}
|
||||
},
|
||||
"node_modules/@vue/server-renderer": {
|
||||
"version": "3.4.30",
|
||||
"resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.4.30.tgz",
|
||||
"integrity": "sha512-TBD3eqR1DeDc0cMrXS/vEs/PWzq1uXxnvjoqQuDGFIEHFIwuDTX/KWAQKIBjyMWLFHEeTDGYVsYci85z2UbTDg==",
|
||||
"version": "3.4.31",
|
||||
"resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.4.31.tgz",
|
||||
"integrity": "sha512-D5BLbdvrlR9PE3by9GaUp1gQXlCNadIZytMIb8H2h3FMWJd4oUfkUTEH2wAr3qxoRz25uxbTcbqd3WKlm9EHQA==",
|
||||
"dependencies": {
|
||||
"@vue/compiler-ssr": "3.4.30",
|
||||
"@vue/shared": "3.4.30"
|
||||
"@vue/compiler-ssr": "3.4.31",
|
||||
"@vue/shared": "3.4.31"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"vue": "3.4.30"
|
||||
"vue": "3.4.31"
|
||||
}
|
||||
},
|
||||
"node_modules/@vue/shared": {
|
||||
"version": "3.4.30",
|
||||
"resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.4.30.tgz",
|
||||
"integrity": "sha512-CLg+f8RQCHQnKvuHY9adMsMaQOcqclh6Z5V9TaoMgy0ut0tz848joZ7/CYFFyF/yZ5i2yaw7Fn498C+CNZVHIg=="
|
||||
"version": "3.4.31",
|
||||
"resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.4.31.tgz",
|
||||
"integrity": "sha512-Yp3wtJk//8cO4NItOPpi3QkLExAr/aLBGZMmTtW9WpdwBCJpRM6zj9WgWktXAl8IDIozwNMByT45JP3tO3ACWA=="
|
||||
},
|
||||
"node_modules/@vueform/multiselect": {
|
||||
"version": "2.6.8",
|
||||
@ -999,9 +999,9 @@
|
||||
"peer": true
|
||||
},
|
||||
"node_modules/acorn": {
|
||||
"version": "8.12.0",
|
||||
"resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.0.tgz",
|
||||
"integrity": "sha512-RTvkC4w+KNXrM39/lWCUaG0IbRkWdCv7W/IOW9oU6SawyxulvkQy5HQPVTKxEjczcUvapcrw3cFx/60VN/NRNw==",
|
||||
"version": "8.12.1",
|
||||
"resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz",
|
||||
"integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==",
|
||||
"peer": true,
|
||||
"bin": {
|
||||
"acorn": "bin/acorn"
|
||||
@ -1270,9 +1270,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/caniuse-lite": {
|
||||
"version": "1.0.30001637",
|
||||
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001637.tgz",
|
||||
"integrity": "sha512-1x0qRI1mD1o9e+7mBI7XtzFAP4XszbHaVWsMiGbSPLYekKTJF7K+FNk6AsXH4sUpc+qrsI3pVgf1Jdl/uGkuSQ==",
|
||||
"version": "1.0.30001640",
|
||||
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001640.tgz",
|
||||
"integrity": "sha512-lA4VMpW0PSUrFnkmVuEKBUovSWKhj7puyCg8StBChgu298N1AtuF1sKWEvfDuimSEDbhlb/KqPKC3fs1HbuQUA==",
|
||||
"funding": [
|
||||
{
|
||||
"type": "opencollective",
|
||||
@ -1603,9 +1603,9 @@
|
||||
"integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA=="
|
||||
},
|
||||
"node_modules/electron-to-chromium": {
|
||||
"version": "1.4.812",
|
||||
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.812.tgz",
|
||||
"integrity": "sha512-7L8fC2Ey/b6SePDFKR2zHAy4mbdp1/38Yk5TsARO66W3hC5KEaeKMMHoxwtuH+jcu2AYLSn9QX04i95t6Fl1Hg=="
|
||||
"version": "1.4.816",
|
||||
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.816.tgz",
|
||||
"integrity": "sha512-EKH5X5oqC6hLmiS7/vYtZHZFTNdhsYG5NVPRN6Yn0kQHNBlT59+xSM8HBy66P5fxWpKgZbPqb+diC64ng295Jw=="
|
||||
},
|
||||
"node_modules/emoji-regex": {
|
||||
"version": "10.3.0",
|
||||
@ -2446,9 +2446,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/lru-cache": {
|
||||
"version": "10.2.2",
|
||||
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.2.tgz",
|
||||
"integrity": "sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==",
|
||||
"version": "10.3.0",
|
||||
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.3.0.tgz",
|
||||
"integrity": "sha512-CQl19J/g+Hbjbv4Y3mFNNXFEL/5t/KCg8POCuUqd4rMKjGG+j1ybER83hxV58zL+dFI1PTkt3GNFSHRt+d8qEQ==",
|
||||
"engines": {
|
||||
"node": "14 || >=16.14"
|
||||
}
|
||||
@ -2759,9 +2759,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/postcss": {
|
||||
"version": "8.4.38",
|
||||
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.38.tgz",
|
||||
"integrity": "sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==",
|
||||
"version": "8.4.39",
|
||||
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.39.tgz",
|
||||
"integrity": "sha512-0vzE+lAiG7hZl1/9I8yzKLx3aR9Xbof3fBHKunvMfOCYAtMhrsnccJY2iTURb9EZd5+pLuiNV9/c/GZJOHsgIw==",
|
||||
"funding": [
|
||||
{
|
||||
"type": "opencollective",
|
||||
@ -2778,7 +2778,7 @@
|
||||
],
|
||||
"dependencies": {
|
||||
"nanoid": "^3.3.7",
|
||||
"picocolors": "^1.0.0",
|
||||
"picocolors": "^1.0.1",
|
||||
"source-map-js": "^1.2.0"
|
||||
},
|
||||
"engines": {
|
||||
@ -2977,9 +2977,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/qs": {
|
||||
"version": "6.12.1",
|
||||
"resolved": "https://registry.npmjs.org/qs/-/qs-6.12.1.tgz",
|
||||
"integrity": "sha512-zWmv4RSuB9r2mYQw3zxQuHWeU+42aKi1wWig/j4ele4ygELZ7PEO6MM7rim9oAQH2A5MWfsAVf/jPvTPgCbvUQ==",
|
||||
"version": "6.12.2",
|
||||
"resolved": "https://registry.npmjs.org/qs/-/qs-6.12.2.tgz",
|
||||
"integrity": "sha512-x+NLUpx9SYrcwXtX7ob1gnkSems4i/mGZX5SlYxwIau6RrUSODO89TR/XDGGpn5RPWSYIB+aSfuSlV5+CmbTBg==",
|
||||
"dependencies": {
|
||||
"side-channel": "^1.0.6"
|
||||
},
|
||||
@ -3360,9 +3360,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/string-width": {
|
||||
"version": "7.1.0",
|
||||
"resolved": "https://registry.npmjs.org/string-width/-/string-width-7.1.0.tgz",
|
||||
"integrity": "sha512-SEIJCWiX7Kg4c129n48aDRwLbFb2LJmXXFrWBG4NGaRtMQ3myKPKbwrD1BKqQn74oCoNMBVrfDEr5M9YxCsrkw==",
|
||||
"version": "7.2.0",
|
||||
"resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz",
|
||||
"integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"emoji-regex": "^10.3.0",
|
||||
@ -3700,9 +3700,9 @@
|
||||
"peer": true
|
||||
},
|
||||
"node_modules/update-browserslist-db": {
|
||||
"version": "1.0.16",
|
||||
"resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.16.tgz",
|
||||
"integrity": "sha512-KVbTxlBYlckhF5wgfyZXTWnMn7MMZjMu9XG8bPlliUOP9ThaF4QnhP8qrjrH7DRzHfSk0oQv1wToW+iA5GajEQ==",
|
||||
"version": "1.1.0",
|
||||
"resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz",
|
||||
"integrity": "sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==",
|
||||
"funding": [
|
||||
{
|
||||
"type": "opencollective",
|
||||
@ -3743,13 +3743,13 @@
|
||||
"integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw=="
|
||||
},
|
||||
"node_modules/vite": {
|
||||
"version": "5.3.1",
|
||||
"resolved": "https://registry.npmjs.org/vite/-/vite-5.3.1.tgz",
|
||||
"integrity": "sha512-XBmSKRLXLxiaPYamLv3/hnP/KXDai1NDexN0FpkTaZXTfycHvkRHoenpgl/fvuK/kPbB6xAgoyiryAhQNxYmAQ==",
|
||||
"version": "5.3.3",
|
||||
"resolved": "https://registry.npmjs.org/vite/-/vite-5.3.3.tgz",
|
||||
"integrity": "sha512-NPQdeCU0Dv2z5fu+ULotpuq5yfCS1BzKUIPhNbP3YBfAMGJXbt2nS+sbTFu+qchaqWTD+H3JK++nRwr6XIcp6A==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"esbuild": "^0.21.3",
|
||||
"postcss": "^8.4.38",
|
||||
"postcss": "^8.4.39",
|
||||
"rollup": "^4.13.0"
|
||||
},
|
||||
"bin": {
|
||||
@ -3808,15 +3808,15 @@
|
||||
}
|
||||
},
|
||||
"node_modules/vue": {
|
||||
"version": "3.4.30",
|
||||
"resolved": "https://registry.npmjs.org/vue/-/vue-3.4.30.tgz",
|
||||
"integrity": "sha512-NcxtKCwkdf1zPsr7Y8+QlDBCGqxvjLXF2EX+yi76rV5rrz90Y6gK1cq0olIhdWGgrlhs9ElHuhi9t3+W5sG5Xw==",
|
||||
"version": "3.4.31",
|
||||
"resolved": "https://registry.npmjs.org/vue/-/vue-3.4.31.tgz",
|
||||
"integrity": "sha512-njqRrOy7W3YLAlVqSKpBebtZpDVg21FPoaq1I7f/+qqBThK9ChAIjkRWgeP6Eat+8C+iia4P3OYqpATP21BCoQ==",
|
||||
"dependencies": {
|
||||
"@vue/compiler-dom": "3.4.30",
|
||||
"@vue/compiler-sfc": "3.4.30",
|
||||
"@vue/runtime-dom": "3.4.30",
|
||||
"@vue/server-renderer": "3.4.30",
|
||||
"@vue/shared": "3.4.30"
|
||||
"@vue/compiler-dom": "3.4.31",
|
||||
"@vue/compiler-sfc": "3.4.31",
|
||||
"@vue/runtime-dom": "3.4.31",
|
||||
"@vue/server-renderer": "3.4.31",
|
||||
"@vue/shared": "3.4.31"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"typescript": "*"
|
||||
|
||||
70
postfix/composer.lock
generated
70
postfix/composer.lock
generated
@ -290,16 +290,16 @@
|
||||
},
|
||||
{
|
||||
"name": "illuminate/collections",
|
||||
"version": "v11.12.0",
|
||||
"version": "v11.14.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/illuminate/collections.git",
|
||||
"reference": "6923dc8c83b8c065c3b89cb4c2a4b10a4288ce79"
|
||||
"reference": "358fd6dcce6927ee9d7cf520fa619f4597020d52"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/illuminate/collections/zipball/6923dc8c83b8c065c3b89cb4c2a4b10a4288ce79",
|
||||
"reference": "6923dc8c83b8c065c3b89cb4c2a4b10a4288ce79",
|
||||
"url": "https://api.github.com/repos/illuminate/collections/zipball/358fd6dcce6927ee9d7cf520fa619f4597020d52",
|
||||
"reference": "358fd6dcce6927ee9d7cf520fa619f4597020d52",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@ -341,20 +341,20 @@
|
||||
"issues": "https://github.com/laravel/framework/issues",
|
||||
"source": "https://github.com/laravel/framework"
|
||||
},
|
||||
"time": "2024-06-21T15:52:51+00:00"
|
||||
"time": "2024-06-28T20:14:10+00:00"
|
||||
},
|
||||
{
|
||||
"name": "illuminate/conditionable",
|
||||
"version": "v11.12.0",
|
||||
"version": "v11.14.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/illuminate/conditionable.git",
|
||||
"reference": "8a558fec063b6a63da1c3af1d219c0f998edffeb"
|
||||
"reference": "362dd761b9920367bca1427a902158225e9e3a23"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/illuminate/conditionable/zipball/8a558fec063b6a63da1c3af1d219c0f998edffeb",
|
||||
"reference": "8a558fec063b6a63da1c3af1d219c0f998edffeb",
|
||||
"url": "https://api.github.com/repos/illuminate/conditionable/zipball/362dd761b9920367bca1427a902158225e9e3a23",
|
||||
"reference": "362dd761b9920367bca1427a902158225e9e3a23",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@ -387,20 +387,20 @@
|
||||
"issues": "https://github.com/laravel/framework/issues",
|
||||
"source": "https://github.com/laravel/framework"
|
||||
},
|
||||
"time": "2024-04-04T17:36:49+00:00"
|
||||
"time": "2024-06-28T20:10:30+00:00"
|
||||
},
|
||||
{
|
||||
"name": "illuminate/container",
|
||||
"version": "v11.12.0",
|
||||
"version": "v11.14.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/illuminate/container.git",
|
||||
"reference": "af979ecfd6dfa6583eae5dfe2e9a8840358f4ca7"
|
||||
"reference": "280405e0b577504b97feae0e7c7f5399816ccff1"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/illuminate/container/zipball/af979ecfd6dfa6583eae5dfe2e9a8840358f4ca7",
|
||||
"reference": "af979ecfd6dfa6583eae5dfe2e9a8840358f4ca7",
|
||||
"url": "https://api.github.com/repos/illuminate/container/zipball/280405e0b577504b97feae0e7c7f5399816ccff1",
|
||||
"reference": "280405e0b577504b97feae0e7c7f5399816ccff1",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@ -438,20 +438,20 @@
|
||||
"issues": "https://github.com/laravel/framework/issues",
|
||||
"source": "https://github.com/laravel/framework"
|
||||
},
|
||||
"time": "2024-04-04T17:36:49+00:00"
|
||||
"time": "2024-07-02T15:41:17+00:00"
|
||||
},
|
||||
{
|
||||
"name": "illuminate/contracts",
|
||||
"version": "v11.12.0",
|
||||
"version": "v11.14.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/illuminate/contracts.git",
|
||||
"reference": "86c1331d0b06c59ca21723d8bfc9faaa19430b46"
|
||||
"reference": "eb8ccfbc5905c5631712d157cccdd7bc9db692e0"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/illuminate/contracts/zipball/86c1331d0b06c59ca21723d8bfc9faaa19430b46",
|
||||
"reference": "86c1331d0b06c59ca21723d8bfc9faaa19430b46",
|
||||
"url": "https://api.github.com/repos/illuminate/contracts/zipball/eb8ccfbc5905c5631712d157cccdd7bc9db692e0",
|
||||
"reference": "eb8ccfbc5905c5631712d157cccdd7bc9db692e0",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@ -486,20 +486,20 @@
|
||||
"issues": "https://github.com/laravel/framework/issues",
|
||||
"source": "https://github.com/laravel/framework"
|
||||
},
|
||||
"time": "2024-05-21T17:42:34+00:00"
|
||||
"time": "2024-07-01T21:58:24+00:00"
|
||||
},
|
||||
{
|
||||
"name": "illuminate/database",
|
||||
"version": "v11.12.0",
|
||||
"version": "v11.14.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/illuminate/database.git",
|
||||
"reference": "d2bd095eab3d7a1e869b5824bcada7492e447ec7"
|
||||
"reference": "6576f6fcc871a6ad173b6e246e8d2c63cd7cfe1a"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/illuminate/database/zipball/d2bd095eab3d7a1e869b5824bcada7492e447ec7",
|
||||
"reference": "d2bd095eab3d7a1e869b5824bcada7492e447ec7",
|
||||
"url": "https://api.github.com/repos/illuminate/database/zipball/6576f6fcc871a6ad173b6e246e8d2c63cd7cfe1a",
|
||||
"reference": "6576f6fcc871a6ad173b6e246e8d2c63cd7cfe1a",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@ -554,20 +554,20 @@
|
||||
"issues": "https://github.com/laravel/framework/issues",
|
||||
"source": "https://github.com/laravel/framework"
|
||||
},
|
||||
"time": "2024-06-24T20:24:42+00:00"
|
||||
"time": "2024-07-02T15:56:54+00:00"
|
||||
},
|
||||
{
|
||||
"name": "illuminate/macroable",
|
||||
"version": "v11.12.0",
|
||||
"version": "v11.14.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/illuminate/macroable.git",
|
||||
"reference": "5b6c7c7c5951e6e8fc22dd7e4363602df8294dfa"
|
||||
"reference": "e1cb9e51b9ed5d3c9bc1ab431d0a52fe42a990ed"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/illuminate/macroable/zipball/5b6c7c7c5951e6e8fc22dd7e4363602df8294dfa",
|
||||
"reference": "5b6c7c7c5951e6e8fc22dd7e4363602df8294dfa",
|
||||
"url": "https://api.github.com/repos/illuminate/macroable/zipball/e1cb9e51b9ed5d3c9bc1ab431d0a52fe42a990ed",
|
||||
"reference": "e1cb9e51b9ed5d3c9bc1ab431d0a52fe42a990ed",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@ -600,20 +600,20 @@
|
||||
"issues": "https://github.com/laravel/framework/issues",
|
||||
"source": "https://github.com/laravel/framework"
|
||||
},
|
||||
"time": "2024-05-16T21:43:47+00:00"
|
||||
"time": "2024-06-28T20:10:30+00:00"
|
||||
},
|
||||
{
|
||||
"name": "illuminate/support",
|
||||
"version": "v11.12.0",
|
||||
"version": "v11.14.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/illuminate/support.git",
|
||||
"reference": "1ea237b71cd2e181af36074e2a9dd47f268e5cda"
|
||||
"reference": "a8f299ed76d52fc048decada3571628e65fa5c41"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/illuminate/support/zipball/1ea237b71cd2e181af36074e2a9dd47f268e5cda",
|
||||
"reference": "1ea237b71cd2e181af36074e2a9dd47f268e5cda",
|
||||
"url": "https://api.github.com/repos/illuminate/support/zipball/a8f299ed76d52fc048decada3571628e65fa5c41",
|
||||
"reference": "a8f299ed76d52fc048decada3571628e65fa5c41",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@ -674,7 +674,7 @@
|
||||
"issues": "https://github.com/laravel/framework/issues",
|
||||
"source": "https://github.com/laravel/framework"
|
||||
},
|
||||
"time": "2024-06-24T20:24:42+00:00"
|
||||
"time": "2024-07-01T21:58:57+00:00"
|
||||
},
|
||||
{
|
||||
"name": "nesbot/carbon",
|
||||
|
||||
@ -284,6 +284,15 @@
|
||||
data-tippy-content="'Select All' is only available when the page size is 25"
|
||||
></div>
|
||||
</span>
|
||||
<span v-else-if="props.column.label == 'Active'">
|
||||
{{ props.column.label }}
|
||||
<span
|
||||
class="tooltip outline-none"
|
||||
data-tippy-content="When an alias is deactivated, any messages sent to it will be silently discarded. The sender will not be notified of the unsuccessful delivery."
|
||||
>
|
||||
<icon name="info" class="inline-block w-4 h-4 text-grey-300 fill-current" />
|
||||
</span>
|
||||
</span>
|
||||
<span v-else :class="selectedRows.length > 0 ? 'blur-sm' : ''">
|
||||
{{ props.column.label }}
|
||||
</span>
|
||||
|
||||
@ -38,6 +38,29 @@
|
||||
}"
|
||||
styleClass="vgt-table"
|
||||
>
|
||||
<template #table-column="props">
|
||||
<span v-if="props.column.label == 'Active'">
|
||||
{{ props.column.label }}
|
||||
<span
|
||||
class="tooltip outline-none"
|
||||
data-tippy-content="When a domain is deactivated, any messages sent to its aliases will be silently discarded. The sender will not be notified of the unsuccessful delivery."
|
||||
>
|
||||
<icon name="info" class="inline-block w-4 h-4 text-grey-300 fill-current" />
|
||||
</span>
|
||||
</span>
|
||||
<span v-else-if="props.column.label == 'Catch-All'">
|
||||
{{ props.column.label }}
|
||||
<span
|
||||
class="tooltip outline-none"
|
||||
data-tippy-content="When catch-all is disabled, only aliases that already exist for the domain will forward messages. They will not be automatically created on-the-fly."
|
||||
>
|
||||
<icon name="info" class="inline-block w-4 h-4 text-grey-300 fill-current" />
|
||||
</span>
|
||||
</span>
|
||||
<span v-else>
|
||||
{{ props.column.label }}
|
||||
</span>
|
||||
</template>
|
||||
<template #table-row="props">
|
||||
<span
|
||||
v-if="props.column.field == 'created_at'"
|
||||
@ -677,12 +700,14 @@ const columns = [
|
||||
label: 'Active',
|
||||
field: 'active',
|
||||
type: 'boolean',
|
||||
sortable: false,
|
||||
globalSearchDisabled: true,
|
||||
},
|
||||
{
|
||||
label: 'Catch-All',
|
||||
field: 'catch_all',
|
||||
type: 'boolean',
|
||||
sortable: false,
|
||||
globalSearchDisabled: true,
|
||||
},
|
||||
{
|
||||
@ -969,7 +994,7 @@ const closeCheckRecordsModal = () => {
|
||||
}
|
||||
|
||||
const validDomain = domain => {
|
||||
let re = /(?=^.{4,253}$)(^((?!-)[a-zA-Z0-9-]{0,62}[a-zA-Z0-9]\.)+[a-zA-Z]{2,63}$)/
|
||||
let re = /(?=^.{4,253}$)(^((?!-)[a-zA-Z0-9-]{0,62}[a-zA-Z0-9]\.)+[a-zA-Z0-9-]{2,63}$)/
|
||||
return re.test(domain)
|
||||
}
|
||||
|
||||
|
||||
@ -40,7 +40,7 @@
|
||||
>
|
||||
<template #table-column="props">
|
||||
<span v-if="props.column.label == 'Key'">
|
||||
Key
|
||||
{{ props.column.label }}
|
||||
<span
|
||||
class="tooltip outline-none"
|
||||
:data-tippy-content="`Use this to attach recipients to new aliases as they are created e.g. alias+key@${$page.props.user.username}.anonaddy.com. You can attach multiple recipients by doing alias+2.3.4@${$page.props.user.username}.anonaddy.com. Separating each key by a full stop.`"
|
||||
@ -49,7 +49,7 @@
|
||||
</span>
|
||||
</span>
|
||||
<span v-else-if="props.column.label == 'Alias Count'">
|
||||
Alias Count
|
||||
{{ props.column.label }}
|
||||
<span
|
||||
class="tooltip outline-none"
|
||||
data-tippy-content="This shows the total number of aliases that either the recipient is directly assigned to, or where the recipient is set as the default for a custom domain or username."
|
||||
|
||||
@ -38,6 +38,29 @@
|
||||
}"
|
||||
styleClass="vgt-table"
|
||||
>
|
||||
<template #table-column="props">
|
||||
<span v-if="props.column.label == 'Active'">
|
||||
{{ props.column.label }}
|
||||
<span
|
||||
class="tooltip outline-none"
|
||||
data-tippy-content="When a username is deactivated, any messages sent to its aliases will be silently discarded. The sender will not be notified of the unsuccessful delivery."
|
||||
>
|
||||
<icon name="info" class="inline-block w-4 h-4 text-grey-300 fill-current" />
|
||||
</span>
|
||||
</span>
|
||||
<span v-else-if="props.column.label == 'Catch-All'">
|
||||
{{ props.column.label }}
|
||||
<span
|
||||
class="tooltip outline-none"
|
||||
data-tippy-content="When catch-all is disabled, only aliases that already exist for the username will forward messages. They will not be automatically created on-the-fly."
|
||||
>
|
||||
<icon name="info" class="inline-block w-4 h-4 text-grey-300 fill-current" />
|
||||
</span>
|
||||
</span>
|
||||
<span v-else>
|
||||
{{ props.column.label }}
|
||||
</span>
|
||||
</template>
|
||||
<template #table-row="props">
|
||||
<span
|
||||
v-if="props.column.field == 'created_at'"
|
||||
@ -445,12 +468,14 @@ const columns = [
|
||||
label: 'Active',
|
||||
field: 'active',
|
||||
type: 'boolean',
|
||||
sortable: false,
|
||||
globalSearchDisabled: true,
|
||||
},
|
||||
{
|
||||
label: 'Catch-All',
|
||||
field: 'catch_all',
|
||||
type: 'boolean',
|
||||
sortable: false,
|
||||
globalSearchDisabled: true,
|
||||
},
|
||||
{
|
||||
|
||||
Loading…
Reference in New Issue
Block a user