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

This commit is contained in:
Bubka 2023-03-10 16:01:23 +01:00
parent 6b6ad12bb7
commit fd6941d300
3 changed files with 68 additions and 42 deletions

View File

@ -5,6 +5,7 @@
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);

View File

@ -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 v-if="showAdminSettings" class="title is-5 has-text-grey-light">
{{ $t('settings.admin_settings') }}
</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">
<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="listUserOptions">
<li v-for="(value, option) in options" :value="value" :key="option"><b>{{option}}</b>: {{value}}</li>
<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.options) {
this.options = response.data.options
delete this.infos.options
this.showUserOptions = true
if (response.data.admin_settings) {
this.adminSettings = response.data.admin_settings
this.showAdminSettings = true
}
if (response.data.user_preferences) {
this.userPreferences = response.data.user_preferences
this.showUserPreferences = true
}
})
},

View File

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