Anons79 Mini Shell

Directory : /home/aplikasiposinfo/www/gosepakat.id/app/Http/Controllers/
Upload File :
Current File : /home/aplikasiposinfo/www/gosepakat.id/app/Http/Controllers/AuthController.php

<?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]