Browse Source

Update the About view and its controller to split user & admin vars

Bubka 2 years ago
parent
commit
fd6941d300

+ 31 - 21
app/Http/Controllers/SystemController.php

@@ -5,6 +5,7 @@ namespace App\Http\Controllers;
 use App\Facades\Settings;
 use App\Services\ReleaseRadarService;
 use Illuminate\Http\Request;
+use Illuminate\Support\Carbon;
 use Illuminate\Support\Facades\DB;
 
 class SystemController extends Controller
@@ -17,33 +18,42 @@ class SystemController extends Controller
     public function infos(Request $request)
     {
         $infos              = [];
-        $infos['Date']      = date(DATE_RFC2822);
-        $infos['userAgent'] = $request->header('user-agent');
+        $infos['common']['Date']      = date(DATE_RFC2822);
+        $infos['common']['userAgent'] = $request->header('user-agent');
         // App info
-        $infos['Version']      = config('2fauth.version');
-        $infos['Environment']  = config('app.env');
-        $infos['Debug']        = var_export(config('app.debug'), true);
-        $infos['Cache driver'] = config('cache.default');
-        $infos['Log channel']  = config('logging.default');
-        $infos['Log level']    = env('LOG_LEVEL');
-        $infos['DB driver']    = DB::getDriverName();
+        $infos['common']['Version']      = config('2fauth.version');
+        $infos['common']['Environment']  = config('app.env');
+        $infos['common']['Install path'] = '/' . config('2fauth.config.appSubdirectory');
+        $infos['common']['Debug']        = var_export(config('app.debug'), true);
+        $infos['common']['Cache driver'] = config('cache.default');
+        $infos['common']['Log channel']  = config('logging.default');
+        $infos['common']['Log level']    = env('LOG_LEVEL');
+        $infos['common']['DB driver']    = DB::getDriverName();
         // PHP info
-        $infos['PHP version']      = PHP_VERSION;
-        $infos['Operating system'] = PHP_OS;
-        $infos['interface']        = PHP_SAPI;
-        // Auth info
-        if ($request->user()) {
-            $infos['Auth guard'] = config('auth.defaults.guard');
-            if ($infos['Auth guard'] === 'reverse-proxy-guard') {
-                $infos['Auth proxy header for user']  = config('auth.auth_proxy_headers.user');
-                $infos['Auth proxy header for email'] = config('auth.auth_proxy_headers.email');
+        $infos['common']['PHP version']      = PHP_VERSION;
+        $infos['common']['Operating system'] = PHP_OS;
+        $infos['common']['interface']        = PHP_SAPI;
+        // Auth & Security infos
+        if (! is_null($request->user())) {
+            $infos['common']['Auth guard'] = config('auth.defaults.guard');
+            if ($infos['common']['Auth guard'] === 'reverse-proxy-guard') {
+                $infos['common']['Auth proxy logout url']       = config('2fauth.config.proxyLogoutUrl');
+                $infos['common']['Auth proxy header for user']  = config('auth.auth_proxy_headers.user');
+                $infos['common']['Auth proxy header for email'] = config('auth.auth_proxy_headers.email');
+            }
+            $infos['common']['webauthn user verification'] = config('webauthn.user_verification');
+            $infos['common']['Trusted proxies']            = config('2fauth.config.trustedProxies') ?: 'none';
+        
+            // Admin settings
+            if ($request->user()->is_admin == true) {
+                $infos['admin_settings']['useEncryption'] = Settings::get('useEncryption');
+                $infos['admin_settings']['lastRadarScan'] = Carbon::parse(Settings::get('lastRadarScan'))->format('Y-m-d H:i:s');
+                $infos['admin_settings']['checkForUpdate'] = Settings::get('CheckForUpdate');
             }
-            $infos['webauthn user verification'] = config('larapass.login_verify');
-            $infos['Trusted proxies']            = config('2fauth.trustedProxies') ?: 'none';
         }
         // User info
         if ($request->user()) {
-            $infos['options'] = Settings::all()->toArray();
+            $infos['user_preferences'] = $request->user()->preferences->toArray();
         }
 
         return response()->json($infos);

+ 35 - 20
resources/js/views/About.vue

@@ -6,7 +6,7 @@
             {{ $t('commons.2fauth_teaser')}}
         </p>
         <img class="about-logo" src="logo.svg" alt="2FAuth logo" />
-        <p class="block" :class="showUserOptions ? 'mb-5' : '' ">
+        <p class="block">
             ©Bubka <a class="is-size-7" href="https://github.com/Bubka/2FAuth/blob/master/LICENSE">AGPL-3.0 license</a>
         </p>
         <h2 class="title is-5 has-text-grey-light">
@@ -59,18 +59,27 @@
                 <li v-for="(value, key) in infos" :value="value" :key="key"><b>{{key}}</b>: {{value}}</li>
             </ul>
         </div>
-        <div v-if="showUserOptions">
-            <h2 class="title is-5 has-text-grey-light">
-                {{ $t('settings.user_options') }}
-            </h2>
-            <div class="about-debug box is-family-monospace is-size-7">
-                <button :aria-label="$t('commons.copy_to_clipboard')" class="button is-like-text is-pulled-right is-small is-text" v-clipboard="() => this.$refs.listUserOptions.innerText" v-clipboard:success="clipboardSuccessHandler">
-                    <font-awesome-icon :icon="['fas', 'copy']" />
-                </button>
-                <ul ref="listUserOptions">
-                    <li v-for="(value, option) in options" :value="value" :key="option"><b>{{option}}</b>: {{value}}</li>
-                </ul>
-            </div>
+        <h2 v-if="showAdminSettings" class="title is-5 has-text-grey-light">
+            {{ $t('settings.admin_settings') }}
+        </h2>
+        <div v-if="showAdminSettings" class="about-debug box is-family-monospace is-size-7">
+            <button :aria-label="$t('commons.copy_to_clipboard')" class="button is-like-text is-pulled-right is-small is-text" v-clipboard="() => this.$refs.listAdminSettings.innerText" v-clipboard:success="clipboardSuccessHandler">
+                <font-awesome-icon :icon="['fas', 'copy']" />
+            </button>
+            <ul ref="listAdminSettings">
+                <li v-for="(value, setting) in adminSettings" :value="value" :key="setting"><b>{{setting}}</b>: {{value}}</li>
+            </ul>
+        </div>
+        <h2 v-if="showUserPreferences" class="title is-5 has-text-grey-light">
+            {{ $t('settings.user_preferences') }}
+        </h2>
+        <div v-if="showUserPreferences" class="about-debug box is-family-monospace is-size-7">
+            <button :aria-label="$t('commons.copy_to_clipboard')" class="button is-like-text is-pulled-right is-small is-text" v-clipboard="() => this.$refs.listUserPreferences.innerText" v-clipboard:success="clipboardSuccessHandler">
+                <font-awesome-icon :icon="['fas', 'copy']" />
+            </button>
+            <ul ref="listUserPreferences">
+                <li v-for="(value, preference) in userPreferences" :value="value" :key="preference"><b>{{preference}}</b>: {{value}}</li>
+            </ul>
         </div>
         <!-- footer -->
         <vue-footer :showButtons="true">
@@ -88,19 +97,25 @@
             return {
                 pagetitle: this.$t('commons.about'),
                 infos : null,
-                options : null,
-                showUserOptions: false,
+                adminSettings : null,
+                userPreferences : null,
+                showUserPreferences: false,
+                showAdminSettings: false,
             }
         },
 
         async mounted() {
             await this.axios.get('infos').then(response => {
-                this.infos = response.data
+                this.infos = response.data.common
+
+                if (response.data.admin_settings) {
+                    this.adminSettings = response.data.admin_settings
+                    this.showAdminSettings = true
+                }
 
-                if (response.data.options) {
-                    this.options = response.data.options
-                    delete this.infos.options
-                    this.showUserOptions = true
+                if (response.data.user_preferences) {
+                    this.userPreferences = response.data.user_preferences
+                    this.showUserPreferences = true
                 }
             })
         },

+ 2 - 1
resources/lang/en/settings.php

@@ -20,7 +20,8 @@ return [
     'webauthn' => 'WebAuthn',
     'tokens' => 'Tokens',
     'options' => 'Options',
-    'user_options' => 'User options',
+    'user_preferences' => 'User preferences',
+    'admin_settings' => 'Admin settings',
     'confirm' => [
 
     ],