feat: enforce SMTP configuration validation and show warning notices before enabling Email 2FA

This commit is contained in:
2026-05-21 21:55:00 +07:00
parent 4741a2dff2
commit 41bef637c9
38 changed files with 168 additions and 136 deletions
+91 -91
View File
@@ -1,48 +1,52 @@
{
"_AuthenticatedLayout-CZMAOddq.js": {
"file": "assets/AuthenticatedLayout-CZMAOddq.js",
"_AuthenticatedLayout-BmwijjRz.js": {
"file": "assets/AuthenticatedLayout-BmwijjRz.js",
"name": "AuthenticatedLayout",
"imports": [
"resources/js/app.tsx"
]
},
"_Can-BT_qEciu.js": {
"file": "assets/Can-BT_qEciu.js",
"_Can-3RHznHg6.js": {
"file": "assets/Can-3RHznHg6.js",
"name": "Can",
"imports": [
"resources/js/app.tsx"
]
},
"_GuestLayout-CpqulkKK.js": {
"file": "assets/GuestLayout-CpqulkKK.js",
"_GuestLayout-CRv8xuaB.js": {
"file": "assets/GuestLayout-CRv8xuaB.js",
"name": "GuestLayout",
"imports": [
"resources/js/app.tsx"
]
},
"_Portal-C4bxW5LS.js": {
"file": "assets/Portal-C4bxW5LS.js",
"_Portal-DmZ4v-Fi.js": {
"file": "assets/Portal-DmZ4v-Fi.js",
"name": "Portal",
"imports": [
"resources/js/app.tsx"
]
},
"_PrimaryButton-B-198fPD.js": {
"file": "assets/PrimaryButton-B-198fPD.js",
"_PrimaryButton-DFjJ1sTT.js": {
"file": "assets/PrimaryButton-DFjJ1sTT.js",
"name": "PrimaryButton",
"imports": [
"resources/js/app.tsx"
]
},
"_TextInput-DIBT30cO.js": {
"file": "assets/TextInput-DIBT30cO.js",
"_TextInput-B5ybuGTV.js": {
"file": "assets/TextInput-B5ybuGTV.js",
"name": "TextInput",
"imports": [
"resources/js/app.tsx"
]
},
"_filepond-plugin-file-validate-type-B3Dqa0H5.js": {
"file": "assets/filepond-plugin-file-validate-type-B3Dqa0H5.js",
"_filepond-plugin-file-validate-type-CEtEkCs1.css": {
"file": "assets/filepond-plugin-file-validate-type-CEtEkCs1.css",
"src": "_filepond-plugin-file-validate-type-CEtEkCs1.css"
},
"_filepond-plugin-file-validate-type-CGrYUz4w.js": {
"file": "assets/filepond-plugin-file-validate-type-CGrYUz4w.js",
"name": "filepond-plugin-file-validate-type",
"imports": [
"resources/js/app.tsx"
@@ -51,19 +55,19 @@
"assets/filepond-plugin-file-validate-type-CEtEkCs1.css"
]
},
"_filepond-plugin-file-validate-type-CEtEkCs1.css": {
"file": "assets/filepond-plugin-file-validate-type-CEtEkCs1.css",
"src": "_filepond-plugin-file-validate-type-CEtEkCs1.css"
},
"_lodash-CfGKNmxp.js": {
"file": "assets/lodash-CfGKNmxp.js",
"_lodash-B3e-Jfxa.js": {
"file": "assets/lodash-B3e-Jfxa.js",
"name": "lodash",
"imports": [
"resources/js/app.tsx"
]
},
"_swal-Cf7rt6k6.js": {
"file": "assets/swal-Cf7rt6k6.js",
"_swal-DtpL8WXZ.css": {
"file": "assets/swal-DtpL8WXZ.css",
"src": "_swal-DtpL8WXZ.css"
},
"_swal-OIXtGkLz.js": {
"file": "assets/swal-OIXtGkLz.js",
"name": "swal",
"imports": [
"resources/js/app.tsx"
@@ -72,104 +76,100 @@
"assets/swal-DtpL8WXZ.css"
]
},
"_swal-DtpL8WXZ.css": {
"file": "assets/swal-DtpL8WXZ.css",
"src": "_swal-DtpL8WXZ.css"
},
"resources/js/Pages/ActivityLogs/Index.tsx": {
"file": "assets/Index-D3_xEHMc.js",
"file": "assets/Index-iZXHCTiZ.js",
"name": "Index",
"src": "resources/js/Pages/ActivityLogs/Index.tsx",
"isDynamicEntry": true,
"imports": [
"resources/js/app.tsx",
"_lodash-CfGKNmxp.js",
"_Portal-C4bxW5LS.js",
"_AuthenticatedLayout-CZMAOddq.js"
"_lodash-B3e-Jfxa.js",
"_Portal-DmZ4v-Fi.js",
"_AuthenticatedLayout-BmwijjRz.js"
]
},
"resources/js/Pages/Auth/ConfirmPassword.tsx": {
"file": "assets/ConfirmPassword-B83Fzxoz.js",
"file": "assets/ConfirmPassword-C6-0ZP0v.js",
"name": "ConfirmPassword",
"src": "resources/js/Pages/Auth/ConfirmPassword.tsx",
"isDynamicEntry": true,
"imports": [
"resources/js/app.tsx",
"_GuestLayout-CpqulkKK.js"
"_GuestLayout-CRv8xuaB.js"
]
},
"resources/js/Pages/Auth/ForgotPassword.tsx": {
"file": "assets/ForgotPassword-CvBhS9bA.js",
"file": "assets/ForgotPassword-5RyZU73F.js",
"name": "ForgotPassword",
"src": "resources/js/Pages/Auth/ForgotPassword.tsx",
"isDynamicEntry": true,
"imports": [
"resources/js/app.tsx",
"_GuestLayout-CpqulkKK.js"
"_GuestLayout-CRv8xuaB.js"
]
},
"resources/js/Pages/Auth/Login.tsx": {
"file": "assets/Login-DsA7F0f8.js",
"file": "assets/Login-BHcXBwht.js",
"name": "Login",
"src": "resources/js/Pages/Auth/Login.tsx",
"isDynamicEntry": true,
"imports": [
"resources/js/app.tsx",
"_GuestLayout-CpqulkKK.js"
"_GuestLayout-CRv8xuaB.js"
]
},
"resources/js/Pages/Auth/Register.tsx": {
"file": "assets/Register-CgyquNdn.js",
"file": "assets/Register-DMrOVXux.js",
"name": "Register",
"src": "resources/js/Pages/Auth/Register.tsx",
"isDynamicEntry": true,
"imports": [
"resources/js/app.tsx",
"_GuestLayout-CpqulkKK.js"
"_GuestLayout-CRv8xuaB.js"
]
},
"resources/js/Pages/Auth/ResetPassword.tsx": {
"file": "assets/ResetPassword-tfeF_2Ko.js",
"file": "assets/ResetPassword-O4FY4xAn.js",
"name": "ResetPassword",
"src": "resources/js/Pages/Auth/ResetPassword.tsx",
"isDynamicEntry": true,
"imports": [
"resources/js/app.tsx",
"_GuestLayout-CpqulkKK.js"
"_GuestLayout-CRv8xuaB.js"
]
},
"resources/js/Pages/Auth/VerifyEmail.tsx": {
"file": "assets/VerifyEmail-BtQ6uoK9.js",
"file": "assets/VerifyEmail-CQjgYeZc.js",
"name": "VerifyEmail",
"src": "resources/js/Pages/Auth/VerifyEmail.tsx",
"isDynamicEntry": true,
"imports": [
"resources/js/app.tsx",
"_GuestLayout-CpqulkKK.js"
"_GuestLayout-CRv8xuaB.js"
]
},
"resources/js/Pages/Dashboard.tsx": {
"file": "assets/Dashboard-B1Ib1Ge-.js",
"file": "assets/Dashboard-P03Nnp04.js",
"name": "Dashboard",
"src": "resources/js/Pages/Dashboard.tsx",
"isDynamicEntry": true,
"imports": [
"resources/js/app.tsx",
"_AuthenticatedLayout-CZMAOddq.js"
"_AuthenticatedLayout-BmwijjRz.js"
]
},
"resources/js/Pages/Docs/Index.tsx": {
"file": "assets/Index-C4XMvKk1.js",
"file": "assets/Index-QcFkapyT.js",
"name": "Index",
"src": "resources/js/Pages/Docs/Index.tsx",
"isDynamicEntry": true,
"imports": [
"resources/js/app.tsx",
"_AuthenticatedLayout-CZMAOddq.js"
"_AuthenticatedLayout-BmwijjRz.js"
]
},
"resources/js/Pages/Errors/Error.tsx": {
"file": "assets/Error-BebYoa_W.js",
"file": "assets/Error-adgn1zjE.js",
"name": "Error",
"src": "resources/js/Pages/Errors/Error.tsx",
"isDynamicEntry": true,
@@ -178,144 +178,144 @@
]
},
"resources/js/Pages/Notifications/Index.tsx": {
"file": "assets/Index-UH2JN6mC.js",
"file": "assets/Index-BtF9hYGF.js",
"name": "Index",
"src": "resources/js/Pages/Notifications/Index.tsx",
"isDynamicEntry": true,
"imports": [
"resources/js/app.tsx",
"_swal-Cf7rt6k6.js",
"_AuthenticatedLayout-CZMAOddq.js"
"_swal-OIXtGkLz.js",
"_AuthenticatedLayout-BmwijjRz.js"
]
},
"resources/js/Pages/Profile/Edit.tsx": {
"file": "assets/Edit-03jCPcuh.js",
"file": "assets/Edit-CcDyi3If.js",
"name": "Edit",
"src": "resources/js/Pages/Profile/Edit.tsx",
"isDynamicEntry": true,
"imports": [
"resources/js/app.tsx",
"_filepond-plugin-file-validate-type-B3Dqa0H5.js",
"_swal-Cf7rt6k6.js",
"_AuthenticatedLayout-CZMAOddq.js"
"_filepond-plugin-file-validate-type-CGrYUz4w.js",
"_swal-OIXtGkLz.js",
"_AuthenticatedLayout-BmwijjRz.js"
]
},
"resources/js/Pages/Profile/Partials/DeleteUserForm.tsx": {
"file": "assets/DeleteUserForm-DL3nrZ2g.js",
"file": "assets/DeleteUserForm-cLRB8o-m.js",
"name": "DeleteUserForm",
"src": "resources/js/Pages/Profile/Partials/DeleteUserForm.tsx",
"isDynamicEntry": true,
"imports": [
"resources/js/app.tsx",
"_TextInput-DIBT30cO.js"
"_TextInput-B5ybuGTV.js"
]
},
"resources/js/Pages/Profile/Partials/UpdatePasswordForm.tsx": {
"file": "assets/UpdatePasswordForm-Bj6jDU-o.js",
"file": "assets/UpdatePasswordForm-XKh9sdaV.js",
"name": "UpdatePasswordForm",
"src": "resources/js/Pages/Profile/Partials/UpdatePasswordForm.tsx",
"isDynamicEntry": true,
"imports": [
"resources/js/app.tsx",
"_TextInput-DIBT30cO.js",
"_PrimaryButton-B-198fPD.js"
"_TextInput-B5ybuGTV.js",
"_PrimaryButton-DFjJ1sTT.js"
]
},
"resources/js/Pages/Profile/Partials/UpdateProfileInformationForm.tsx": {
"file": "assets/UpdateProfileInformationForm-x1ycxwpU.js",
"file": "assets/UpdateProfileInformationForm-CnFhZVxg.js",
"name": "UpdateProfileInformationForm",
"src": "resources/js/Pages/Profile/Partials/UpdateProfileInformationForm.tsx",
"isDynamicEntry": true,
"imports": [
"resources/js/app.tsx",
"_TextInput-DIBT30cO.js",
"_PrimaryButton-B-198fPD.js"
"_TextInput-B5ybuGTV.js",
"_PrimaryButton-DFjJ1sTT.js"
]
},
"resources/js/Pages/Roles/Index.tsx": {
"file": "assets/Index-Bxo6DlXR.js",
"file": "assets/Index-B2AGKzoM.js",
"name": "Index",
"src": "resources/js/Pages/Roles/Index.tsx",
"isDynamicEntry": true,
"imports": [
"resources/js/app.tsx",
"_swal-Cf7rt6k6.js",
"_Can-BT_qEciu.js",
"_Portal-C4bxW5LS.js",
"_AuthenticatedLayout-CZMAOddq.js"
"_swal-OIXtGkLz.js",
"_Can-3RHznHg6.js",
"_Portal-DmZ4v-Fi.js",
"_AuthenticatedLayout-BmwijjRz.js"
]
},
"resources/js/Pages/Settings/Index.tsx": {
"file": "assets/Index-BEDHs4KH.js",
"file": "assets/Index-BILhoXMj.js",
"name": "Index",
"src": "resources/js/Pages/Settings/Index.tsx",
"isDynamicEntry": true,
"imports": [
"resources/js/app.tsx",
"_filepond-plugin-file-validate-type-B3Dqa0H5.js",
"_swal-Cf7rt6k6.js",
"_AuthenticatedLayout-CZMAOddq.js"
"_filepond-plugin-file-validate-type-CGrYUz4w.js",
"_swal-OIXtGkLz.js",
"_AuthenticatedLayout-BmwijjRz.js"
]
},
"resources/js/Pages/SystemSettings/Index.tsx": {
"file": "assets/Index-DAezGIHX.js",
"file": "assets/Index-DqQOlVxj.js",
"name": "Index",
"src": "resources/js/Pages/SystemSettings/Index.tsx",
"isDynamicEntry": true,
"imports": [
"resources/js/app.tsx",
"_filepond-plugin-file-validate-type-B3Dqa0H5.js",
"_swal-Cf7rt6k6.js",
"_AuthenticatedLayout-CZMAOddq.js"
"_filepond-plugin-file-validate-type-CGrYUz4w.js",
"_swal-OIXtGkLz.js",
"_AuthenticatedLayout-BmwijjRz.js"
]
},
"resources/js/Pages/TwoFactor/Challenge.tsx": {
"file": "assets/Challenge-CqCDMv4q.js",
"file": "assets/Challenge-BgN5E6DZ.js",
"name": "Challenge",
"src": "resources/js/Pages/TwoFactor/Challenge.tsx",
"isDynamicEntry": true,
"imports": [
"resources/js/app.tsx",
"_swal-Cf7rt6k6.js"
"_swal-OIXtGkLz.js"
]
},
"resources/js/Pages/TwoFactor/Setup.tsx": {
"file": "assets/Setup-CXlum4ul.js",
"file": "assets/Setup-D4vFfX8y.js",
"name": "Setup",
"src": "resources/js/Pages/TwoFactor/Setup.tsx",
"isDynamicEntry": true,
"imports": [
"resources/js/app.tsx",
"_swal-Cf7rt6k6.js",
"_AuthenticatedLayout-CZMAOddq.js"
"_swal-OIXtGkLz.js",
"_AuthenticatedLayout-BmwijjRz.js"
]
},
"resources/js/Pages/Users/Index.tsx": {
"file": "assets/Index-B1Df_MTA.js",
"file": "assets/Index-nX1vMAVr.js",
"name": "Index",
"src": "resources/js/Pages/Users/Index.tsx",
"isDynamicEntry": true,
"imports": [
"resources/js/app.tsx",
"_lodash-CfGKNmxp.js",
"_swal-Cf7rt6k6.js",
"_Can-BT_qEciu.js",
"_Portal-C4bxW5LS.js",
"_AuthenticatedLayout-CZMAOddq.js"
"_lodash-B3e-Jfxa.js",
"_swal-OIXtGkLz.js",
"_Can-3RHznHg6.js",
"_Portal-DmZ4v-Fi.js",
"_AuthenticatedLayout-BmwijjRz.js"
]
},
"resources/js/Pages/Users/Show.tsx": {
"file": "assets/Show-DVHU9Jb4.js",
"file": "assets/Show-DH84ZS1k.js",
"name": "Show",
"src": "resources/js/Pages/Users/Show.tsx",
"isDynamicEntry": true,
"imports": [
"resources/js/app.tsx",
"_AuthenticatedLayout-CZMAOddq.js"
"_AuthenticatedLayout-BmwijjRz.js"
]
},
"resources/js/Pages/Welcome.tsx": {
"file": "assets/Welcome-CEh935DI.js",
"file": "assets/Welcome-B35TdKry.js",
"name": "Welcome",
"src": "resources/js/Pages/Welcome.tsx",
"isDynamicEntry": true,
@@ -324,7 +324,7 @@
]
},
"resources/js/Pages/Xxx.tsx": {
"file": "assets/Xxx-U6leRq9N.js",
"file": "assets/Xxx-KLIpAvoP.js",
"name": "Xxx",
"src": "resources/js/Pages/Xxx.tsx",
"isDynamicEntry": true,
@@ -333,7 +333,7 @@
]
},
"resources/js/app.tsx": {
"file": "assets/app-DydVzIzS.js",
"file": "assets/app-DqWc0bf2.js",
"name": "app",
"src": "resources/js/app.tsx",
"isEntry": true,