diff --git a/app/Http/Controllers/Settings/SecurityController.php b/app/Http/Controllers/Settings/SecurityController.php index 2132347..0554d48 100644 --- a/app/Http/Controllers/Settings/SecurityController.php +++ b/app/Http/Controllers/Settings/SecurityController.php @@ -4,44 +4,18 @@ use App\Http\Controllers\Controller; use App\Http\Requests\Settings\PasswordUpdateRequest; -use App\Http\Requests\Settings\TwoFactorAuthenticationRequest; use Illuminate\Http\RedirectResponse; -use Illuminate\Routing\Controllers\HasMiddleware; -use Illuminate\Routing\Controllers\Middleware; use Inertia\Inertia; use Inertia\Response; -use Laravel\Fortify\Features; -class SecurityController extends Controller implements HasMiddleware +class SecurityController extends Controller { - /** - * Get the middleware that should be assigned to the controller. - */ - public static function middleware(): array - { - return Features::canManageTwoFactorAuthentication() - && Features::optionEnabled(Features::twoFactorAuthentication(), 'confirmPassword') - ? [new Middleware('password.confirm', only: ['edit'])] - : []; - } - /** * Show the user's security settings page. */ - public function edit(TwoFactorAuthenticationRequest $request): Response + public function edit(): Response { - $props = [ - 'canManageTwoFactor' => Features::canManageTwoFactorAuthentication(), - ]; - - if (Features::canManageTwoFactorAuthentication()) { - $request->ensureStateIsValid(); - - $props['twoFactorEnabled'] = $request->user()->hasEnabledTwoFactorAuthentication(); - $props['requiresConfirmation'] = Features::optionEnabled(Features::twoFactorAuthentication(), 'confirm'); - } - - return Inertia::render('settings/security', $props); + return Inertia::render('settings/security'); } /** diff --git a/resources/js/pages/settings/security.tsx b/resources/js/pages/settings/security.tsx index 6bcf001..f1b5a31 100644 --- a/resources/js/pages/settings/security.tsx +++ b/resources/js/pages/settings/security.tsx @@ -1,64 +1,25 @@ import SecurityController from '@/actions/App/Http/Controllers/Settings/SecurityController'; import PasswordInput from '@/components/password-input'; -import TwoFactorRecoveryCodes from '@/components/two-factor-recovery-codes'; -import TwoFactorSetupModal from '@/components/two-factor-setup-modal'; import { Button } from '@/components/ui/button'; import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card'; import { Field, FieldError } from "@/components/ui/field"; import { Label } from '@/components/ui/label'; -import { useTwoFactorAuth } from '@/hooks/use-two-factor-auth'; import { edit } from '@/routes/security'; -import { disable, enable } from '@/routes/two-factor'; import { Head, useForm } from '@inertiajs/react'; -import { Loader, Save, ShieldCheck } from 'lucide-react'; -import { useEffect, useRef, useState } from 'react'; +import { Loader, Save } from 'lucide-react'; +import { useRef } from 'react'; import { toast } from 'sonner'; -type Props = { - canManageTwoFactor?: boolean; - requiresConfirmation?: boolean; - twoFactorEnabled?: boolean; -}; - -export default function Security({ - canManageTwoFactor = false, - requiresConfirmation = false, - twoFactorEnabled = false, -}: Props) { +export default function Security() { const passwordInput = useRef(null); const currentPasswordInput = useRef(null); - const { - qrCodeSvg, - hasSetupData, - manualSetupKey, - clearSetupData, - clearTwoFactorAuthData, - fetchSetupData, - recoveryCodesList, - fetchRecoveryCodes, - errors: tfaErrors, - } = useTwoFactorAuth(); - const [showSetupModal, setShowSetupModal] = useState(false); - const prevTwoFactorEnabled = useRef(twoFactorEnabled); - const { data, setData, put, processing, errors, reset } = useForm({ current_password: '', password: '', password_confirmation: '', }); - const { post: postEnable, processing: processingEnable } = useForm({}); - const { post: postDisable, processing: processingDisable } = useForm({}); - - useEffect(() => { - if (prevTwoFactorEnabled.current && !twoFactorEnabled) { - clearTwoFactorAuthData(); - } - - prevTwoFactorEnabled.current = twoFactorEnabled; - }, [twoFactorEnabled, clearTwoFactorAuthData]); - const onSubmit = (e: React.FormEvent) => { e.preventDefault(); put(SecurityController.update().url, { @@ -78,18 +39,6 @@ export default function Security({ }); }; - const handleEnable2FA = (e: React.FormEvent) => { - e.preventDefault(); - postEnable(enable().url, { - onSuccess: () => setShowSetupModal(true), - }); - }; - - const handleDisable2FA = (e: React.FormEvent) => { - e.preventDefault(); - postDisable(disable().url); - }; - return (
@@ -97,131 +46,59 @@ export default function Security({

Keamanan Akun

-
-
- - - Perbarui Kata Sandi - - - - - setData('current_password', e.target.value)} - className="w-full" - autoComplete="current-password" - placeholder="Masukkan kata sandi saat ini" - /> - - + + + Perbarui Kata Sandi + + + + + setData('current_password', e.target.value)} + className="w-full" + autoComplete="current-password" + placeholder="Masukkan kata sandi saat ini" + /> + + -
- - - setData('password', e.target.value)} - placeholder="Masukkan kata sandi baru" - autoComplete="new-password" - /> - - +
+ + + setData('password', e.target.value)} + placeholder="Masukkan kata sandi baru" + autoComplete="new-password" + /> + + - - - setData('password_confirmation', e.target.value)} - placeholder="Ulangi kata sandi baru" - autoComplete="new-password" - /> - - -
- - + + + setData('password_confirmation', e.target.value)} + placeholder="Ulangi kata sandi baru" + autoComplete="new-password" + /> + + +
+
+
- - - {canManageTwoFactor && ( - - - Autentikasi Dua Faktor (2FA) - - -

- {twoFactorEnabled - ? "Anda akan diminta memasukkan PIN acak yang aman saat masuk, yang dapat Anda ambil dari aplikasi pendukung TOTP di ponsel Anda." - : "Saat Anda mengaktifkan autentikasi dua faktor, Anda akan diminta PIN aman saat masuk. PIN ini dapat diambil dari aplikasi pendukung TOTP di ponsel Anda." - } -

- - {twoFactorEnabled ? ( -
- - - -
- ) : ( -
- {hasSetupData ? ( - - ) : ( - - )} -
- )} -
-
- )} -
-
+
- - {canManageTwoFactor && ( - setShowSetupModal(false)} - requiresConfirmation={requiresConfirmation} - twoFactorEnabled={twoFactorEnabled} - qrCodeSvg={qrCodeSvg} - manualSetupKey={manualSetupKey} - clearSetupData={clearSetupData} - fetchSetupData={fetchSetupData} - errors={tfaErrors} - /> - )}
); }