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