diff --git a/config.prod/src/.env b/config.prod/src/.env --- a/config.prod/src/.env +++ b/config.prod/src/.env @@ -16,6 +16,7 @@ APP_WITH_SERVICES=1 APP_WITH_FILES=1 APP_WITH_WALLET=0 +APP_WITH_SIGNUP=0 APP_LDAP=1 APP_IMAP=1 @@ -23,9 +24,6 @@ APP_HEADER_CSP="connect-src 'self'; child-src 'self'; font-src 'self'; form-action 'self' data:; frame-ancestors 'self'; img-src blob: data: 'self' *; media-src 'self'; object-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval'; style-src 'self' 'unsafe-eval' 'unsafe-inline'; default-src 'self';" APP_HEADER_XFO=sameorigin -SIGNUP_LIMIT_EMAIL=0 -SIGNUP_LIMIT_IP=0 - ASSET_URL=https://{{ host }} WEBMAIL_URL=/roundcubemail/ diff --git a/src/app/Utils.php b/src/app/Utils.php --- a/src/app/Utils.php +++ b/src/app/Utils.php @@ -506,6 +506,7 @@ 'app.support_email', 'app.company.copyright', 'app.companion_download_link', + 'app.with_signup', 'mail.from.address' ]; diff --git a/src/config/app.php b/src/config/app.php --- a/src/config/app.php +++ b/src/config/app.php @@ -266,6 +266,7 @@ 'with_reseller' => (bool) env('APP_WITH_RESELLER', false), 'with_services' => (bool) env('APP_WITH_SERVICES', false), 'with_wallet' => (bool) env('APP_WITH_WALLET', true), + 'with_signup' => (bool) env('APP_WITH_SIGNUP', true), 'signup' => [ 'email_limit' => (int) env('SIGNUP_LIMIT_EMAIL', 0), diff --git a/src/resources/vue/Widgets/Menu.vue b/src/resources/vue/Widgets/Menu.vue --- a/src/resources/vue/Widgets/Menu.vue +++ b/src/resources/vue/Widgets/Menu.vue @@ -21,7 +21,7 @@ {{ menuItemTitle(item) }} </router-link> </li> - <li class="nav-item" v-if="!loggedIn && $root.isUser && !hasMenuItem('signup')"> + <li class="nav-item" v-if="signupEnabled && !loggedIn && $root.isUser && !hasMenuItem('signup')"> <router-link class="nav-link link-signup" active-class="active" :to="{name: 'signup'}">{{ $t('menu.signup') }}</router-link> </li> <li class="nav-item" v-if="loggedIn && !hasMenuItem('dashboard')"> @@ -65,6 +65,7 @@ buildYear: buildDate.getFullYear(), copyright: window.config['app.company.copyright'] || '', languages: window.config['languages'] || [], + signupEnabled: window.config['app.with_signup'] || false, menuList: [] } }, diff --git a/src/routes/api.php b/src/routes/api.php --- a/src/routes/api.php +++ b/src/routes/api.php @@ -48,17 +48,28 @@ Route::post('password-reset/init', [API\PasswordResetController::class, 'init']); Route::post('password-reset/verify', [API\PasswordResetController::class, 'verify']); Route::post('password-reset', [API\PasswordResetController::class, 'reset']); - - Route::get('signup/domains', [API\SignupController::class, 'domains']); - Route::post('signup/init', [API\SignupController::class, 'init']); - Route::get('signup/invitations/{id}', [API\SignupController::class, 'invitation']); - Route::get('signup/plans', [API\SignupController::class, 'plans']); - Route::post('signup/validate', [API\SignupController::class, 'signupValidate']); - Route::post('signup/verify', [API\SignupController::class, 'verify']); - Route::post('signup', [API\SignupController::class, 'signup']); } ); +if (\config('app.with_signup')) { + Route::group( + [ + 'domain' => \config('app.website_domain'), + 'middleware' => 'api', + 'prefix' => 'auth' + ], + function () { + Route::get('signup/domains', [API\SignupController::class, 'domains']); + Route::post('signup/init', [API\SignupController::class, 'init']); + Route::get('signup/invitations/{id}', [API\SignupController::class, 'invitation']); + Route::get('signup/plans', [API\SignupController::class, 'plans']); + Route::post('signup/validate', [API\SignupController::class, 'signupValidate']); + Route::post('signup/verify', [API\SignupController::class, 'verify']); + Route::post('signup', [API\SignupController::class, 'signup']); + } + ); +} + Route::group( [ 'domain' => \config('app.website_domain'),