logic fixing
This commit is contained in:
parent
d74be80085
commit
f92bfbcb4f
|
|
@ -7,10 +7,11 @@ import { cookies } from 'next/headers'
|
||||||
export async function login(prevState: any, formData: FormData) {
|
export async function login(prevState: any, formData: FormData) {
|
||||||
const username = formData.get('username') as string
|
const username = formData.get('username') as string
|
||||||
const password = formData.get('password') as string
|
const password = formData.get('password') as string
|
||||||
|
const kodeUnikNik = formData.get('kode_unik_nik') as string
|
||||||
const remember = formData.get('remember') === 'on'
|
const remember = formData.get('remember') === 'on'
|
||||||
|
|
||||||
if (!username || !password) {
|
if (!username || !password || !kodeUnikNik) {
|
||||||
return { message: 'Username and password are required' }
|
return { message: 'Username, password, dan Kode Unik / NIK wajib diisi' }
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
|
@ -23,6 +24,10 @@ export async function login(prevState: any, formData: FormData) {
|
||||||
.single()
|
.single()
|
||||||
|
|
||||||
if (petugas) {
|
if (petugas) {
|
||||||
|
if (petugas.kode_unik !== kodeUnikNik) {
|
||||||
|
return { message: 'Kode Unik tidak valid' }
|
||||||
|
}
|
||||||
|
|
||||||
// Set session/cookie for Admin
|
// Set session/cookie for Admin
|
||||||
// In a real app, use a secure session library. For this demo, simple cookies.
|
// In a real app, use a secure session library. For this demo, simple cookies.
|
||||||
const cookieStore = await cookies()
|
const cookieStore = await cookies()
|
||||||
|
|
@ -45,6 +50,10 @@ export async function login(prevState: any, formData: FormData) {
|
||||||
.single()
|
.single()
|
||||||
|
|
||||||
if (user) {
|
if (user) {
|
||||||
|
if (user.NIK !== kodeUnikNik) {
|
||||||
|
return { message: 'NIK tidak valid' }
|
||||||
|
}
|
||||||
|
|
||||||
// Set session/cookie for User
|
// Set session/cookie for User
|
||||||
const cookieStore = await cookies()
|
const cookieStore = await cookies()
|
||||||
cookieStore.set('user_session', JSON.stringify({
|
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
|
redirect('/user-dashboard') // Redirect to user dashboard
|
||||||
}
|
}
|
||||||
|
|
||||||
return { message: 'Invalid username or password' }
|
return { message: 'Username atau password salah' }
|
||||||
|
|
||||||
} catch (error: any) {
|
} catch (error: any) {
|
||||||
if (error.message === 'NEXT_REDIRECT') {
|
if (error.message === 'NEXT_REDIRECT') {
|
||||||
|
|
|
||||||
16
app/page.tsx
16
app/page.tsx
|
|
@ -135,6 +135,22 @@ export default function LoginPage() {
|
||||||
</div>
|
</div>
|
||||||
</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 justify-between">
|
||||||
<div className="flex items-center space-x-2">
|
<div className="flex items-center space-x-2">
|
||||||
<Checkbox id="remember" name="remember" className="data-[state=checked]:bg-black data-[state=checked]:border-black" />
|
<Checkbox id="remember" name="remember" className="data-[state=checked]:bg-black data-[state=checked]:border-black" />
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue