diff --git a/app/Http/Controllers/UserController.php b/app/Http/Controllers/UserController.php
index 701b7a61..387a1d36 100644
--- a/app/Http/Controllers/UserController.php
+++ b/app/Http/Controllers/UserController.php
@@ -5,6 +5,7 @@
use App\User;
use Validator;
use Illuminate\Http\Request;
+use Illuminate\Support\Facades\DB;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Auth;
@@ -56,6 +57,20 @@ public function logout()
}
+ /**
+ * check if a user exists
+ * @param Request $request [description]
+ * @return json
+ */
+ public function checkUser()
+ {
+
+ $count = DB::table('users')->count();
+
+ return response()->json(['userCount' => $count], 200);
+ }
+
+
/**
* register new user
* @param Request $request [description]
@@ -63,6 +78,14 @@ public function logout()
*/
public function register(Request $request)
{
+
+ // check if a user already exists
+ $count = DB::table('users')->count();
+
+ if( $count > 0 ) {
+ return response()->json(['error' => __('already_one_user_registered')], 400);
+ }
+
$validator = Validator::make($request->all(), [
'name' => 'required',
'email' => 'required|email',
diff --git a/resources/js/app.js b/resources/js/app.js
index db9416c4..f70b5a2c 100644
--- a/resources/js/app.js
+++ b/resources/js/app.js
@@ -59,6 +59,12 @@ const router = new VueRouter({
name: 'edit',
component: Edit,
},
+ {
+ path: '/flooded',
+ name: 'flooded',
+ component: NotFound,
+ props: true
+ },
{
path: '/error',
name: 'GenericError',
diff --git a/resources/js/views/Error.vue b/resources/js/views/Error.vue
index 020929a6..e2d6ae58 100644
--- a/resources/js/views/Error.vue
+++ b/resources/js/views/Error.vue
@@ -5,6 +5,12 @@
{{ $t('errors.resource_not_found') }}{{ $t('errors.refresh') }}
+
+
+
{{ $t('errors.already_one_user_registered') }}
+ {{ $t('errors.cannot_register_more_user') }}
+ {{ $t('errors.please') }}{{ $t('auth.sign_in') }}
+
{{ $t('errors.error_occured') }}{{ $t('errors.refresh') }}
@@ -50,14 +56,6 @@
this.$router.push({name: 'accounts' });
});
- },
-
- beforeRouteEnter (to, from, next) {
- if ( ! localStorage.getItem('jwt')) {
- return next('login')
- }
-
- next()
}
}
diff --git a/resources/js/views/Register.vue b/resources/js/views/Register.vue
index 0fcc1f9a..b2440f6c 100644
--- a/resources/js/views/Register.vue
+++ b/resources/js/views/Register.vue
@@ -38,6 +38,10 @@
+
+
+ {{ errorMessage }}
+
@@ -58,10 +62,25 @@
email : '',
password : '',
password_confirmation : '',
- errors: {}
+ errors: {},
+ errorMessage: ''
}
},
+ created: function() {
+ // we check if a user account already exists
+ axios.post('api/checkuser')
+ .then(response => {
+ if( response.data.userCount > 0) {
+ this.errorMessage = this.$t('errors.already_one_user_registered') + ' ' + this.$t('errors.cannot_register_more_user')
+ this.$router.push({ name: 'flooded' });
+ }
+ })
+ .catch(error => {
+ this.$router.push({ name: 'error', params: { err: error.response.message } });
+ });
+ },
+
methods : {
handleSubmit(e) {
e.preventDefault()
diff --git a/resources/js/vue-i18n-locales.generated.js b/resources/js/vue-i18n-locales.generated.js
index 98fb11a7..68aaa2cf 100644
--- a/resources/js/vue-i18n-locales.generated.js
+++ b/resources/js/vue-i18n-locales.generated.js
@@ -14,7 +14,7 @@ export default {
"email": "Email",
"password": "Password",
"confirm_password": "Confirm password",
- "dont_have_account_yet": "Don't have an account yet?",
+ "dont_have_account_yet": "Don't have your account yet?",
"already_register": "Already registered?",
"passwords_do_not_match": "Passwords do not match"
}
@@ -25,7 +25,10 @@ export default {
"errors": {
"resource_not_found": "Resource not found, please ",
"error_occured": "An error occured, please ",
+ "already_one_user_registered": "There is already a registered user.",
+ "cannot_register_more_user": "You cannot register more than one user.",
"refresh": "refresh",
+ "please": "Please ",
"response": {
"no_valid_totp": "No valid TOTP resource in this QR code"
}
diff --git a/resources/lang/en/auth.php b/resources/lang/en/auth.php
index 44bff63c..7b22b140 100644
--- a/resources/lang/en/auth.php
+++ b/resources/lang/en/auth.php
@@ -26,7 +26,7 @@
'email' => 'Email',
'password' => 'Password',
'confirm_password' => 'Confirm password',
- 'dont_have_account_yet' => 'Don\'t have an account yet?',
+ 'dont_have_account_yet' => 'Don\'t have your account yet?',
'already_register' => 'Already registered?',
'passwords_do_not_match' => 'Passwords do not match',
]
diff --git a/resources/lang/en/errors.php b/resources/lang/en/errors.php
index 43eb2279..f266dc90 100644
--- a/resources/lang/en/errors.php
+++ b/resources/lang/en/errors.php
@@ -15,7 +15,10 @@
'resource_not_found' => 'Resource not found, please ',
'error_occured' => 'An error occured, please ',
+ 'already_one_user_registered' => 'There is already a registered user.',
+ 'cannot_register_more_user' => 'You cannot register more than one user.',
'refresh' => 'refresh',
+ 'please' => 'Please ',
'response' => [
'no_valid_totp' => 'No valid TOTP resource in this QR code',
]
diff --git a/routes/api.php b/routes/api.php
index e5fc55cd..8a423b97 100644
--- a/routes/api.php
+++ b/routes/api.php
@@ -14,6 +14,7 @@
*/
Route::post('login', 'UserController@login');
+Route::post('checkuser', 'UserController@checkUser');
Route::post('register', 'UserController@register');
Route::group(['middleware' => 'auth:api'], function(){