import { NextResponse } from 'next/server'; import supabase from '@/lib/db'; import bcrypt from 'bcryptjs'; export async function POST(request: Request) { try { const { nip, password } = await request.json(); // Validate input if (!nip || !password) { return NextResponse.json( { error: 'NIP dan password harus diisi' }, { status: 400 } ); } // Validate password length if (password.length < 6) { return NextResponse.json( { error: 'Password minimal 6 karakter' }, { status: 400 } ); } // Check if NIP already exists in user_app table const { data: existingUsers, error: userError } = await supabase .from('user_app') .select('nip') .eq('nip', nip) .single(); if (!userError && existingUsers) { return NextResponse.json( { error: 'NIP sudah terdaftar sebagai pengguna' }, { status: 400 } ); } // Hash password const hashedPassword = await bcrypt.hash(password, 10); // Insert new user with default role 'dosen' const { data: newUser, error: insertError } = await supabase .from('user_app') .insert({ nip: nip, password: hashedPassword, role_user: 'dosen' // Default role for registration }) .select() .single(); if (insertError) { console.error('Insert error:', insertError); return NextResponse.json( { error: 'Terjadi kesalahan saat registrasi' }, { status: 500 } ); } return NextResponse.json( { message: 'Registrasi berhasil' }, { status: 201 } ); } catch (error) { console.error('Registration error:', error); return NextResponse.json( { error: 'Terjadi kesalahan saat registrasi' }, { status: 500 } ); } }