From 7d28e090425da31162ed0db62c138015c15e2563 Mon Sep 17 00:00:00 2001 From: Milos Holba Date: Tue, 29 Jun 2021 18:41:23 +0200 Subject: [PATCH 1/8] add 2fa, make 2fa login page --- app/Models/User.php | 3 +- config/fortify.php | 4 +- public/mix-manifest.json | 201 ++++++++++++++++++----------- resources/js/views/Auth/SignIn.vue | 141 +++++++++++++++++++- 4 files changed, 267 insertions(+), 82 deletions(-) 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 @@ From 14eaf6da4edb6328949c5b5d3b36d3555623fd73 Mon Sep 17 00:00:00 2001 From: Milos Holba Date: Tue, 29 Jun 2021 19:07:35 +0200 Subject: [PATCH 2/8] 2fa page translation --- config/language-translations.php | 7 +++++++ public/mix-manifest.json | 5 +++-- resources/js/views/Auth/SignIn.vue | 16 ++++++++-------- 3 files changed, 18 insertions(+), 10 deletions(-) diff --git a/config/language-translations.php b/config/language-translations.php index 64a04d2b..4184d450 100644 --- a/config/language-translations.php +++ b/config/language-translations.php @@ -472,6 +472,13 @@ return [ 'page_sign_in.placeholder_password' => 'Type your password', 'page_sign_in.subtitle' => 'Confirm you by your password', 'page_sign_in.title' => 'Are You {name}?', + 'page_sign_in_2fa_title' => 'Welcome {name}', + 'page_sign_in_2fa_subtitle' => 'Confirm you by 2FA code', + 'page_sign_in.placeholder_2fa' => 'Type your 2FA code', + 'page_sign_in.2fa_recovery_text' => "Can't get to your 2FA code?", + 'page_sign_in.2fa_recovery_button' => 'Use recovery code.', + 'page_sign_in.2fa_recovery_subtitle' => 'Use your recovery code', + 'page_sign_in.placeholder_2fa_recovery' => "Type your recovery code", 'popup_create_folder.folder_default_name' => 'New Folder', 'popup_create_folder.label' => 'Type Name', 'popup_create_folder.placeholder' => 'Type your name', diff --git a/public/mix-manifest.json b/public/mix-manifest.json index a1d5fda5..ddf7f122 100644 --- a/public/mix-manifest.json +++ b/public/mix-manifest.json @@ -70,7 +70,7 @@ "/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-in.js": "/chunks/sign-in.js?id=949ceec95f4a8325cbf3", "/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", @@ -125,5 +125,6 @@ "/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" + "/chunks/sign-in.23b65a3918af564ccfb7.hot-update.js": "/chunks/sign-in.23b65a3918af564ccfb7.hot-update.js", + "/chunks/sign-in.f604a37c86fbdefb0b6b.hot-update.js": "/chunks/sign-in.f604a37c86fbdefb0b6b.hot-update.js" } diff --git a/resources/js/views/Auth/SignIn.vue b/resources/js/views/Auth/SignIn.vue index 39f57bdd..c075ce01 100644 --- a/resources/js/views/Auth/SignIn.vue +++ b/resources/js/views/Auth/SignIn.vue @@ -67,15 +67,15 @@
-

Welcome {{ checkedAccount.name }}

-

Confirm you by 2FA code :

+

{{ $t('page_sign_in_2fa_title', {name: checkedAccount.name}) }}

+

{{ $t('page_sign_in_2fa_subtitle') }}:

- - You don't know your 2fa code? + {{ $t('page_sign_in.2fa_recovery_text') }} - Use recovery code. + {{ $t('page_sign_in.2fa_recovery_button') }} @@ -103,15 +103,15 @@
-

Welcome {{ checkedAccount.name }}

-

Confirm you by 2FA code :

+

{{ checkedAccount.name }}

+

{{ $t('page_sign_in.2fa_recovery_subtitle') }}:

