diff --git a/app/Http/Controllers/Api/ApiV1Controller.php b/app/Http/Controllers/Api/ApiV1Controller.php index fb6b770ba..02d8d5b83 100644 --- a/app/Http/Controllers/Api/ApiV1Controller.php +++ b/app/Http/Controllers/Api/ApiV1Controller.php @@ -967,7 +967,7 @@ class ApiV1Controller extends Controller 'short_description' => 'Pixelfed - Photo sharing for everyone', 'languages' => ['en'], 'max_toot_chars' => (int) config('pixelfed.max_caption_length'), - 'registrations' => config('pixelfed.open_registration'), + 'registrations' => config_cache('pixelfed.open_registration'), 'stats' => [ 'user_count' => 0, 'status_count' => 0, diff --git a/app/Http/Controllers/Auth/RegisterController.php b/app/Http/Controllers/Auth/RegisterController.php index c8adf28d6..ab1db6625 100644 --- a/app/Http/Controllers/Auth/RegisterController.php +++ b/app/Http/Controllers/Auth/RegisterController.php @@ -14,183 +14,183 @@ use App\Services\EmailService; class RegisterController extends Controller { - /* - |-------------------------------------------------------------------------- - | Register Controller - |-------------------------------------------------------------------------- - | - | This controller handles the registration of new users as well as their - | validation and creation. By default this controller uses a trait to - | provide this functionality without requiring any additional code. - | - */ + /* + |-------------------------------------------------------------------------- + | Register Controller + |-------------------------------------------------------------------------- + | + | This controller handles the registration of new users as well as their + | validation and creation. By default this controller uses a trait to + | provide this functionality without requiring any additional code. + | + */ - use RegistersUsers; + use RegistersUsers; - /** - * Where to redirect users after registration. - * - * @var string - */ - protected $redirectTo = '/'; + /** + * Where to redirect users after registration. + * + * @var string + */ + protected $redirectTo = '/'; - /** - * Create a new controller instance. - * - * @return void - */ - public function __construct() - { - $this->middleware('guest'); - } + /** + * Create a new controller instance. + * + * @return void + */ + public function __construct() + { + $this->middleware('guest'); + } - /** - * Get a validator for an incoming registration request. - * - * @param array $data - * - * @return \Illuminate\Contracts\Validation\Validator - */ - protected function validator(array $data) - { - if(config('database.default') == 'pgsql') { - $data['username'] = strtolower($data['username']); - $data['email'] = strtolower($data['email']); - } + /** + * Get a validator for an incoming registration request. + * + * @param array $data + * + * @return \Illuminate\Contracts\Validation\Validator + */ + protected function validator(array $data) + { + if(config('database.default') == 'pgsql') { + $data['username'] = strtolower($data['username']); + $data['email'] = strtolower($data['email']); + } - $usernameRules = [ - 'required', - 'min:2', - 'max:15', - 'unique:users', - function ($attribute, $value, $fail) { - $dash = substr_count($value, '-'); - $underscore = substr_count($value, '_'); - $period = substr_count($value, '.'); + $usernameRules = [ + 'required', + 'min:2', + 'max:15', + 'unique:users', + function ($attribute, $value, $fail) { + $dash = substr_count($value, '-'); + $underscore = substr_count($value, '_'); + $period = substr_count($value, '.'); - if(ends_with($value, ['.php', '.js', '.css'])) { - return $fail('Username is invalid.'); - } + if(ends_with($value, ['.php', '.js', '.css'])) { + return $fail('Username is invalid.'); + } - if(($dash + $underscore + $period) > 1) { - return $fail('Username is invalid. Can only contain one dash (-), period (.) or underscore (_).'); - } + if(($dash + $underscore + $period) > 1) { + return $fail('Username is invalid. Can only contain one dash (-), period (.) or underscore (_).'); + } - if (!ctype_alpha($value[0])) { - return $fail('Username is invalid. Must start with a letter or number.'); - } + if (!ctype_alpha($value[0])) { + return $fail('Username is invalid. Must start with a letter or number.'); + } - if (!ctype_alnum($value[strlen($value) - 1])) { - return $fail('Username is invalid. Must end with a letter or number.'); - } + if (!ctype_alnum($value[strlen($value) - 1])) { + return $fail('Username is invalid. Must end with a letter or number.'); + } - $val = str_replace(['_', '.', '-'], '', $value); - if(!ctype_alnum($val)) { - return $fail('Username is invalid. Username must be alpha-numeric and may contain dashes (-), periods (.) and underscores (_).'); - } + $val = str_replace(['_', '.', '-'], '', $value); + if(!ctype_alnum($val)) { + return $fail('Username is invalid. Username must be alpha-numeric and may contain dashes (-), periods (.) and underscores (_).'); + } - $restricted = RestrictedNames::get(); - if (in_array(strtolower($value), array_map('strtolower', $restricted))) { - return $fail('Username cannot be used.'); - } - }, - ]; + $restricted = RestrictedNames::get(); + if (in_array(strtolower($value), array_map('strtolower', $restricted))) { + return $fail('Username cannot be used.'); + } + }, + ]; - $emailRules = [ - 'required', - 'string', - 'email', - 'max:255', - 'unique:users', - function ($attribute, $value, $fail) { - $banned = EmailService::isBanned($value); - if($banned) { - return $fail('Email is invalid.'); - } - }, - ]; + $emailRules = [ + 'required', + 'string', + 'email', + 'max:255', + 'unique:users', + function ($attribute, $value, $fail) { + $banned = EmailService::isBanned($value); + if($banned) { + return $fail('Email is invalid.'); + } + }, + ]; - $rules = [ - 'agecheck' => 'required|accepted', - 'name' => 'nullable|string|max:'.config('pixelfed.max_name_length'), - 'username' => $usernameRules, - 'email' => $emailRules, - 'password' => 'required|string|min:'.config('pixelfed.min_password_length').'|confirmed', - ]; + $rules = [ + 'agecheck' => 'required|accepted', + 'name' => 'nullable|string|max:'.config('pixelfed.max_name_length'), + 'username' => $usernameRules, + 'email' => $emailRules, + 'password' => 'required|string|min:'.config('pixelfed.min_password_length').'|confirmed', + ]; - if(config('captcha.enabled')) { - $rules['h-captcha-response'] = 'required|captcha'; - } + if(config('captcha.enabled')) { + $rules['h-captcha-response'] = 'required|captcha'; + } - return Validator::make($data, $rules); - } + return Validator::make($data, $rules); + } - /** - * Create a new user instance after a valid registration. - * - * @param array $data - * - * @return \App\User - */ - protected function create(array $data) - { - if(config('database.default') == 'pgsql') { - $data['username'] = strtolower($data['username']); - $data['email'] = strtolower($data['email']); - } + /** + * Create a new user instance after a valid registration. + * + * @param array $data + * + * @return \App\User + */ + protected function create(array $data) + { + if(config('database.default') == 'pgsql') { + $data['username'] = strtolower($data['username']); + $data['email'] = strtolower($data['email']); + } - return User::create([ - 'name' => $data['name'], - 'username' => $data['username'], - 'email' => $data['email'], - 'password' => Hash::make($data['password']), - ]); - } + return User::create([ + 'name' => $data['name'], + 'username' => $data['username'], + 'email' => $data['email'], + 'password' => Hash::make($data['password']), + ]); + } - /** - * Show the application registration form. - * - * @return \Illuminate\Http\Response - */ - public function showRegistrationForm() - { - if(config('pixelfed.open_registration')) { - $limit = config('pixelfed.max_users'); - if($limit) { - abort_if($limit <= User::count(), 404); - return view('auth.register'); - } else { - return view('auth.register'); - } - } else { - abort(404); - } - } + /** + * Show the application registration form. + * + * @return \Illuminate\Http\Response + */ + public function showRegistrationForm() + { + if(config_cache('pixelfed.open_registration')) { + $limit = config('pixelfed.max_users'); + if($limit) { + abort_if($limit <= User::count(), 404); + return view('auth.register'); + } else { + return view('auth.register'); + } + } else { + abort(404); + } + } - /** - * Handle a registration request for the application. - * - * @param \Illuminate\Http\Request $request - * @return \Illuminate\Http\Response - */ - public function register(Request $request) - { - abort_if(config('pixelfed.open_registration') == false, 400); + /** + * Handle a registration request for the application. + * + * @param \Illuminate\Http\Request $request + * @return \Illuminate\Http\Response + */ + public function register(Request $request) + { + abort_if(config_cache('pixelfed.open_registration') == false, 400); - $count = User::count(); - $limit = config('pixelfed.max_users'); + $count = User::count(); + $limit = config('pixelfed.max_users'); - if(false == config('pixelfed.open_registration') || $limit && $limit <= $count) { - return abort(403); - } + if(false == config_cache('pixelfed.open_registration') || $limit && $limit <= $count) { + return abort(403); + } - $this->validator($request->all())->validate(); + $this->validator($request->all())->validate(); - event(new Registered($user = $this->create($request->all()))); + event(new Registered($user = $this->create($request->all()))); - $this->guard()->login($user); + $this->guard()->login($user); - return $this->registered($request, $user) - ?: redirect($this->redirectPath()); - } + return $this->registered($request, $user) + ?: redirect($this->redirectPath()); + } } diff --git a/app/Util/Site/Config.php b/app/Util/Site/Config.php index 552af0ef3..2f89ca338 100644 --- a/app/Util/Site/Config.php +++ b/app/Util/Site/Config.php @@ -10,7 +10,7 @@ class Config { public static function get() { return Cache::remember('api:site:configuration:_v0.2', now()->addMinutes(5), function() { return [ - 'open_registration' => config('pixelfed.open_registration'), + 'open_registration' => (bool) config_cache('pixelfed.open_registration'), 'uploader' => [ 'max_photo_size' => config('pixelfed.max_photo_size'), 'max_caption_length' => config('pixelfed.max_caption_length'), diff --git a/app/Util/Site/Nodeinfo.php b/app/Util/Site/Nodeinfo.php index 79d433cff..36ac72729 100644 --- a/app/Util/Site/Nodeinfo.php +++ b/app/Util/Site/Nodeinfo.php @@ -70,7 +70,7 @@ class Nodeinfo { 'version' => '2.0', ]; }); - $res['openRegistrations'] = config('pixelfed.open_registration'); + $res['openRegistrations'] = (bool) config_cache('pixelfed.open_registration'); return $res; } diff --git a/resources/views/layouts/partial/nav.blade.php b/resources/views/layouts/partial/nav.blade.php index 627b04ca4..758d881aa 100644 --- a/resources/views/layouts/partial/nav.blade.php +++ b/resources/views/layouts/partial/nav.blade.php @@ -22,7 +22,7 @@ {{ __('Login') }} - @if(config('pixelfed.open_registration') && config('instance.restricted.enabled') == false) + @if(config_cache('pixelfed.open_registration') && config('instance.restricted.enabled') == false)
  • {{ __('Register') }}