[add] Feature Login with Nis
This commit is contained in:
parent
9076f69198
commit
f9d05450d9
|
@ -18,37 +18,33 @@ public function showLogin()
|
|||
}
|
||||
|
||||
/**
|
||||
* Proses login.
|
||||
* Proses login (bisa dengan Email atau NIS).
|
||||
*/
|
||||
public function login(Request $request)
|
||||
{
|
||||
// Validasi input
|
||||
$request->validate([
|
||||
'email' => 'required|email',
|
||||
'password' => 'required',
|
||||
'identifier' => 'required', // Bisa Email atau NIS
|
||||
'password' => 'required',
|
||||
]);
|
||||
|
||||
// Ambil kredensial
|
||||
$credentials = $request->only('email', 'password');
|
||||
// Coba autentikasi menggunakan Email atau NIS
|
||||
$credentials = [
|
||||
filter_var($request->identifier, FILTER_VALIDATE_EMAIL) ? 'email' : 'nis' => $request->identifier,
|
||||
'password' => $request->password,
|
||||
];
|
||||
|
||||
// Coba autentikasi menggunakan kredensial
|
||||
if (Auth::attempt($credentials)) {
|
||||
// Regenerasi session untuk menghindari session fixation
|
||||
$request->session()->regenerate();
|
||||
|
||||
// Ambil data user yang telah login
|
||||
$user = Auth::user();
|
||||
|
||||
// Redirect sesuai role user
|
||||
if ($user->role === 'admin') {
|
||||
return redirect()->route('admin.dashboard')->with('success', 'Selamat datang Admin!');
|
||||
} else {
|
||||
return redirect()->route('dashboardSantri')->with('success', 'Selamat datang Santri!');
|
||||
}
|
||||
// Redirect berdasarkan role
|
||||
return $user->role === 'admin'
|
||||
? redirect()->route('admin.dashboard')->with('success', 'Selamat datang Admin!')
|
||||
: redirect()->route('dashboardSantri')->with('success', 'Selamat datang Santri!');
|
||||
}
|
||||
|
||||
// Jika autentikasi gagal, kembalikan ke halaman login dengan error
|
||||
return back()->withErrors(['email' => 'Email / Password salah.']);
|
||||
return back()->withErrors(['identifier' => 'NIS/Email atau Password salah.']);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -76,30 +72,30 @@ public function showRegister()
|
|||
*/
|
||||
public function register(Request $request)
|
||||
{
|
||||
// Validasi input pendaftaran
|
||||
// Validasi input
|
||||
$request->validate([
|
||||
'name' => 'required|string|max:255',
|
||||
'nis' => 'required|string|max:50|unique:users,nis',
|
||||
'email' => 'required|email|unique:users,email',
|
||||
'password' => 'required|min:6',
|
||||
'jenis_kelamin' => 'required|in:Laki-laki,Perempuan',
|
||||
'asal_daerah' => 'required|in:dalamProvinsi,luarProvinsi',
|
||||
'name' => 'required|string|max:255',
|
||||
'nis' => 'required|string|max:50|unique:users,nis',
|
||||
'email' => 'required|email|unique:users,email',
|
||||
'password' => 'required|min:6',
|
||||
'jenis_kelamin' => 'required|in:Laki-laki,Perempuan',
|
||||
'asal_daerah' => 'required|in:dalamProvinsi,luarProvinsi',
|
||||
]);
|
||||
|
||||
// Buat user baru dengan role "santri"
|
||||
// Buat user baru
|
||||
$user = User::create([
|
||||
'name' => $request->name,
|
||||
'nis' => $request->nis,
|
||||
'email' => $request->email,
|
||||
'password' => Hash::make($request->password),
|
||||
'role' => 'santri',
|
||||
'jenis_kelamin' => $request->jenis_kelamin,
|
||||
'asal_daerah' => $request->asal_daerah,
|
||||
'name' => $request->name,
|
||||
'nis' => $request->nis,
|
||||
'email' => $request->email,
|
||||
'password' => Hash::make($request->password),
|
||||
'role' => 'santri',
|
||||
'jenis_kelamin' => $request->jenis_kelamin,
|
||||
'asal_daerah' => $request->asal_daerah,
|
||||
]);
|
||||
|
||||
// Login user secara otomatis
|
||||
// Login otomatis setelah register
|
||||
Auth::login($user);
|
||||
|
||||
return redirect()->route('dashboardSantri')->with('success', 'Pendaftaran Santri berhasil!');
|
||||
return redirect()->route('dashboardSantri')->with('success', 'Pendaftaran berhasil!');
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
@extends('layouts.app-none')
|
||||
@section('title', 'Login | SR Klasifikasi')
|
||||
@section('content')
|
||||
|
||||
<section class="section register min-vh-100 d-flex flex-column align-items-center justify-content-center py-4">
|
||||
<div class="container">
|
||||
<div class="row justify-content-center">
|
||||
|
@ -20,29 +21,35 @@
|
|||
|
||||
{{-- Tampilkan error jika ada --}}
|
||||
@if($errors->any())
|
||||
<div class="alert alert-danger">
|
||||
<ul>
|
||||
@foreach($errors->all() as $error)
|
||||
<li>{{ $error }}</li>
|
||||
@endforeach
|
||||
</ul>
|
||||
</div>
|
||||
<script>
|
||||
Swal.fire({
|
||||
icon: 'error',
|
||||
title: 'Oops...',
|
||||
text: "{{ $errors->first() }}",
|
||||
confirmButtonColor: '#d33'
|
||||
});
|
||||
</script>
|
||||
@endif
|
||||
|
||||
@if(session('success'))
|
||||
<div class="alert alert-success">
|
||||
{{ session('success') }}
|
||||
</div>
|
||||
<script>
|
||||
Swal.fire({
|
||||
icon: 'success',
|
||||
title: 'Berhasil!',
|
||||
text: "{{ session('success') }}",
|
||||
confirmButtonColor: '#28a745'
|
||||
});
|
||||
</script>
|
||||
@endif
|
||||
|
||||
<form class="row g-3 needs-validation" action="{{ route('login.post') }}" method="POST"
|
||||
novalidate>
|
||||
@csrf
|
||||
<div class="col-12">
|
||||
<label for="emailUser" class="form-label">Email</label>
|
||||
<label for="identifier" class="form-label">NIS / Email</label>
|
||||
<div class="input-group has-validation">
|
||||
<input type="text" name="email" class="form-control" id="emailUser" required>
|
||||
<div class="invalid-feedback">Masukkan Email Anda</div>
|
||||
<input type="text" name="identifier" class="form-control" id="identifier" required>
|
||||
<div class="invalid-feedback">Masukkan NIS atau Email Anda</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
@ -51,7 +58,6 @@
|
|||
<div class="input-group has-validation">
|
||||
<input type="password" name="password" class="form-control" id="passwordUser"
|
||||
required>
|
||||
<!-- Tombol toggle untuk show/hide password -->
|
||||
<button class="btn btn-outline-secondary" type="button" id="togglePassword">
|
||||
<i class="bx bx-show"></i>
|
||||
</button>
|
||||
|
@ -94,4 +100,5 @@
|
|||
}
|
||||
});
|
||||
</script>
|
||||
|
||||
@endsection
|
Loading…
Reference in New Issue