$authMethod = ($user->system_name) ? 'system' : config('auth.method');
$activeSocialDrivers = $socialAuthService->getActiveDrivers();
+ $mfaMethods = user()->mfaValues()->get(['id', 'method'])->groupBy('method');
$this->setPageTitle(trans('settings.user_profile'));
$roles = $this->userRepo->getAllRoles();
return view('users.edit', [
'user' => $user,
'activeSocialDrivers' => $activeSocialDrivers,
+ 'mfaMethods' => $mfaMethods,
'authMethod' => $authMethod,
'roles' => $roles,
]);
</form>
</section>
+ <section class="card content-wrap auto-height">
+ <h2 class="list-heading">Multi-Factor Authentication</h2>
+ <p>
+ Setup multi-factor authentication as an extra layer of security
+ for your user account.
+ </p>
+ <div class="grid half gap-xl v-center pb-s">
+ <div>
+ @if ($mfaMethods->count() > 0)
+ <span class="text-pos">@icon('check-circle')</span>
+ @else
+ <span class="text-neg">@icon('cancel')</span>
+ @endif
+ {{ $mfaMethods->count() }} {{ $mfaMethods->count() === 1 ? 'method' : 'methods' }} configured
+ </div>
+ <div class="text-m-right">
+ @if($user->id === user()->id)
+ <a href="{{ url('/mfa/setup') }}" class="button outline">Configure Methods</a>
+ @endif
+ </div>
+ </div>
+
+ </section>
+
@if(user()->id === $user->id && count($activeSocialDrivers) > 0)
<section class="card content-wrap auto-height">
<h2 class="list-heading">{{ trans('settings.users_social_accounts') }}</h2>
$resp->assertStatus(500);
}
+ public function test_mfa_method_count_is_visible_on_user_edit_page()
+ {
+ $admin = $this->getAdmin();
+ $resp = $this->actingAs($admin)->get($admin->getEditUrl());
+ $resp->assertSee('0 methods configured');
+
+ MfaValue::upsertWithValue($admin, MfaValue::METHOD_TOTP, 'test');
+ $resp = $this->actingAs($admin)->get($admin->getEditUrl());
+ $resp->assertSee('1 method configured');
+
+ MfaValue::upsertWithValue($admin, MfaValue::METHOD_BACKUP_CODES, 'test');
+ $resp = $this->actingAs($admin)->get($admin->getEditUrl());
+ $resp->assertSee('2 methods configured');
+ }
+
+ public function test_mfa_setup_link_only_shown_when_viewing_own_user_edit_page()
+ {
+ $admin = $this->getAdmin();
+ $resp = $this->actingAs($admin)->get($admin->getEditUrl());
+ $resp->assertElementExists('a[href$="/mfa/setup"]');
+
+ $resp = $this->actingAs($admin)->get($this->getEditor()->getEditUrl());
+ $resp->assertElementNotExists('a[href$="/mfa/setup"]');
+ }
+
}
\ No newline at end of file