- Date: Wed, 30 Jun 2021 13:37:44 +0200 Subject: [PATCH 3/8] Create TwoFactorAuthentication Popup --- app/Http/Resources/UserResource.php | 1 + config/language-translations.php | 7 + public/mix-manifest.json | 131 +++++++++---- .../Others/TwoFactorAuthenticationConfirm.vue | 179 ++++++++++++++++++ resources/js/store/modules/userAuth.js | 3 + resources/js/views/Auth/SignIn.vue | 4 +- resources/js/views/Platform.vue | 4 + resources/js/views/User/Password.vue | 30 +++ webpack.mix.js | 12 +- 9 files changed, 324 insertions(+), 47 deletions(-) create mode 100644 resources/js/components/Others/TwoFactorAuthenticationConfirm.vue diff --git a/app/Http/Resources/UserResource.php b/app/Http/Resources/UserResource.php index c4ba3f05..0285c44b 100644 --- a/app/Http/Resources/UserResource.php +++ b/app/Http/Resources/UserResource.php @@ -25,6 +25,7 @@ class UserResource extends JsonResource 'stripe_customer' => is_null($this->stripe_id) ? false : true, 'email' => is_demo() ? obfuscate_email($this->email) : $this->email, 'role' => $this->role, + 'two_factor_authentication' => $this->two_factor_secret ? true : false, 'folders' => $this->folder_tree, 'storage' => $this->storage, 'created_at_formatted' => format_date($this->created_at, '%d. %B. %Y'), diff --git a/config/language-translations.php b/config/language-translations.php index 4184d450..1a986dad 100644 --- a/config/language-translations.php +++ b/config/language-translations.php @@ -524,6 +524,11 @@ return [ 'popup_upload_limit.title' => 'You exceed upload limit on single file', 'popup_zipping.message' => 'Please wait until your files start downloading.', 'popup_zipping.title' => 'Zipping Your Files...', + 'popup_two_factor_authentication.title' => 'Two Factor Authentication Password Confirm', + 'popup_two_factor_authentication.input_label' => 'Password', + 'popup_two_factor_authentication.placeholder' => 'Type your password', + 'popup_two_factor_authentication.help' => 'Scan the image above with the two-factor authentication app on your phone.', + 'popup_two_factor_authentication.confirm_button' => 'Confirm', 'preview_sorting.grid_view' => 'Grid View', 'preview_sorting.list_view' => 'List View', 'preview_sorting.preview_sorting_button' => 'View', @@ -640,6 +645,8 @@ return [ 'user_settings.timezone_plac' => 'Select your timezone', 'user_settings.title_account' => 'Account Information', 'user_settings.title_billing' => 'Billing Information', + 'validation_errors.incorrect_2fa_code' => 'Sorry, you passed incorrect code', + 'validation_errors.incorrect_2fa_recovery_code' => 'Sorry, you passed incorrect recovery code', 'validation_errors.incorrect_password' => 'Sorry, you passed incorrect password :(', 'validation_errors.wrong_image' => 'You may have uploaded the wrong file, try again!', 'app_description' => 'Your self-hosted storage cloud software powered by Laravel and Vue', diff --git a/public/mix-manifest.json b/public/mix-manifest.json index ddf7f122..8181edbc 100644 --- a/public/mix-manifest.json +++ b/public/mix-manifest.json @@ -53,7 +53,7 @@ "/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.js": "/chunks/platform.js?id=ebc7a6fe1358ebab023f", "/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", @@ -61,7 +61,7 @@ "/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-password.js": "/chunks/settings-password.js?id=0bbdf437fd155e1d00bf", "/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", @@ -70,7 +70,7 @@ "/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=949ceec95f4a8325cbf3", + "/chunks/sign-in.js": "/chunks/sign-in.js?id=3a6512b001e6b8d9785a", "/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", @@ -91,40 +91,93 @@ "/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", - "/chunks/sign-in.f604a37c86fbdefb0b6b.hot-update.js": "/chunks/sign-in.f604a37c86fbdefb0b6b.hot-update.js" + "/chunks/platform.2da23f4f830ea95c2db7.hot-update.js": "/chunks/platform.2da23f4f830ea95c2db7.hot-update.js", + "/chunks/platform.f09893cba29176c1d049.hot-update.js": "/chunks/platform.f09893cba29176c1d049.hot-update.js", + "/chunks/platform.69efc1eacf9203169967.hot-update.js": "/chunks/platform.69efc1eacf9203169967.hot-update.js", + "/chunks/platform.b2e3ac9202bc1629d569.hot-update.js": "/chunks/platform.b2e3ac9202bc1629d569.hot-update.js", + "/chunks/platform.3d90ac0f776f32cc839d.hot-update.js": "/chunks/platform.3d90ac0f776f32cc839d.hot-update.js", + "/chunks/platform.94db67fd0dc30f8ad24c.hot-update.js": "/chunks/platform.94db67fd0dc30f8ad24c.hot-update.js", + "/chunks/platform.47fdd81c6409887e7cea.hot-update.js": "/chunks/platform.47fdd81c6409887e7cea.hot-update.js", + "/chunks/platform.fa3d4f434d8a3da06db0.hot-update.js": "/chunks/platform.fa3d4f434d8a3da06db0.hot-update.js", + "/chunks/platform.a63b8a7a46a1d93112b7.hot-update.js": "/chunks/platform.a63b8a7a46a1d93112b7.hot-update.js", + "/chunks/platform.d48cb3d4d402c04ad3d8.hot-update.js": "/chunks/platform.d48cb3d4d402c04ad3d8.hot-update.js", + "/chunks/platform.bfa33f8f2234db43ea2e.hot-update.js": "/chunks/platform.bfa33f8f2234db43ea2e.hot-update.js", + "/chunks/platform.202c41499dc917dc05c5.hot-update.js": "/chunks/platform.202c41499dc917dc05c5.hot-update.js", + "/chunks/settings-password.0e14bad1dea5754d8c2f.hot-update.js": "/chunks/settings-password.0e14bad1dea5754d8c2f.hot-update.js", + "/chunks/settings-password.994643f7a88fd1e4a4d5.hot-update.js": "/chunks/settings-password.994643f7a88fd1e4a4d5.hot-update.js", + "/chunks/settings-password.7107a22e85b05bf5d786.hot-update.js": "/chunks/settings-password.7107a22e85b05bf5d786.hot-update.js", + "/chunks/settings-password.15d44d72936a763952bf.hot-update.js": "/chunks/settings-password.15d44d72936a763952bf.hot-update.js", + "/chunks/settings-password.b7aa3cd486c35f8db3b5.hot-update.js": "/chunks/settings-password.b7aa3cd486c35f8db3b5.hot-update.js", + "/chunks/settings-password.92f222a7454f0538b155.hot-update.js": "/chunks/settings-password.92f222a7454f0538b155.hot-update.js", + "/chunks/settings-password.03cfd97e49fb6ef671f8.hot-update.js": "/chunks/settings-password.03cfd97e49fb6ef671f8.hot-update.js", + "/chunks/settings-password.6e5b6c561508874a8122.hot-update.js": "/chunks/settings-password.6e5b6c561508874a8122.hot-update.js", + "/chunks/settings-password.dc0c41e134e292b05816.hot-update.js": "/chunks/settings-password.dc0c41e134e292b05816.hot-update.js", + "/chunks/settings-password.db4c718926980681056c.hot-update.js": "/chunks/settings-password.db4c718926980681056c.hot-update.js", + "/chunks/settings-password.1c6394cbad1be8b446d1.hot-update.js": "/chunks/settings-password.1c6394cbad1be8b446d1.hot-update.js", + "/chunks/settings-password.4e44151550b6288443fa.hot-update.js": "/chunks/settings-password.4e44151550b6288443fa.hot-update.js", + "/chunks/settings-password.9c9131b626b538b5d429.hot-update.js": "/chunks/settings-password.9c9131b626b538b5d429.hot-update.js", + "/chunks/settings-password.5322d5921290c3bc7358.hot-update.js": "/chunks/settings-password.5322d5921290c3bc7358.hot-update.js", + "/chunks/settings-password.841b416c54b3f667e354.hot-update.js": "/chunks/settings-password.841b416c54b3f667e354.hot-update.js", + "/chunks/settings-password.debac9f48c4a2fe70791.hot-update.js": "/chunks/settings-password.debac9f48c4a2fe70791.hot-update.js", + "/chunks/settings-password.47a3b6c0bf83565f241a.hot-update.js": "/chunks/settings-password.47a3b6c0bf83565f241a.hot-update.js", + "/chunks/settings-password.19a9bedefd286a849ad4.hot-update.js": "/chunks/settings-password.19a9bedefd286a849ad4.hot-update.js", + "/chunks/settings-password.77cb444526041bc7a8fc.hot-update.js": "/chunks/settings-password.77cb444526041bc7a8fc.hot-update.js", + "/chunks/settings-password.4ce8b8c5216ae48e6527.hot-update.js": "/chunks/settings-password.4ce8b8c5216ae48e6527.hot-update.js", + "/chunks/settings-password.49ec7d70150d83ddee79.hot-update.js": "/chunks/settings-password.49ec7d70150d83ddee79.hot-update.js", + "/chunks/settings-password.5011c27a48db36e53f5e.hot-update.js": "/chunks/settings-password.5011c27a48db36e53f5e.hot-update.js", + "/chunks/settings-password.86d0a814ec25951b1d02.hot-update.js": "/chunks/settings-password.86d0a814ec25951b1d02.hot-update.js", + "/chunks/settings-password.b05d50ca0ec015df2222.hot-update.js": "/chunks/settings-password.b05d50ca0ec015df2222.hot-update.js", + "/chunks/settings-password.5df23f094e9638334829.hot-update.js": "/chunks/settings-password.5df23f094e9638334829.hot-update.js", + "/chunks/settings-password.2cfd808edd63fd80bb4e.hot-update.js": "/chunks/settings-password.2cfd808edd63fd80bb4e.hot-update.js", + "/chunks/settings-password.173cc163a8be23077788.hot-update.js": "/chunks/settings-password.173cc163a8be23077788.hot-update.js", + "/chunks/settings-password.802353accdc7b99f6b49.hot-update.js": "/chunks/settings-password.802353accdc7b99f6b49.hot-update.js", + "/chunks/settings-password.7fc9e3f4696cc97c60cb.hot-update.js": "/chunks/settings-password.7fc9e3f4696cc97c60cb.hot-update.js", + "/chunks/settings-password.815e6d591be8dac21872.hot-update.js": "/chunks/settings-password.815e6d591be8dac21872.hot-update.js", + "/chunks/settings-password.8abc737f7cf5d2fa6e9d.hot-update.js": "/chunks/settings-password.8abc737f7cf5d2fa6e9d.hot-update.js", + "/chunks/settings-password.3fdfc6e416d016300960.hot-update.js": "/chunks/settings-password.3fdfc6e416d016300960.hot-update.js", + "/chunks/settings-password.8e791951efec835a9fd8.hot-update.js": "/chunks/settings-password.8e791951efec835a9fd8.hot-update.js", + "/chunks/admin-account.942c028890dbdd100275.hot-update.js": "/chunks/admin-account.942c028890dbdd100275.hot-update.js", + "/chunks/app-index.942c028890dbdd100275.hot-update.js": "/chunks/app-index.942c028890dbdd100275.hot-update.js", + "/chunks/app-language.942c028890dbdd100275.hot-update.js": "/chunks/app-language.942c028890dbdd100275.hot-update.js", + "/chunks/app-others.942c028890dbdd100275.hot-update.js": "/chunks/app-others.942c028890dbdd100275.hot-update.js", + "/chunks/app-payments.942c028890dbdd100275.hot-update.js": "/chunks/app-payments.942c028890dbdd100275.hot-update.js", + "/chunks/app-setup.942c028890dbdd100275.hot-update.js": "/chunks/app-setup.942c028890dbdd100275.hot-update.js", + "/chunks/dashboard.942c028890dbdd100275.hot-update.js": "/chunks/dashboard.942c028890dbdd100275.hot-update.js", + "/chunks/invoices.942c028890dbdd100275.hot-update.js": "/chunks/invoices.942c028890dbdd100275.hot-update.js", + "/chunks/page-edit.942c028890dbdd100275.hot-update.js": "/chunks/page-edit.942c028890dbdd100275.hot-update.js", + "/chunks/pages.942c028890dbdd100275.hot-update.js": "/chunks/pages.942c028890dbdd100275.hot-update.js", + "/chunks/plan-settings.942c028890dbdd100275.hot-update.js": "/chunks/plan-settings.942c028890dbdd100275.hot-update.js", + "/chunks/plans.942c028890dbdd100275.hot-update.js": "/chunks/plans.942c028890dbdd100275.hot-update.js", + "/chunks/platform.942c028890dbdd100275.hot-update.js": "/chunks/platform.942c028890dbdd100275.hot-update.js", + "/chunks/settings-create-payment-methods.942c028890dbdd100275.hot-update.js": "/chunks/settings-create-payment-methods.942c028890dbdd100275.hot-update.js", + "/chunks/settings-password.942c028890dbdd100275.hot-update.js": "/chunks/settings-password.942c028890dbdd100275.hot-update.js", + "/chunks/settings-password.cef9963a6cc1fbdde51a.hot-update.js": "/chunks/settings-password.cef9963a6cc1fbdde51a.hot-update.js", + "/chunks/settings-password.c51ad5db88e30846ee52.hot-update.js": "/chunks/settings-password.c51ad5db88e30846ee52.hot-update.js", + "/chunks/settings-password.1c7c4a39d6b233b62e08.hot-update.js": "/chunks/settings-password.1c7c4a39d6b233b62e08.hot-update.js", + "/chunks/settings-password.99b407c6a1b4a724471f.hot-update.js": "/chunks/settings-password.99b407c6a1b4a724471f.hot-update.js", + "/chunks/settings-password.0bb21003120ba1130ddf.hot-update.js": "/chunks/settings-password.0bb21003120ba1130ddf.hot-update.js", + "/chunks/settings-password.61016a39a25bc88c3046.hot-update.js": "/chunks/settings-password.61016a39a25bc88c3046.hot-update.js", + "/chunks/settings-password.46347a168e565c65b2b3.hot-update.js": "/chunks/settings-password.46347a168e565c65b2b3.hot-update.js", + "/chunks/admin-account.e22aae3110ab93e66d86.hot-update.js": "/chunks/admin-account.e22aae3110ab93e66d86.hot-update.js", + "/chunks/app-index.e22aae3110ab93e66d86.hot-update.js": "/chunks/app-index.e22aae3110ab93e66d86.hot-update.js", + "/chunks/app-language.e22aae3110ab93e66d86.hot-update.js": "/chunks/app-language.e22aae3110ab93e66d86.hot-update.js", + "/chunks/app-others.e22aae3110ab93e66d86.hot-update.js": "/chunks/app-others.e22aae3110ab93e66d86.hot-update.js", + "/chunks/app-payments.e22aae3110ab93e66d86.hot-update.js": "/chunks/app-payments.e22aae3110ab93e66d86.hot-update.js", + "/chunks/app-setup.e22aae3110ab93e66d86.hot-update.js": "/chunks/app-setup.e22aae3110ab93e66d86.hot-update.js", + "/chunks/dashboard.e22aae3110ab93e66d86.hot-update.js": "/chunks/dashboard.e22aae3110ab93e66d86.hot-update.js", + "/chunks/invoices.e22aae3110ab93e66d86.hot-update.js": "/chunks/invoices.e22aae3110ab93e66d86.hot-update.js", + "/chunks/page-edit.e22aae3110ab93e66d86.hot-update.js": "/chunks/page-edit.e22aae3110ab93e66d86.hot-update.js", + "/chunks/pages.e22aae3110ab93e66d86.hot-update.js": "/chunks/pages.e22aae3110ab93e66d86.hot-update.js", + "/chunks/plan-settings.e22aae3110ab93e66d86.hot-update.js": "/chunks/plan-settings.e22aae3110ab93e66d86.hot-update.js", + "/chunks/plans.e22aae3110ab93e66d86.hot-update.js": "/chunks/plans.e22aae3110ab93e66d86.hot-update.js", + "/chunks/platform.e22aae3110ab93e66d86.hot-update.js": "/chunks/platform.e22aae3110ab93e66d86.hot-update.js", + "/chunks/settings-create-payment-methods.e22aae3110ab93e66d86.hot-update.js": "/chunks/settings-create-payment-methods.e22aae3110ab93e66d86.hot-update.js", + "/chunks/settings-password.e22aae3110ab93e66d86.hot-update.js": "/chunks/settings-password.e22aae3110ab93e66d86.hot-update.js", + "/chunks/settings-password.23a69d6d34870e53fa26.hot-update.js": "/chunks/settings-password.23a69d6d34870e53fa26.hot-update.js", + "/chunks/settings-password.c8f9be315b2d8adc0ce8.hot-update.js": "/chunks/settings-password.c8f9be315b2d8adc0ce8.hot-update.js", + "/chunks/settings-password.e0be0d96876c405eaf7b.hot-update.js": "/chunks/settings-password.e0be0d96876c405eaf7b.hot-update.js", + "/chunks/settings-password.44792a704c343db2fce0.hot-update.js": "/chunks/settings-password.44792a704c343db2fce0.hot-update.js", + "/chunks/platform.8aa58e6aedf2d55e5e13.hot-update.js": "/chunks/platform.8aa58e6aedf2d55e5e13.hot-update.js", + "/chunks/platform.4e9e1e917f75ffb1a912.hot-update.js": "/chunks/platform.4e9e1e917f75ffb1a912.hot-update.js", + "/chunks/platform.63071c87a8948c12b21b.hot-update.js": "/chunks/platform.63071c87a8948c12b21b.hot-update.js" } diff --git a/resources/js/components/Others/TwoFactorAuthenticationConfirm.vue b/resources/js/components/Others/TwoFactorAuthenticationConfirm.vue new file mode 100644 index 00000000..383637c0 --- /dev/null +++ b/resources/js/components/Others/TwoFactorAuthenticationConfirm.vue @@ -0,0 +1,179 @@ + + + + + diff --git a/resources/js/store/modules/userAuth.js b/resources/js/store/modules/userAuth.js index f2df1f76..6b511343 100644 --- a/resources/js/store/modules/userAuth.js +++ b/resources/js/store/modules/userAuth.js @@ -108,6 +108,9 @@ const actions = { } const mutations = { + CHANGE_TWO_FACTOR_AUTHENTICATION_STATE(state, condition) { + state.user.data.attributes.two_factor_authentication = condition + }, RETRIEVE_USER(state, user) { state.user = user }, diff --git a/resources/js/views/Auth/SignIn.vue b/resources/js/views/Auth/SignIn.vue index c075ce01..5c15d2d3 100644 --- a/resources/js/views/Auth/SignIn.vue +++ b/resources/js/views/Auth/SignIn.vue @@ -303,7 +303,7 @@ if(! recovery) { this.$refs.two_factor_authentication.setErrors({ - 'Two Factor Authentication' : 'Incorrect code' + 'Two Factor Authentication' : this.$t('validation_errors.incorrect_2fa_code') }) } @@ -311,7 +311,7 @@ if(recovery) { this.$refs.two_factor_recovery.setErrors({ - 'Two Factor Recovery' : 'Incorrect recovery code' + 'Two Factor Recovery' : this.$t('validation_errors.incorrect_2fa_recovery_code') }) } } diff --git a/resources/js/views/Platform.vue b/resources/js/views/Platform.vue index bc424ffa..66ff0b7d 100644 --- a/resources/js/views/Platform.vue +++ b/resources/js/views/Platform.vue @@ -29,12 +29,15 @@ + + - - diff --git a/resources/js/components/Others/TwoFactorSetupPopup.vue b/resources/js/components/Others/TwoFactorSetupPopup.vue new file mode 100644 index 00000000..50a975c3 --- /dev/null +++ b/resources/js/components/Others/TwoFactorSetupPopup.vue @@ -0,0 +1,207 @@ + + + + + diff --git a/resources/js/views/Platform.vue b/resources/js/views/Platform.vue index 66ff0b7d..5bb8f7c7 100644 --- a/resources/js/views/Platform.vue +++ b/resources/js/views/Platform.vue @@ -14,6 +14,8 @@ + + @@ -29,15 +31,13 @@ - - + + diff --git a/resources/js/components/Others/TwoFactorSetupPopup.vue b/resources/js/components/Others/TwoFactorSetupPopup.vue index 1a7bfa53..bd51b3fc 100644 --- a/resources/js/components/Others/TwoFactorSetupPopup.vue +++ b/resources/js/components/Others/TwoFactorSetupPopup.vue @@ -18,7 +18,9 @@
- + +

+
@@ -60,6 +62,7 @@ import PopupActions from '@/components/Others/Popup/PopupActions' import PopupContent from '@/components/Others/Popup/PopupContent' import PopupHeader from '@/components/Others/Popup/PopupHeader' import ButtonBase from '@/components/FilesView/ButtonBase' +import InfoBox from '@/components/Others/Forms/InfoBox' import {required} from 'vee-validate/dist/rules' import {mapGetters} from 'vuex' import {events} from '@/bus' @@ -76,12 +79,13 @@ export default { PopupHeader, ButtonBase, required, + InfoBox, }, computed: { ...mapGetters(['user']), closeQrButtonText() { return this.isConfirmedClose - ? 'Really disappear this QR code?' + ? this.$t('popup_2fa.disappear_qr') : this.$t('shared_form.button_done') }, closeQrButtonStyle() { @@ -184,11 +188,6 @@ export default { this.qrCode = undefined this.isConfirmedClose = false - axios.get('/user/two-factor-recovery-codes') - .then(response => { - console.log(response.data); - }) - this.$closePopup() } } diff --git a/resources/js/views/Platform.vue b/resources/js/views/Platform.vue index 5bb8f7c7..bc424ffa 100644 --- a/resources/js/views/Platform.vue +++ b/resources/js/views/Platform.vue @@ -14,8 +14,6 @@ - - @@ -37,7 +35,6 @@