<?php
namespace App\Http\Controllers;
use App\Mail\LupaEmail;
use App\Mail\SendEmail;
use App\Models\Input_data;
use App\Models\Instansi;
use App\Models\Master_input;
use App\Models\User;
use DateTime;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Mail;
use Illuminate\Support\Str;
use Symfony\Component\Console\Input\Input;
use Throwable;
class AuthController extends Controller
{
// Login
public function login() {
return view('auth.login');
}
public function login_post(Request $request) {
$credentials = $request->validate([
'username' => ['required'],
'password' => ['required'],
], [
'username.required' => 'Username / Email Wajib Di Isi.',
'password.required' => 'Password Wajib Di Isi.',
]);
$remember = ($request->input('me')) ? true : false;
// dd($remember);
if(Auth::guard('web')->attempt($credentials, $remember)) {
if(Auth::user()->email_verified_at != null) {
$request->session()->regenerate();
if(Auth::user()->role == "User") {
return redirect('/master-input');
} else {
return redirect('/dashboard');
}
} else {
Auth::logout();
$request->session()->invalidate();
$request->session()->regenerateToken();
return redirect('/')->with('gagal', 'Mohon Maaf Akun anda belum diverifikasi, silahkan daftar lagi!');
}
} else {
$data = [
'email' => $request->input('username'),
'password' => $request->input('password'),
];
if(Auth::guard('web')->attempt($data, $remember)) {
if(Auth::user()->email_verified_at != null) {
$request->session()->regenerate();
if(Auth::user()->role == "User") {
return redirect('/master-input');
} else {
return redirect('/dashboard');
}
} else {
Auth::logout();
$request->session()->invalidate();
$request->session()->regenerateToken();
return redirect('/login')->with('gagal', 'Mohon Maaf Akun anda belum diverifikasi, silahkan daftar lagi!');
}
}
}
return back()->with('gagal', 'Username/Password Salah');
}
// Daftar
public function daftar() {
return view('auth.daftar');
}
public function daftar_post(Request $request) {
$rules = [
'name' => 'required',
'username' => 'required|unique:users',
'email' => 'required|unique:users',
'password' => 'required',
'password_confirm' => 'required|same:password',
];
$check_user = User::where('email', $request->email)->first();
if($check_user) {
if($check_user->email_verified_at == null) {
$rules['email'] = 'required';
$rules['username'] = 'required';
}
}
$validate = $request->validate($rules, [
'name.required' => 'Nama Wajib Di Isi.',
'username.required' => 'Username Wajib Di Isi.',
'username.unique' => 'Username Telah di Pakai, Silahkan Ganti.',
'email.required' => 'Email Wajib Di Isi.',
'email.unique' => 'Email Telah di Pakai, Silahkan Ganti.',
'password.required' => 'Password Wajib Di Isi.',
'password_confirm.required' => 'Konfirmasi Password Wajib Di Isi.',
'password_confirm.same' => 'Konfirmasi Password Harus sama dengan password.',
]);
$users = User::all();
$token = Str::random(99);
foreach($users as $a) {
if($a->remember_token == $token) {
$token = Str::random(99);
}
}
if($check_user) {
if($check_user->email_verified_at == null) {
$user = User::where('email', $request->email)->update([
'name' => $request->name,
'username' => $request->username,
'email' =>$request->email,
'password' => Hash::make($request->password),
'remember_token' => $token,
'role' => "User"
]);
}
} else {
$user = new User();
$user->name = $request->name;
$user->username = $request->username;
$user->email = $request->email;
$user->password = Hash::make($request->password);
$user->remember_token = $token;
$user->role = "User";
$user->save();
}
$data = [
'name' => $request->name,
'verifikasi' => 'https://gosepakat.id/daftar/verifikasi/'.$token
// 'verifikasi' => 'http://127.0.0.1:8000/daftar/verifikasi/'.$token
];
try{
Mail::to($request->email)->send(new SendEmail($data));
return response()->json([
'message' => 'Daftar Berhasil',
// 'data' => $check,
]);
}catch(Throwable $th){
return response()->json([
'message' => 'Email Telah Dikirim',
// 'data' => $check,
]);
}
}
public function verifikasi($token) {
$currentDateTime = new DateTime('now');
$currentDate = $currentDateTime->format('Y-m-d h:i:s');
$user = User::where('remember_token', $token)->first(); // Ambil user langsung di sini
if ($user) { // Pastikan user ditemukan
if ($user->email_verified_at == null) { // Verifikasi email belum dilakukan
$user->update([
'email_verified_at' => $currentDate,
'remember_token' => null,
]);
$instansi = Instansi::create([
'nama_instansi' => null,
'kota' => null,
'kepala_dinas' => null,
'alamat' => null,
'no' => null,
'email' => null,
'user_id' => $user->id,
]);
$input_data = [
['jumlah OK dan jumlah pengurus organisasi kepemudaan dan kemasyarakatan dibuktikan dengan SK OK'], // Kategori A
['Apakah Kab/Kota memiliki PERBUP/PERWALI terkait Kepemudaan?,Apakah Kab/Kota memiliki PERBUP/PERWALI terkait RAD?'], // Kategori B
['Nilai Indeks Pembangunan Pemuda Kab/Kota berdasarkan data dari BPS'],
['Data Jumlah Wirausaha Muda dibuktikan dengan CV'],
['Data Jumlah Sentra Wirausaha Muda'],
];
$uraian = [
'ORGANISASI KEPEMUDAAN DAN KEMASYARAKATAN',
];
$kategori_mapping = [
0 => 'A',
1 => 'B',
2 => 'B',
3 => 'C',
4 => 'C',
];
for ($i = 0; $i < count($uraian); $i++) {
$data_master_input = Master_input::create([
'uraian' => $uraian[$i],
'status' => 'Tidak Ada',
'dokumen' => 'Daftar',
'keterangan' => '-',
'instansi_id' => $instansi->id,
]);
for ($u = 0; $u < count($input_data); $u++) {
$kategori = $kategori_mapping[$u];
foreach ($input_data[$u] as $aspek) {
Input_data::create([
'aspek' => $aspek,
'dokumen_terlampir' => null,
'keterangan' => '-',
'kategori' => $kategori,
'kelengkapan' => null,
'master_input_id' => $data_master_input->id,
'user_id' => $user->id,
]);
}
}
}
return redirect('/instansis/'.$user->id);
}
return redirect('/instansis/'.$user->id)->with('success', 'Email sudah diverifikasi sebelumnya.');
}
return redirect('/login')->with('success', 'Token sudah digunakan, silahkan login.');
}
public function instansi($id) {
$data["instansi"] = instansi::where('user_id', $id)->first();
if($data['instansi']->nama_intansi == null && $data['instansi']->kota == null && $data['instansi']->kepala_dinas == null && $data['instansi']->alamat == null && $data['instansi']->no == null && $data['instansi']->email == null) {
return view('auth.instansi', $data);
}
}
public function instansi_post(Request $request,$id) {
$rules = [
'nama_instansi' => 'required',
'kota' => 'required',
'kepala_dinas' => 'required',
'alamat' => 'required',
'no' => 'required',
'email' => 'required',
];
$instansi = instansi::where('id', $id)->first();
// if($request->nama_instansi != $instansi->nama_instansi) {
// $rules['nama_instansi'] = 'required|unique:instansis';
// }
if($request->no != $instansi->no) {
$rules['no'] = 'required|unique:instansis';
}
if($request->email != $instansi->email) {
$rules['email'] = 'required|unique:instansis|email:dns';
}
$validate = $request->validate($rules);
$instansi->update($validate);
return redirect('/login')->with('success', "Pendaftaran berhasil sekarang anda sudah bisa login!");
}
// Lupa Password
public function lupa_password() {
return view('auth.lupa_password');
}
public function lupa_password_post(Request $request) {
$check_user = User::where('email', $request->email)->where('email_verified_at','<>',null);
if($check_user) {
}
// $validate = $request->validate($rules, [
// 'name.required' => 'Nama Wajib Di Isi.',
// 'username.required' => 'Username Wajib Di Isi.',
// 'username.unique' => 'Username Telah di Pakai, Silahkan Ganti.',
// 'email.required' => 'Email Wajib Di Isi.',
// 'email.unique' => 'Email Telah di Pakai, Silahkan Ganti.',
// 'password.required' => 'Password Wajib Di Isi.',
// 'password_confirm.required' => 'Konfirmasi Password Wajib Di Isi.',
// 'password_confirm.same' => 'Konfirmasi Password Harus sama dengan password.',
// ]);
$users = User::all();
$token = Str::random(99);
foreach($users as $a) {
if($a->remember_token == $token) {
$token = Str::random(99);
}
}
if($check_user->count() == 0) {
return response()->json([
'message' => 'back',
// 'data' => $check,
]);
} else {
$updateData = $check_user->update([
'remember_token' => $token,
]);
$data = [
'name' => $request->email,
'verifikasi' => 'https://gosepakat.id/lupa/password/'.$token
// 'verifikasi' => 'http://127.0.0.1:8000/lupa/password/'.$token
];
Mail::to($request->email)->send(new LupaEmail($data));
return response()->json([
'message' => 'Daftar Berhasil',
// 'data' => $check,
]);
}
}
public function verifikasi_password($token) {
$data['token'] = $token;
return view('auth.ganti_password', $data);
}
public function lupa_password_edit(Request $request, $token) {
$rules = [
'password' => 'required',
'password_confirm' => 'required|same:password',
];
$user = User::where('remember_token', $token)->first();
$validate = $request->validate($rules, [
'password.required' => 'Password Wajib Di Isi.',
'password_confirm.required' => 'Konfirmasi Password Wajib Di Isi.',
'password_confirm.same' => 'Konfirmasi Password Harus sama dengan password.',
]);
$user->update([
'password' => Hash::make($request->password),
'remember_token' => null,
]);
return redirect('/login')->with('success', "Perubahan Password berhasil silahkan anda sudah bisa melakukan login!");
}
// Logout
public function logout(Request $request)
{
Auth::logout();
$request->session()->invalidate();
$request->session()->flush();
$request->session()->regenerateToken();
return redirect('/login');
}
}
Anons79 File Manager Version 1.0, Coded By Anons79
Email: [email protected]