create new register route(Laravel) , create new email successfully verified route(Vue)

This commit is contained in:
Milos Holba
2021-05-22 19:36:02 +02:00
parent a7e26cb61f
commit 4d078dc24a
12 changed files with 180 additions and 12 deletions

View File

@@ -4,14 +4,36 @@ namespace App\Actions\Fortify;
use App\Models\User;
use App\Models\Setting;
use App\Models\UserSettings;
use Illuminate\Http\Request;
use Illuminate\Validation\Rule;
use Illuminate\Auth\Events\Registered;
use Illuminate\Support\Facades\Validator;
use Illuminate\Contracts\Auth\StatefulGuard;
use Laravel\Fortify\Contracts\CreatesNewUsers;
use Laravel\Fortify\Contracts\RegisterResponse;
class CreateNewUser implements CreatesNewUsers
{
use PasswordValidationRules;
/**
* The guard implementation.
*
* @var \Illuminate\Contracts\Auth\StatefulGuard
*/
protected $guard;
/**
* Create a new controller instance.
*
* @param \Illuminate\Contracts\Auth\StatefulGuard $guard
* @return void
*/
public function __construct(StatefulGuard $guard)
{
$this->guard = $guard;
}
/**
* Validate and create a newly registered user.
*
@@ -62,4 +84,23 @@ class CreateNewUser implements CreatesNewUsers
return $user;
}
/**
* Create a new registered user.
*
* @param \Illuminate\Http\Request $request
* @param \Laravel\Fortify\Contracts\CreatesNewUsers $creator
* @return \Laravel\Fortify\Contracts\RegisterResponse
*/
public function store(Request $request,
CreatesNewUsers $creator): RegisterResponse
{
event(new Registered($user = $creator->create($request->all())));
if(! get_setting('user_verification')) {
$this->guard->login($user);
};
return app(RegisterResponse::class);
}
}

View File

