diff --git a/app/Models/User.php b/app/Models/User.php
index 0c72af5e..b411273a 100644
--- a/app/Models/User.php
+++ b/app/Models/User.php
@@ -11,12 +11,13 @@ use Kyslik\ColumnSortable\Sortable;
use App\Notifications\ResetPassword;
use Illuminate\Support\Facades\Storage;
use Illuminate\Notifications\Notifiable;
+use Laravel\Fortify\TwoFactorAuthenticatable;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Foundation\Auth\User as Authenticatable;
class User extends Authenticatable
{
- use Notifiable, Billable, Sortable, HasFactory, HasApiTokens;
+ use Notifiable, Billable, Sortable, HasFactory, HasApiTokens, TwoFactorAuthenticatable;
protected $guarded = [
'id',
diff --git a/config/fortify.php b/config/fortify.php
index b5c832a2..823465c0 100644
--- a/config/fortify.php
+++ b/config/fortify.php
@@ -136,8 +136,8 @@ return [
// Features::emailVerification(),
Features::updateProfileInformation(),
//Features::updatePasswords(),
- /*Features::twoFactorAuthentication([
+ Features::twoFactorAuthentication([
'confirmPassword' => true,
- ]),*/
+ ]),
],
];
diff --git a/public/mix-manifest.json b/public/mix-manifest.json
index 4ab29bfd..a1d5fda5 100644
--- a/public/mix-manifest.json
+++ b/public/mix-manifest.json
@@ -1,76 +1,129 @@
{
- "/vendors~chunks/admin~chunks/admin-account~chunks/app-appearance~chunks/app-billings~chunks/app-email~2fac28cc.js": "/vendors~chunks/admin~chunks/admin-account~chunks/app-appearance~chunks/app-billings~chunks/app-email~2fac28cc.js?id=59d8a92b461069b2d8ef",
- "/chunks/admin-account~chunks/app-setup~chunks/billings-detail~chunks/create-new-password~chunks/datab~5f8db287.js": "/chunks/admin-account~chunks/app-setup~chunks/billings-detail~chunks/create-new-password~chunks/datab~5f8db287.js?id=da9787176357b5821f88",
- "/chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/app-index~chunks/app-others~chunks~8cc7d96f.js": "/chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/app-index~chunks/app-others~chunks~8cc7d96f.js?id=dfc34718027ffe49c095",
- "/chunks/files~chunks/platform~chunks/shared~chunks/shared/file-browser.js": "/chunks/files~chunks/platform~chunks/shared~chunks/shared/file-browser.js?id=78490a539df6de210807",
- "/chunks/admin~chunks/platform~chunks/shared.js": "/chunks/admin~chunks/platform~chunks/shared.js?id=6db60bf5154ed8946420",
- "/chunks/files~chunks/shared/file-browser~chunks/shared/single-file.js": "/chunks/files~chunks/shared/file-browser~chunks/shared/single-file.js?id=78d379b1b282c3ad5c0c",
- "/chunks/files~chunks/shared/file-browser.js": "/chunks/files~chunks/shared/file-browser.js?id=c6362b7ef3e9b06d3af7",
- "/chunks/not-found.js": "/chunks/not-found.js?id=3278798d98bd131aa379",
- "/chunks/profile~chunks/settings-password.js": "/chunks/profile~chunks/settings-password.js?id=dbfcbb7580f69474cc13",
- "/vendors~chunks/platform~chunks/shared.js": "/vendors~chunks/platform~chunks/shared.js?id=16e4937273d68f83c37f",
- "/js/main.js": "/js/main.js?id=1ced39466ba657ce3e16",
- "/css/app.css": "/css/app.css?id=a8f94d0c5a6f4a1185b1",
- "/chunks/admin.js": "/chunks/admin.js?id=c23b5f524dd386d797e5",
- "/chunks/admin-account.js": "/chunks/admin-account.js?id=a73cbe625776f823eb4e",
- "/chunks/app-appearance.js": "/chunks/app-appearance.js?id=1542b65e6edae59f17aa",
- "/chunks/app-billings.js": "/chunks/app-billings.js?id=15318dba11818d6ec888",
- "/chunks/app-email.js": "/chunks/app-email.js?id=b023f73218dda4abd604",
- "/chunks/app-index.js": "/chunks/app-index.js?id=08b7878a3fcd087c23b3",
- "/chunks/app-language.js": "/chunks/app-language.js?id=ad245f54b99ec8979f9e",
- "/chunks/app-others.js": "/chunks/app-others.js?id=256f8a571e9535774643",
- "/chunks/app-payments.js": "/chunks/app-payments.js?id=b57048c4667935499d3e",
- "/chunks/app-settings.js": "/chunks/app-settings.js?id=c6f95c5841c36de9d030",
- "/chunks/app-setup.js": "/chunks/app-setup.js?id=c0898f22c12ee8a56916",
- "/chunks/billings-detail.js": "/chunks/billings-detail.js?id=622b5dca6425427f7ea0",
- "/chunks/contact-us.js": "/chunks/contact-us.js?id=9415844c1627d307d951",
- "/chunks/create-new-password.js": "/chunks/create-new-password.js?id=ad4ac6e1e79602cbb929",
- "/chunks/dashboard.js": "/chunks/dashboard.js?id=db35f7a287b6407fc4af",
- "/chunks/database.js": "/chunks/database.js?id=669e7798dcc456197402",
- "/chunks/dynamic-page.js": "/chunks/dynamic-page.js?id=c53bdc4a88bf3f2e5434",
- "/chunks/environment-setup.js": "/chunks/environment-setup.js?id=52cde925b9687de4c29a",
- "/chunks/files.js": "/chunks/files.js?id=0fa05841bb3895d2d5e5",
- "/chunks/forgotten-password.js": "/chunks/forgotten-password.js?id=0708aa3e04e6ed11c91d",
- "/chunks/homepage.js": "/chunks/homepage.js?id=44552c231f6791295903",
- "/chunks/installation-disclaimer.js": "/chunks/installation-disclaimer.js?id=922ecf4d086b03abfc04",
- "/chunks/invoices.js": "/chunks/invoices.js?id=85b17b9371f4df37c00a",
- "/chunks/page-edit.js": "/chunks/page-edit.js?id=7e04b66e4bccb47e7f3f",
- "/chunks/pages.js": "/chunks/pages.js?id=76341f611821d93f1696",
- "/chunks/plan.js": "/chunks/plan.js?id=d44c79f456ece7ed20ba",
- "/chunks/plan-create.js": "/chunks/plan-create.js?id=f14b6474cc894199f962",
- "/chunks/plan-delete.js": "/chunks/plan-delete.js?id=82741fb5261f08150514",
- "/chunks/plan-settings.js": "/chunks/plan-settings.js?id=8e901b7cce8fabec9042",
- "/chunks/plan-subscribers.js": "/chunks/plan-subscribers.js?id=700253b16769e8270c73",
- "/chunks/plans.js": "/chunks/plans.js?id=dd7e195bb66f245cebbd",
- "/chunks/platform.js": "/chunks/platform.js?id=f7073145d3e27be2c880",
- "/chunks/profile.js": "/chunks/profile.js?id=bd661b08717158c5af9e",
- "/chunks/purchase-code.js": "/chunks/purchase-code.js?id=333af0b6deb880990f39",
- "/chunks/settings.js": "/chunks/settings.js?id=7726657c717fa7650d10",
- "/chunks/settings-create-payment-methods.js": "/chunks/settings-create-payment-methods.js?id=08cc16a560d5cc9b25b7",
- "/chunks/settings-invoices.js": "/chunks/settings-invoices.js?id=5ef85da047b11e2f1a21",
- "/chunks/settings-password.js": "/chunks/settings-password.js?id=19b5f0850ba9d6aa049a",
- "/chunks/settings-payment-methods.js": "/chunks/settings-payment-methods.js?id=7cfbeae7706827cd858e",
- "/chunks/settings-storage.js": "/chunks/settings-storage.js?id=c4210c768fddec3ccf9f",
- "/chunks/settings-subscription.js": "/chunks/settings-subscription.js?id=a7c2580bf4280ca3c76b",
- "/chunks/setup-wizard.js": "/chunks/setup-wizard.js?id=d60972a2216523642850",
- "/chunks/shared.js": "/chunks/shared.js?id=e72e37ffad23a1ea2a8e",
- "/chunks/shared/authenticate.js": "/chunks/shared/authenticate.js?id=86820a408438c3513b20",
- "/chunks/shared/file-browser.js": "/chunks/shared/file-browser.js?id=74d47dd07002086ba1de",
- "/chunks/shared/single-file.js": "/chunks/shared/single-file.js?id=03fb36b0d38a3218221f",
- "/chunks/sign-in.js": "/chunks/sign-in.js?id=6a401ac37ac49a729e04",
- "/chunks/sign-up.js": "/chunks/sign-up.js?id=f26bca8e48b5cfb69f30",
- "/chunks/stripe-credentials.js": "/chunks/stripe-credentials.js?id=cd44b6cf8631f690a75d",
- "/chunks/subscription-plans.js": "/chunks/subscription-plans.js?id=4cdc01a909e277284b1d",
- "/chunks/subscription-service.js": "/chunks/subscription-service.js?id=418145ac6ba4a4ba2e4a",
- "/chunks/upgrade-billing.js": "/chunks/upgrade-billing.js?id=98181a3cdcc9cc6e55c2",
- "/chunks/upgrade-plan.js": "/chunks/upgrade-plan.js?id=2eee581bb1d2586b9249",
- "/chunks/user.js": "/chunks/user.js?id=290b4b63ed5a10a5ca3c",
- "/chunks/user-create.js": "/chunks/user-create.js?id=2bfca881534622e3aa5f",
- "/chunks/user-delete.js": "/chunks/user-delete.js?id=dc708437ba1e5ebc0a0d",
- "/chunks/user-detail.js": "/chunks/user-detail.js?id=70bac25962505a1eb468",
- "/chunks/user-invoices.js": "/chunks/user-invoices.js?id=5f5cee4fbc2d5f122114",
- "/chunks/user-password.js": "/chunks/user-password.js?id=3214eb9dadcbeb1e685f",
- "/chunks/user-storage.js": "/chunks/user-storage.js?id=bfecceeadc0a2a0faf64",
- "/chunks/user-subscription.js": "/chunks/user-subscription.js?id=724f2551c1945e1071e2",
- "/chunks/users.js": "/chunks/users.js?id=bb902543025cdf7a79f2"
+ "/js/main.js": "/js/main.js",
+ "/css/app.css": "/css/app.css",
+ "/chunks/admin.js": "/chunks/admin.js?id=db23a3d539fec4b03c65",
+ "/chunks/admin-account.js": "/chunks/admin-account.js?id=ca3bdda58d0bb26a896c",
+ "/chunks/admin-account~chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/app-index~chu~c7a13fb0.js": "/chunks/admin-account~chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/app-index~chu~c7a13fb0.js?id=789a8508d6219be0904d",
+ "/chunks/admin-account~chunks/app-setup~chunks/billings-detail~chunks/create-new-password~chunks/datab~cf616679.js": "/chunks/admin-account~chunks/app-setup~chunks/billings-detail~chunks/create-new-password~chunks/datab~cf616679.js?id=bf8c299c1121b1370723",
+ "/chunks/admin~chunks/admin-account~chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/~eeab5771.js": "/chunks/admin~chunks/admin-account~chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/~eeab5771.js?id=1d83683f5afa0abb114d",
+ "/chunks/admin~chunks/files~chunks/platform~chunks/shared~chunks/shared/file-browser.js": "/chunks/admin~chunks/files~chunks/platform~chunks/shared~chunks/shared/file-browser.js?id=e1f223fd5412173ed827",
+ "/chunks/admin~chunks/files~chunks/settings~chunks/shared/file-browser.js": "/chunks/admin~chunks/files~chunks/settings~chunks/shared/file-browser.js?id=2647d05d2a105cac3f0f",
+ "/chunks/admin~chunks/platform.js": "/chunks/admin~chunks/platform.js?id=ae0bb7e684c857693aa8",
+ "/chunks/admin~chunks/platform~chunks/shared.js": "/chunks/admin~chunks/platform~chunks/shared.js?id=ea0cb4ec8487af4776eb",
+ "/chunks/app-appearance.js": "/chunks/app-appearance.js?id=3b66bd631241fe5466ed",
+ "/chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/app-index~chunks/app-others~chunks~605f4c49.js": "/chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/app-index~chunks/app-others~chunks~605f4c49.js?id=69d6fefe404b9ec4f0de",
+ "/chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/app-index~chunks/app-others~chunks~8cc7d96f.js": "/chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/app-index~chunks/app-others~chunks~8cc7d96f.js?id=07a6859a69c14d4bc289",
+ "/chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/app-index~chunks/app-others~chunks~b9e5655a.js": "/chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/app-index~chunks/app-others~chunks~b9e5655a.js?id=b8f2628bc5946089d58a",
+ "/chunks/app-billings.js": "/chunks/app-billings.js?id=8db305db2a42878cb243",
+ "/chunks/app-email.js": "/chunks/app-email.js?id=21f1982949085b513cd4",
+ "/chunks/app-index.js": "/chunks/app-index.js?id=ed459a1ea3fa89d3de30",
+ "/chunks/app-language.js": "/chunks/app-language.js?id=3e30d578c3d751351eb9",
+ "/chunks/app-language~chunks/app-settings~chunks/dashboard~chunks/invoices~chunks/page-edit~chunks/pag~824d674f.js": "/chunks/app-language~chunks/app-settings~chunks/dashboard~chunks/invoices~chunks/page-edit~chunks/pag~824d674f.js?id=53e545b823ce2e687b31",
+ "/chunks/app-language~chunks/dashboard~chunks/files~chunks/invoices~chunks/pages~chunks/plans~chunks/s~934b6779.js": "/chunks/app-language~chunks/dashboard~chunks/files~chunks/invoices~chunks/pages~chunks/plans~chunks/s~934b6779.js?id=e3df08bfa100e0216a95",
+ "/chunks/app-others.js": "/chunks/app-others.js?id=dfca041b0f77f19baa1e",
+ "/chunks/app-payments.js": "/chunks/app-payments.js?id=54d9bf8fc371179f295b",
+ "/chunks/app-settings.js": "/chunks/app-settings.js?id=7036abc45d63af4fe972",
+ "/chunks/app-setup.js": "/chunks/app-setup.js?id=94f462aaa7a7e7dcd03d",
+ "/chunks/billings-detail.js": "/chunks/billings-detail.js?id=d25da896180b673d0ff1",
+ "/chunks/contact-us.js": "/chunks/contact-us.js?id=f317578eda4c05b98d7f",
+ "/chunks/contact-us~chunks/dynamic-page~chunks/homepage.js": "/chunks/contact-us~chunks/dynamic-page~chunks/homepage.js?id=023e6b0ad58fa1dc5bc6",
+ "/chunks/create-new-password.js": "/chunks/create-new-password.js?id=86c558e2cb256bda86c3",
+ "/chunks/dashboard.js": "/chunks/dashboard.js?id=e2a93e2ceb83cab77b77",
+ "/chunks/dashboard~chunks/invoices~chunks/pages~chunks/plan-subscribers~chunks/plans~chunks/settings-i~0e2a0654.js": "/chunks/dashboard~chunks/invoices~chunks/pages~chunks/plan-subscribers~chunks/plans~chunks/settings-i~0e2a0654.js?id=8e86179595c935837731",
+ "/chunks/database.js": "/chunks/database.js?id=b86430381b515d8d220a",
+ "/chunks/dynamic-page.js": "/chunks/dynamic-page.js?id=2167671fe3099f75ecfe",
+ "/chunks/environment-setup.js": "/chunks/environment-setup.js?id=9c1986d846fdd73bb872",
+ "/chunks/files.js": "/chunks/files.js?id=b852156f00c07bcd55aa",
+ "/chunks/files~chunks/platform~chunks/shared/file-browser.js": "/chunks/files~chunks/platform~chunks/shared/file-browser.js?id=c1af7637432594f4a242",
+ "/chunks/files~chunks/platform~chunks/shared~chunks/shared/file-browser.js": "/chunks/files~chunks/platform~chunks/shared~chunks/shared/file-browser.js?id=e5133c50af3101591521",
+ "/chunks/files~chunks/platform~chunks/shared~chunks/shared/file-browser~chunks/shared/single-file.js": "/chunks/files~chunks/platform~chunks/shared~chunks/shared/file-browser~chunks/shared/single-file.js?id=39824e4246c795c46ed9",
+ "/chunks/files~chunks/settings-subscription~chunks/shared/file-browser~chunks/user-subscription.js": "/chunks/files~chunks/settings-subscription~chunks/shared/file-browser~chunks/user-subscription.js?id=fdeb2974fe93fe48a7c0",
+ "/chunks/files~chunks/shared/file-browser.js": "/chunks/files~chunks/shared/file-browser.js?id=f5af41b5b9e225c52b23",
+ "/chunks/files~chunks/shared/file-browser~chunks/shared/single-file.js": "/chunks/files~chunks/shared/file-browser~chunks/shared/single-file.js?id=59ac7980d3f5884ac0d3",
+ "/chunks/forgotten-password.js": "/chunks/forgotten-password.js?id=ebcbbc0115c1589dcca5",
+ "/chunks/homepage.js": "/chunks/homepage.js?id=b62a9ad724d34bcbc44d",
+ "/chunks/installation-disclaimer.js": "/chunks/installation-disclaimer.js?id=63a8701083fa67e7c689",
+ "/chunks/invoices.js": "/chunks/invoices.js?id=b1ba41c331f013837e2d",
+ "/chunks/not-found.js": "/chunks/not-found.js?id=e795bd0f98216a25dc06",
+ "/chunks/page-edit.js": "/chunks/page-edit.js?id=88b6d026ec4d3794aa1a",
+ "/chunks/pages.js": "/chunks/pages.js?id=2373f18eb236bf6775fa",
+ "/chunks/plan.js": "/chunks/plan.js?id=fd5882a90b4705a172f2",
+ "/chunks/plan-create.js": "/chunks/plan-create.js?id=47c71e0ae08db8d11c52",
+ "/chunks/plan-delete.js": "/chunks/plan-delete.js?id=0e8ea332703dcae2fbdd",
+ "/chunks/plan-settings.js": "/chunks/plan-settings.js?id=2b856bf8204afcea4078",
+ "/chunks/plan-subscribers.js": "/chunks/plan-subscribers.js?id=bc757f00e838ebeddad0",
+ "/chunks/plans.js": "/chunks/plans.js?id=36ebc380b6e7773a04ff",
+ "/chunks/platform.js": "/chunks/platform.js?id=5a0101097d87433a7986",
+ "/chunks/platform~chunks/shared.js": "/chunks/platform~chunks/shared.js?id=2224a6de276a2edc346b",
+ "/chunks/profile.js": "/chunks/profile.js?id=20236b41dd811bfd492c",
+ "/chunks/profile~chunks/settings-password.js": "/chunks/profile~chunks/settings-password.js?id=f532862b4c362de67360",
+ "/chunks/purchase-code.js": "/chunks/purchase-code.js?id=f708db10063dd6c0a864",
+ "/chunks/settings.js": "/chunks/settings.js?id=f3273efbf6b6d723b8ea",
+ "/chunks/settings-create-payment-methods.js": "/chunks/settings-create-payment-methods.js?id=aa81750b0d9e206d5ee9",
+ "/chunks/settings-invoices.js": "/chunks/settings-invoices.js?id=3810f765b5305c2ce25c",
+ "/chunks/settings-password.js": "/chunks/settings-password.js?id=6a2aa5bcfa99fde75a77",
+ "/chunks/settings-payment-methods.js": "/chunks/settings-payment-methods.js?id=c3c536eec45ffbbc77f4",
+ "/chunks/settings-storage.js": "/chunks/settings-storage.js?id=ee860273cc027ffa83c1",
+ "/chunks/settings-subscription.js": "/chunks/settings-subscription.js?id=d15d2096bcf308b21a50",
+ "/chunks/setup-wizard.js": "/chunks/setup-wizard.js?id=d90814559910a424902d",
+ "/chunks/shared.js": "/chunks/shared.js?id=de5b7595a352f2614b55",
+ "/chunks/shared/authenticate.js": "/chunks/shared/authenticate.js?id=238c362399a4018549bd",
+ "/chunks/shared/file-browser.js": "/chunks/shared/file-browser.js?id=d630c473dc6b751ec50f",
+ "/chunks/shared/single-file.js": "/chunks/shared/single-file.js?id=040a7241ea133456200c",
+ "/chunks/sign-in.js": "/chunks/sign-in.js?id=b2e97fd8b52b40b8c4af",
+ "/chunks/sign-up.js": "/chunks/sign-up.js?id=f5634301e476029d6fa1",
+ "/chunks/stripe-credentials.js": "/chunks/stripe-credentials.js?id=20721ca146c27a67bccd",
+ "/chunks/subscription-plans.js": "/chunks/subscription-plans.js?id=d21cbdb1cee9197323c3",
+ "/chunks/subscription-service.js": "/chunks/subscription-service.js?id=de43eac3b1627e00424d",
+ "/chunks/upgrade-billing.js": "/chunks/upgrade-billing.js?id=114cd615807f23990197",
+ "/chunks/upgrade-billing~chunks/upgrade-plan.js": "/chunks/upgrade-billing~chunks/upgrade-plan.js?id=75510b0f500e49b263d1",
+ "/chunks/upgrade-plan.js": "/chunks/upgrade-plan.js?id=e75ca6ec0b01b9bead51",
+ "/chunks/user.js": "/chunks/user.js?id=a73470995a4ae3fd2881",
+ "/chunks/user-create.js": "/chunks/user-create.js?id=b051dfa4977253898319",
+ "/chunks/user-delete.js": "/chunks/user-delete.js?id=a0782d05787effe95383",
+ "/chunks/user-detail.js": "/chunks/user-detail.js?id=ff37a70a549fccc51dfc",
+ "/chunks/user-invoices.js": "/chunks/user-invoices.js?id=fb09652ecb27af5f3b10",
+ "/chunks/user-password.js": "/chunks/user-password.js?id=c6b39bbd4e2cf6175864",
+ "/chunks/user-storage.js": "/chunks/user-storage.js?id=bef79e67371f255f883e",
+ "/chunks/user-subscription.js": "/chunks/user-subscription.js?id=c64145dfa85586f564b0",
+ "/chunks/users.js": "/chunks/users.js?id=0652fa00a2b955a7c591",
+ "/vendors~chunks/admin~chunks/admin-account~chunks/app-appearance~chunks/app-billings~chunks/app-email~2fac28cc.js": "/vendors~chunks/admin~chunks/admin-account~chunks/app-appearance~chunks/app-billings~chunks/app-email~2fac28cc.js?id=57c854adb91ed9a9d088",
+ "/vendors~chunks/admin~chunks/admin-account~chunks/app-appearance~chunks/app-billings~chunks/app-email~d5e36d91.js": "/vendors~chunks/admin~chunks/admin-account~chunks/app-appearance~chunks/app-billings~chunks/app-email~d5e36d91.js?id=170765b4fd923b62195c",
+ "/vendors~chunks/files~chunks/platform~chunks/shared~chunks/shared/file-browser~chunks/shared/single-file.js": "/vendors~chunks/files~chunks/platform~chunks/shared~chunks/shared/file-browser~chunks/shared/single-file.js?id=ca01bfe1656f58710763",
+ "/vendors~chunks/platform~chunks/shared.js": "/vendors~chunks/platform~chunks/shared.js?id=eb141834bc24b72d8e92",
+ "/chunks/sign-in.8944159873fb3ac13fef.hot-update.js": "/chunks/sign-in.8944159873fb3ac13fef.hot-update.js",
+ "/chunks/sign-in.75cb3d2cf12e3f45d175.hot-update.js": "/chunks/sign-in.75cb3d2cf12e3f45d175.hot-update.js",
+ "/chunks/sign-in.729bff4dd920e0f1f41a.hot-update.js": "/chunks/sign-in.729bff4dd920e0f1f41a.hot-update.js",
+ "/chunks/sign-in.90669c169f16b57043eb.hot-update.js": "/chunks/sign-in.90669c169f16b57043eb.hot-update.js",
+ "/chunks/sign-in.50b9315adc692de91e6e.hot-update.js": "/chunks/sign-in.50b9315adc692de91e6e.hot-update.js",
+ "/chunks/sign-in.715ff1e6dcdaa4910de3.hot-update.js": "/chunks/sign-in.715ff1e6dcdaa4910de3.hot-update.js",
+ "/chunks/sign-in.8a6a097ff7b48e093939.hot-update.js": "/chunks/sign-in.8a6a097ff7b48e093939.hot-update.js",
+ "/chunks/sign-in.46d30c932b3d8d9dbd95.hot-update.js": "/chunks/sign-in.46d30c932b3d8d9dbd95.hot-update.js",
+ "/chunks/sign-in.a59d0f701426c969641c.hot-update.js": "/chunks/sign-in.a59d0f701426c969641c.hot-update.js",
+ "/chunks/sign-in.2e40826ff67c58c6ed3e.hot-update.js": "/chunks/sign-in.2e40826ff67c58c6ed3e.hot-update.js",
+ "/chunks/sign-in.84c5dfa58c23e943e8de.hot-update.js": "/chunks/sign-in.84c5dfa58c23e943e8de.hot-update.js",
+ "/chunks/sign-in.7c45a9da1a784ba0fb28.hot-update.js": "/chunks/sign-in.7c45a9da1a784ba0fb28.hot-update.js",
+ "/chunks/sign-in.277ba1e57ae1b9532188.hot-update.js": "/chunks/sign-in.277ba1e57ae1b9532188.hot-update.js",
+ "/chunks/sign-in.a2a4c8724323f35fe2fc.hot-update.js": "/chunks/sign-in.a2a4c8724323f35fe2fc.hot-update.js",
+ "/chunks/sign-in.1ae99812bef1c257f111.hot-update.js": "/chunks/sign-in.1ae99812bef1c257f111.hot-update.js",
+ "/chunks/sign-in.fcb40ce9e15b9da70236.hot-update.js": "/chunks/sign-in.fcb40ce9e15b9da70236.hot-update.js",
+ "/chunks/sign-in.dedc702a2543a419472a.hot-update.js": "/chunks/sign-in.dedc702a2543a419472a.hot-update.js",
+ "/chunks/sign-in.d107b8c7fd8cd66a8c82.hot-update.js": "/chunks/sign-in.d107b8c7fd8cd66a8c82.hot-update.js",
+ "/chunks/sign-in.4f7552d8551ef72b0d2a.hot-update.js": "/chunks/sign-in.4f7552d8551ef72b0d2a.hot-update.js",
+ "/chunks/sign-in.38379efb36005d0c04b0.hot-update.js": "/chunks/sign-in.38379efb36005d0c04b0.hot-update.js",
+ "/chunks/sign-in.10ccd5e13b40458a9922.hot-update.js": "/chunks/sign-in.10ccd5e13b40458a9922.hot-update.js",
+ "/chunks/sign-in.ad5a33847ca334061269.hot-update.js": "/chunks/sign-in.ad5a33847ca334061269.hot-update.js",
+ "/chunks/sign-in.8145c52ffe519bd17d37.hot-update.js": "/chunks/sign-in.8145c52ffe519bd17d37.hot-update.js",
+ "/chunks/sign-in.0ee1b8ac9013dccd4ec9.hot-update.js": "/chunks/sign-in.0ee1b8ac9013dccd4ec9.hot-update.js",
+ "/chunks/sign-in.4eb230d53fde24d16747.hot-update.js": "/chunks/sign-in.4eb230d53fde24d16747.hot-update.js",
+ "/chunks/sign-in.f1970e090d9245380a59.hot-update.js": "/chunks/sign-in.f1970e090d9245380a59.hot-update.js",
+ "/chunks/sign-in.3464c74313f726061ba7.hot-update.js": "/chunks/sign-in.3464c74313f726061ba7.hot-update.js",
+ "/chunks/sign-in.c73835f25ea1f5db1e92.hot-update.js": "/chunks/sign-in.c73835f25ea1f5db1e92.hot-update.js",
+ "/chunks/sign-in.18b3afbd7f399ccd92c4.hot-update.js": "/chunks/sign-in.18b3afbd7f399ccd92c4.hot-update.js",
+ "/chunks/sign-in.78bc71b296288b1cfc7b.hot-update.js": "/chunks/sign-in.78bc71b296288b1cfc7b.hot-update.js",
+ "/chunks/sign-in.c1dfe680eb1d42852c82.hot-update.js": "/chunks/sign-in.c1dfe680eb1d42852c82.hot-update.js",
+ "/chunks/sign-in.4ff61daab837f57cd09e.hot-update.js": "/chunks/sign-in.4ff61daab837f57cd09e.hot-update.js",
+ "/chunks/sign-in.40b44068090a59d03897.hot-update.js": "/chunks/sign-in.40b44068090a59d03897.hot-update.js",
+ "/chunks/sign-in.39496c19f36fda3d8e7b.hot-update.js": "/chunks/sign-in.39496c19f36fda3d8e7b.hot-update.js",
+ "/chunks/sign-in.23b65a3918af564ccfb7.hot-update.js": "/chunks/sign-in.23b65a3918af564ccfb7.hot-update.js"
}
diff --git a/resources/js/views/Auth/SignIn.vue b/resources/js/views/Auth/SignIn.vue
index 16c6957f..39f57bdd 100644
--- a/resources/js/views/Auth/SignIn.vue
+++ b/resources/js/views/Auth/SignIn.vue
@@ -61,6 +61,72 @@
+
+
+
+
+
+
![]()
+
Welcome {{ checkedAccount.name }}
+
Confirm you by 2FA code :
+
+
+
+
+
+ {{ errors[0] }}
+
+
+
+
+ You don't know your 2fa code?
+
+ Use recovery code.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
![]()
+
Welcome {{ checkedAccount.name }}
+
Confirm you by 2FA code :
+
+
+
+
+
+ {{ errors[0] }}
+
+
+
+
+
+
+
+
+
@@ -69,6 +135,7 @@
import {ValidationProvider, ValidationObserver} from 'vee-validate/dist/vee-validate.full'
import AuthContent from '@/components/Auth/AuthContent'
import AuthButton from '@/components/Auth/AuthButton'
+ import Spinner from '@/components/FilesView/Spinner'
import {required} from 'vee-validate/dist/rules'
import {mapGetters} from 'vuex'
import {events} from "@/bus"
@@ -83,6 +150,7 @@
AuthContent,
AuthButton,
required,
+ Spinner,
},
computed: {
...mapGetters(['config']),
@@ -93,6 +161,8 @@
checkedAccount: undefined,
loginPassword: '',
loginEmail: '',
+ twoFactorCode: '',
+ twoFactorRecoveryCode: '',
}
},
methods: {
@@ -173,16 +243,22 @@
email: this.loginEmail,
password: this.loginPassword,
})
- .then(() => {
+ .then((response) => {
// End loading
this.isLoading = false
- // Set login state
- this.$store.commit('SET_AUTHORIZED', true)
+ if(response.data.two_factor) {
- // Go to files page
- this.$router.push({name: 'Files'})
+ this.goToAuthPage('two-factor-authentication')
+ } else {
+
+ // Set login state
+ this.$store.commit('SET_AUTHORIZED', true)
+
+ // Go to files page
+ this.$router.push({name: 'Files'})
+ }
})
.catch(error => {
@@ -197,6 +273,54 @@
this.isLoading = false
})
},
+ async twoFactorChallenge(recovery) {
+
+ // Check if is normal authentication or recovery
+ if( !recovery && this.twoFactorCode.length === 6 || recovery && this.twoFactorRecoveryCode.length === 21) {
+
+ this.isLoading = true
+
+ axios.
+ post('/two-factor-challenge', {
+ ...(!recovery && {code: this.twoFactorCode}),
+ ...(recovery && { recovery_code: this.twoFactorRecoveryCode})
+ })
+ .then(() => {
+
+ this.isLoading = false
+
+ // Set login state
+ this.$store.commit('SET_AUTHORIZED', true)
+
+ // Go to files page
+ this.$router.push({name: 'Files'})
+ })
+ .catch(error => {
+
+ if (error.response.status == 422) {
+
+ //Authentication bad input
+ if(! recovery) {
+
+ this.$refs.two_factor_authentication.setErrors({
+ 'Two Factor Authentication' : 'Incorrect code'
+ })
+ }
+
+ // Recovery bad input
+ if(recovery) {
+
+ this.$refs.two_factor_recovery.setErrors({
+ 'Two Factor Recovery' : 'Incorrect recovery code'
+ })
+ }
+ }
+
+ this.isLoading = false
+ })
+ }
+
+ },
},
created() {
this.$scrollTop()
@@ -213,4 +337,11 @@