소스 검색

Update Directory logic, add curated onboarding support

Daniel Supernault 1 년 전
부모
커밋
59c70239f8

+ 7 - 4
app/Http/Controllers/Admin/AdminDirectoryController.php

@@ -75,6 +75,7 @@ trait AdminDirectoryController
         }
 
         $res['community_guidelines'] = config_cache('app.rules') ? json_decode(config_cache('app.rules'), true) : [];
+        $res['curated_onboarding'] = (bool) config_cache('instance.curated_registration.enabled');
         $res['open_registration'] = (bool) config_cache('pixelfed.open_registration');
         $res['oauth_enabled'] = (bool) config_cache('pixelfed.oauth_enabled') && file_exists(storage_path('oauth-public.key')) && file_exists(storage_path('oauth-private.key'));
 
@@ -124,7 +125,7 @@ trait AdminDirectoryController
 
         $res['requirements_validator'] = $validator->errors();
 
-        $res['is_eligible'] = $res['open_registration'] &&
+        $res['is_eligible'] = ($res['open_registration'] || $res['curated_onboarding']) &&
             $res['oauth_enabled'] &&
             $res['activitypub_enabled'] &&
             count($res['requirements_validator']) === 0 &&
@@ -227,7 +228,7 @@ trait AdminDirectoryController
             ->each(function($name) {
                 Storage::delete($name);
             });
-            $path = $request->file('banner_image')->store('public/headers');
+            $path = $request->file('banner_image')->storePublicly('public/headers');
             $res['banner_image'] = $path;
             ConfigCacheService::put('app.banner_image', url(Storage::url($path)));
 
@@ -249,7 +250,8 @@ trait AdminDirectoryController
     {
         $reqs = [];
         $reqs['feature_config'] = [
-            'open_registration' => config_cache('pixelfed.open_registration'),
+            'open_registration' => (bool) config_cache('pixelfed.open_registration'),
+            'curated_onboarding' => (bool) config_cache('instance.curated_registration.enabled'),
             'activitypub_enabled' => config_cache('federation.activitypub.enabled'),
             'oauth_enabled' => config_cache('pixelfed.oauth_enabled'),
             'media_types' => Str::of(config_cache('pixelfed.media_types'))->explode(','),
@@ -265,7 +267,8 @@ trait AdminDirectoryController
         ];
 
         $validator = Validator::make($reqs['feature_config'], [
-            'open_registration' => 'required|accepted',
+            'open_registration' => 'required_unless:curated_onboarding,true',
+            'curated_onboarding' => 'required_unless:open_registration,true',
             'activitypub_enabled' => 'required|accepted',
             'oauth_enabled' => 'required|accepted',
             'media_types' => [

+ 5 - 4
app/Http/Controllers/PixelfedDirectoryController.php

@@ -78,10 +78,11 @@ class PixelfedDirectoryController extends Controller
             $res['community_guidelines'] = json_decode($guidelines->v, true);
         }
 
-        $openRegistration = ConfigCache::whereK('pixelfed.open_registration')->first();
-        if($openRegistration) {
-            $res['open_registration'] = (bool) $openRegistration;
-        }
+        $openRegistration = (bool) config_cache('pixelfed.open_registration');
+        $res['open_registration'] = $openRegistration;
+
+        $curatedOnboarding = (bool) config_cache('instance.curated_registration.enabled');
+        $res['curated_onboarding'] = $curatedOnboarding;
 
         $oauthEnabled = ConfigCache::whereK('pixelfed.oauth_enabled')->first();
         if($oauthEnabled) {

+ 19 - 6
resources/assets/components/admin/AdminDirectory.vue

@@ -109,12 +109,20 @@
                                             <div class="card text-left">
                                                 <div class="list-group list-group-flush">
                                                     <div class="list-group-item">
-                                                        <i
-                                                            class="far"
-                                                            :class="[ requirements.open_registration ? 'fa-check-circle text-success' : 'fa-exclamation-circle text-danger']"></i>
-                                                        <span class="ml-2 font-weight-bold">
-                                                            {{ requirements.open_registration ? 'Open' : 'Closed' }} account registration
-                                                        </span>
+                                                        <template v-if="requirements.curated_onboarding === true">
+                                                            <i class="far fa-exclamation-circle text-success"></i>
+                                                            <span class="ml-2 font-weight-bold">
+                                                                Curated account registration
+                                                            </span>
+                                                        </template>
+                                                        <template v-else>
+                                                            <i
+                                                                class="far"
+                                                                :class="[ requirements.open_registration ? 'fa-check-circle text-success' : 'fa-exclamation-circle text-danger']"></i>
+                                                            <span class="ml-2 font-weight-bold">
+                                                                {{ requirements.open_registration ? 'Open' : 'Closed' }} account registration
+                                                            </span>
+                                                        </template>
                                                     </div>
 
                                                     <div class="list-group-item">
@@ -895,6 +903,7 @@
                     activitypub_enabled: undefined,
                     open_registration: undefined,
                     oauth_enabled: undefined,
+                    curated_onboarding: undefined,
                 },
                 feature_config: [],
                 requirements_validator: [],
@@ -951,6 +960,10 @@
                         this.requirements.open_registration = res.data.open_registration;
                     }
 
+                    if(res.data.curated_onboarding) {
+                        this.requirements.curated_onboarding = res.data.curated_onboarding;
+                    }
+
                     if(res.data.oauth_enabled) {
                         this.requirements.oauth_enabled = res.data.oauth_enabled;
                     }