@@ -190,7 +190,7 @@ class AccountController extends Controller
$user->markEmailAsVerified();
}
return redirect()->to('/sign-in');
return redirect()->to('/successfully-verified');
}
/**

View File

@@ -131,7 +131,7 @@ return [
*/
'features' => [
Features::registration(),
// Features::registration(),
//Features::resetPasswords(),
// Features::emailVerification(),
Features::updateProfileInformation(),

View File

@@ -477,6 +477,7 @@ return [
'page_not_verified.subtitle' => 'Your account is not verified. Before login, verify your account please.',
'page_not_verified.resend_text' => 'Do you want resend verification email?',
'page_not_verified.resend_button' => 'Resend verification email.',
'page_email_successfully_verified' => 'Your account was successfully verified.',
'popup_create_folder.folder_default_name' => 'New Folder',
'popup_create_folder.label' => 'Type Name',
'popup_create_folder.placeholder' => 'Type your name',

View File

@@ -73,7 +73,7 @@
"/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=649d051ab2fa0118f313",
"/chunks/sign-up.js": "/chunks/sign-up.js?id=f5634301e476029d6fa1",
"/chunks/sign-up.js": "/chunks/sign-up.js?id=4145fb89140eac0c34a4",
"/chunks/stripe-credentials.js": "/chunks/stripe-credentials.js?id=7a9a78fcdfebbeff5c3d",
"/chunks/subscription-plans.js": "/chunks/subscription-plans.js?id=314fdc603b7dd04d2b9d",
"/chunks/subscription-service.js": "/chunks/subscription-service.js?id=de43eac3b1627e00424d",
@@ -92,5 +92,72 @@
"/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-files~chunks/shared/file-browser~ch~52c14f2e.js": "/vendors~chunks/files~chunks/platform~chunks/shared~chunks/shared-files~chunks/shared/file-browser~ch~52c14f2e.js?id=66afa0e341251a68c3d3",
"/vendors~chunks/platform~chunks/shared.js": "/vendors~chunks/platform~chunks/shared.js?id=eb141834bc24b72d8e92"
"/vendors~chunks/platform~chunks/shared.js": "/vendors~chunks/platform~chunks/shared.js?id=eb141834bc24b72d8e92",
"/chunks/sign-up.c59b5ac2d31438ca5f36.hot-update.js": "/chunks/sign-up.c59b5ac2d31438ca5f36.hot-update.js",
"/chunks/sign-up.e3d231b81b5a9eb681de.hot-update.js": "/chunks/sign-up.e3d231b81b5a9eb681de.hot-update.js",
"/chunks/sign-up.d35f347d43ffa7864c3f.hot-update.js": "/chunks/sign-up.d35f347d43ffa7864c3f.hot-update.js",
"/chunks/sign-up.ec94f304a3aca7208549.hot-update.js": "/chunks/sign-up.ec94f304a3aca7208549.hot-update.js",
"/chunks/sign-up.eb2d418e59432d081679.hot-update.js": "/chunks/sign-up.eb2d418e59432d081679.hot-update.js",
"/chunks/sign-up.abeaff91c5d3da520dd6.hot-update.js": "/chunks/sign-up.abeaff91c5d3da520dd6.hot-update.js",
"/chunks/sign-up.bb7f3c6ead14ccf3b846.hot-update.js": "/chunks/sign-up.bb7f3c6ead14ccf3b846.hot-update.js",
"/chunks/sign-up.5e96dffbb6979d52ab6d.hot-update.js": "/chunks/sign-up.5e96dffbb6979d52ab6d.hot-update.js",
"/chunks/sign-up.ea6059d561294d0f175c.hot-update.js": "/chunks/sign-up.ea6059d561294d0f175c.hot-update.js",
"/chunks/sign-up.6c5d04f99bc69e0900d8.hot-update.js": "/chunks/sign-up.6c5d04f99bc69e0900d8.hot-update.js",
"/chunks/sign-up.e9456151e2190cebce77.hot-update.js": "/chunks/sign-up.e9456151e2190cebce77.hot-update.js",
"/js/main.4fd505890b976743ae48.hot-update.js": "/js/main.4fd505890b976743ae48.hot-update.js",
"/chunks/admin-account~chunks/app-setup~chunks/billings-detail~chunks/create-new-password~chunks/datab~7d45cb3e.js": "/chunks/admin-account~chunks/app-setup~chunks/billings-detail~chunks/create-new-password~chunks/datab~7d45cb3e.js?id=6c5491727f3a920ce38d",
"/chunks/email-verified.js": "/chunks/email-verified.js?id=3d8c13b3e68f233a75ef",
"/vendors~chunks/admin~chunks/admin-account~chunks/app-appearance~chunks/app-billings~chunks/app-email~5b589b18.js": "/vendors~chunks/admin~chunks/admin-account~chunks/app-appearance~chunks/app-billings~chunks/app-email~5b589b18.js?id=7b448352c80016333266",
"/vendors~chunks/admin~chunks/admin-account~chunks/app-appearance~chunks/app-billings~chunks/app-email~be2a8402.js": "/vendors~chunks/admin~chunks/admin-account~chunks/app-appearance~chunks/app-billings~chunks/app-email~be2a8402.js?id=42c6a5198f1f189d5873",
"/chunks/email-verified.d9de5dc0550566f84e03.hot-update.js": "/chunks/email-verified.d9de5dc0550566f84e03.hot-update.js",
"/js/main.8ae97fce47fe8b6e1386.hot-update.js": "/js/main.8ae97fce47fe8b6e1386.hot-update.js",
"/chunks/email-verified.3f5c020cbaeead942c5a.hot-update.js": "/chunks/email-verified.3f5c020cbaeead942c5a.hot-update.js",
"/chunks/email-verified.697c9ec487ce1669db27.hot-update.js": "/chunks/email-verified.697c9ec487ce1669db27.hot-update.js",
"/chunks/email-verified.331b5672dee28d0f8e68.hot-update.js": "/chunks/email-verified.331b5672dee28d0f8e68.hot-update.js",
"/chunks/email-verified.5006b891b4381c807512.hot-update.js": "/chunks/email-verified.5006b891b4381c807512.hot-update.js",
"/chunks/email-verified.b984c75c9e9bd39fb790.hot-update.js": "/chunks/email-verified.b984c75c9e9bd39fb790.hot-update.js",
"/chunks/email-verified.2c63a7625aed4340c87e.hot-update.js": "/chunks/email-verified.2c63a7625aed4340c87e.hot-update.js",
"/chunks/email-verified.a4eb96e2586d2d21d2c7.hot-update.js": "/chunks/email-verified.a4eb96e2586d2d21d2c7.hot-update.js",
"/chunks/email-verified.c0e13f62c082b5f21232.hot-update.js": "/chunks/email-verified.c0e13f62c082b5f21232.hot-update.js",
"/chunks/email-verified.929803b660228a51a33e.hot-update.js": "/chunks/email-verified.929803b660228a51a33e.hot-update.js",
"/chunks/email-verified.30ea4c69a849f5d1af03.hot-update.js": "/chunks/email-verified.30ea4c69a849f5d1af03.hot-update.js",
"/chunks/email-verified.317aee1f5d84b5468533.hot-update.js": "/chunks/email-verified.317aee1f5d84b5468533.hot-update.js",
"/chunks/email-verified.87cac52d8e7387a98027.hot-update.js": "/chunks/email-verified.87cac52d8e7387a98027.hot-update.js",
"/chunks/email-verified.86296e3b44bfb1d275aa.hot-update.js": "/chunks/email-verified.86296e3b44bfb1d275aa.hot-update.js",
"/chunks/email-verified.6af0c93b2ece4fa86400.hot-update.js": "/chunks/email-verified.6af0c93b2ece4fa86400.hot-update.js",
"/chunks/email-verified.cd510a3a7213fd5b2f87.hot-update.js": "/chunks/email-verified.cd510a3a7213fd5b2f87.hot-update.js",
"/chunks/email-verified.8287bf90e76ce1280e51.hot-update.js": "/chunks/email-verified.8287bf90e76ce1280e51.hot-update.js",
"/chunks/email-verified.f4ad7341b0fef6bc0d60.hot-update.js": "/chunks/email-verified.f4ad7341b0fef6bc0d60.hot-update.js",
"/chunks/email-verified.fded8f5721cb552e83e3.hot-update.js": "/chunks/email-verified.fded8f5721cb552e83e3.hot-update.js",
"/chunks/email-verified.25160ce925957d249aae.hot-update.js": "/chunks/email-verified.25160ce925957d249aae.hot-update.js",
"/chunks/email-verified.ecab01fa10ed886eebc0.hot-update.js": "/chunks/email-verified.ecab01fa10ed886eebc0.hot-update.js",
"/chunks/email-verified.c2ead76b26b7addec319.hot-update.js": "/chunks/email-verified.c2ead76b26b7addec319.hot-update.js",
"/chunks/email-verified.86804eee465fbb67e5eb.hot-update.js": "/chunks/email-verified.86804eee465fbb67e5eb.hot-update.js",
"/chunks/email-verified.15f96fcf88ace5e1372b.hot-update.js": "/chunks/email-verified.15f96fcf88ace5e1372b.hot-update.js",
"/chunks/email-verified.7e23a87c05357703399a.hot-update.js": "/chunks/email-verified.7e23a87c05357703399a.hot-update.js",
"/chunks/email-verified.05e4f9d18227cd2bd6f5.hot-update.js": "/chunks/email-verified.05e4f9d18227cd2bd6f5.hot-update.js",
"/chunks/email-verified.7503140105f12f935102.hot-update.js": "/chunks/email-verified.7503140105f12f935102.hot-update.js",
"/chunks/email-verified.ee0534c5b8e0144d8a93.hot-update.js": "/chunks/email-verified.ee0534c5b8e0144d8a93.hot-update.js",
"/chunks/email-verified.5caedd64ce24ec3f49c5.hot-update.js": "/chunks/email-verified.5caedd64ce24ec3f49c5.hot-update.js",
"/chunks/email-verified.a5cdb5f2c4bffbdcfb36.hot-update.js": "/chunks/email-verified.a5cdb5f2c4bffbdcfb36.hot-update.js",
"/chunks/email-verified.2fee6b254f11e713b406.hot-update.js": "/chunks/email-verified.2fee6b254f11e713b406.hot-update.js",
"/chunks/email-verified.a295d3616db83cc3182c.hot-update.js": "/chunks/email-verified.a295d3616db83cc3182c.hot-update.js",
"/js/main.4605e84fbc1170bd3ec5.hot-update.js": "/js/main.4605e84fbc1170bd3ec5.hot-update.js",
"/chunks/email-verified.4605e84fbc1170bd3ec5.hot-update.js": "/chunks/email-verified.4605e84fbc1170bd3ec5.hot-update.js",
"/chunks/email-verified.8c2f48a95651ad7d86dd.hot-update.js": "/chunks/email-verified.8c2f48a95651ad7d86dd.hot-update.js",
"/chunks/email-verified.fed36bf94fb08c42773b.hot-update.js": "/chunks/email-verified.fed36bf94fb08c42773b.hot-update.js",
"/chunks/email-verified.4f6d4ae24a00d5ae4d07.hot-update.js": "/chunks/email-verified.4f6d4ae24a00d5ae4d07.hot-update.js",
"/chunks/email-verified.569405b97dea60ea1d27.hot-update.js": "/chunks/email-verified.569405b97dea60ea1d27.hot-update.js",
"/chunks/email-verified.707268de085dc362fb8a.hot-update.js": "/chunks/email-verified.707268de085dc362fb8a.hot-update.js",
"/chunks/email-verified.f2ee7ae5a4f32ff32432.hot-update.js": "/chunks/email-verified.f2ee7ae5a4f32ff32432.hot-update.js",
"/chunks/email-verified.829b30702249e29b9a13.hot-update.js": "/chunks/email-verified.829b30702249e29b9a13.hot-update.js",
"/chunks/email-verified.0251ae10b3a973945450.hot-update.js": "/chunks/email-verified.0251ae10b3a973945450.hot-update.js",
"/chunks/email-verified.6ffc313e2ebf17d91c5b.hot-update.js": "/chunks/email-verified.6ffc313e2ebf17d91c5b.hot-update.js",
"/js/main.47e67a30cfdcd8c9a9f7.hot-update.js": "/js/main.47e67a30cfdcd8c9a9f7.hot-update.js",
"/chunks/email-verified.47e67a30cfdcd8c9a9f7.hot-update.js": "/chunks/email-verified.47e67a30cfdcd8c9a9f7.hot-update.js",
"/js/main.2176e202ed63740976c9.hot-update.js": "/js/main.2176e202ed63740976c9.hot-update.js",
"/chunks/email-verified.2176e202ed63740976c9.hot-update.js": "/chunks/email-verified.2176e202ed63740976c9.hot-update.js",
"/chunks/sign-up.ed74b6c7ea20cfd15bbe.hot-update.js": "/chunks/sign-up.ed74b6c7ea20cfd15bbe.hot-update.js",
"/js/main.673b2e7bb4fa6c94a7bc.hot-update.js": "/js/main.673b2e7bb4fa6c94a7bc.hot-update.js",
"/chunks/email-verified.0825e54df39b2dde3b96.hot-update.js": "/chunks/email-verified.0825e54df39b2dde3b96.hot-update.js"
}

View File

@@ -334,6 +334,15 @@ const routesShared = [
},
]
const routesAuth = [
{
name: 'SuccessfullyVerified',
path: '/successfully-verified',
component: () =>
import(/* webpackChunkName: "chunks/email-verified" */ './views/Auth/SuccessfullyEmailVerified'),
meta: {
requiresAuth: false
},
},
{
name: 'SignIn',
path: '/sign-in',

View File

@@ -132,17 +132,23 @@
// Send request to get user token
axios
.post('/register', this.register)
.post('/api/register', this.register)
.then(() => {
// End loading
this.isLoading = false
// Set login state
this.$store.commit('SET_AUTHORIZED', true)
// Go to files page
this.$router.push({name: 'Files'})
if(! config.userVerification) {
// Set login state
this.$store.commit('SET_AUTHORIZED', true)
// Go to files page
this.$router.push({name: 'Files'})
} else {
// Go to sign-in page
this.$router.push({name: 'SignIn'})
}
})
.catch(error => {

View File

@@ -0,0 +1,40 @@
<template>
<AuthContentWrapper>
<AuthContent :visible="true">
<img v-if="config.app_logo" class="logo" :src="$getImage(config.app_logo)" :alt="config.app_name">
<b v-if="! config.app_logo" class="auth-logo-text">{{ config.app_name }}</b>
<h1>{{ $t('page_login.title') }}</h1>
<h2>{{ $t('page_email_successfully_verified') }}</h2>
<a href="/sign-in">
<AuthButton icon="chevron-right" :text="$t('page_sign_in.button_log_in')"/>
</a>
</AuthContent>
</AuthContentWrapper>
</template>
<script>
import AuthContentWrapper from '@/components/Auth/AuthContentWrapper'
import AuthContent from '@/components/Auth/AuthContent'
import AuthButton from '@/components/Auth/AuthButton'
import {mapGetters} from 'vuex'
export default {
name: 'SuccessfullyEmailVerified',
components: {
AuthContentWrapper,
AuthContent,
AuthButton,
},
computed: {
...mapGetters(['config']),
},
}
</script>
<style scoped lang="scss">
@import '@assets/vuefilemanager/_auth-form';
@import '@assets/vuefilemanager/_auth';
</style>

View File

@@ -1,5 +1,6 @@
<?php
use App\Actions\Fortify\CreateNewUser;
use App\Http\Controllers\App\AppFunctionsController;
use App\Http\Controllers\FileManager\ShareController;
use App\Http\Controllers\FileManager\TrashController;
@@ -21,6 +22,9 @@ Route::group(['prefix' => 'password'], function () {
Route::post('/reset', [ResetPasswordController::class, 'reset']);
});
// Register user
Route::post('/register', [CreateNewUser::class, 'store']);
// User master Routes
Route::group(['middleware' => ['auth:sanctum']], function () {
// Browse

View File

@@ -65,7 +65,7 @@ class AuthTest extends TestCase
]);
});
$this->postJson('/register', [
$this->postJson('api/register', [
'email' => 'john@doe.com',
'password' => 'SecretPassword',
'password_confirmation' => 'SecretPassword',

View File

@@ -279,7 +279,7 @@ class UserAccountTest extends TestCase
$response = $this->getJson($verificationUrl);
$response->assertRedirect('sign-in');
$response->assertRedirect('successfully-verified');
$this->assertNotNull(User::find($user->id)->get('email_verified_at'));
}