logic fixing

This commit is contained in:
panggilsajarey 2026-05-20 09:20:28 +07:00
parent d74be80085
commit f92bfbcb4f
2 changed files with 28 additions and 3 deletions

View File

@ -7,10 +7,11 @@ import { cookies } from 'next/headers'
export async function login(prevState: any, formData: FormData) {
const username = formData.get('username') as string
const password = formData.get('password') as string
const kodeUnikNik = formData.get('kode_unik_nik') as string
const remember = formData.get('remember') === 'on'
if (!username || !password) {
return { message: 'Username and password are required' }
if (!username || !password || !kodeUnikNik) {
return { message: 'Username, password, dan Kode Unik / NIK wajib diisi' }
}
try {
@ -23,6 +24,10 @@ export async function login(prevState: any, formData: FormData) {
.single()
if (petugas) {
if (petugas.kode_unik !== kodeUnikNik) {
return { message: 'Kode Unik tidak valid' }
}
// Set session/cookie for Admin
// In a real app, use a secure session library. For this demo, simple cookies.
const cookieStore = await cookies()
@ -45,6 +50,10 @@ export async function login(prevState: any, formData: FormData) {
.single()
if (user) {
if (user.NIK !== kodeUnikNik) {
return { message: 'NIK tidak valid' }
}
// Set session/cookie for User
const cookieStore = await cookies()
cookieStore.set('user_session', JSON.stringify({
@ -57,7 +66,7 @@ export async function login(prevState: any, formData: FormData) {
redirect('/user-dashboard') // Redirect to user dashboard
}
return { message: 'Invalid username or password' }
return { message: 'Username atau password salah' }
} catch (error: any) {
if (error.message === 'NEXT_REDIRECT') {

View File

@ -135,6 +135,22 @@ export default function LoginPage() {
</div>
</div>
<div className="space-y-2">
<Label htmlFor="kode_unik_nik" className="text-xs font-bold uppercase tracking-wider text-gray-700">Kode Unik / NIK</Label>
<div className="relative">
<div className="absolute left-3 top-2.5 text-gray-400">
<svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round"><path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"></path></svg>
</div>
<Input
id="kode_unik_nik"
name="kode_unik_nik"
placeholder="Masukkan Kode Unik / NIK"
required
className="pl-10 h-12 bg-gray-50 border-gray-200 focus:border-black focus:ring-black transition-all"
/>
</div>
</div>
<div className="flex items-center justify-between">
<div className="flex items-center space-x-2">
<Checkbox id="remember" name="remember" className="data-[state=checked]:bg-black data-[state=checked]:border-black" />