HEX
Server: LiteSpeed
System: Linux s3.sitechai.com 4.18.0-553.51.1.lve.1.el8.x86_64 #1 SMP Wed May 14 14:34:57 UTC 2025 x86_64
User: workzeni (2217)
PHP: 8.1.32
Disabled: mail, show_source, system, shell_exec, passthru, exec, eval, shell
Upload Files
File: /home/workzeni/agency-erp-05.workzenix.com/app/Http/Controllers/Auth/UserManage.php
<?php

namespace App\Http\Controllers\Auth;

use App\Http\Controllers\Controller;
use App\Models\CompanyInfo;
use Illuminate\Http\Request;
use App\Models\User;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Validator;

class UserManage extends Controller
{

    public function user_index(Request $request)
    {
        $query = User::with('company');
        if ($request->filled('agency_id')) {
            $query->where('company_id', $request->agency_id);
        }
        if ($request->filled('role')) {
            $query->where('role', $request->role);
        }
        $users = $query->get();
        $agencies = CompanyInfo::all();
        return view('role_wise.global_files.user_manage.index', compact('users', 'agencies'));
    }

    public function user_create()
    {
        $agencies = CompanyInfo::all();
        return view('role_wise.global_files.user_manage.create', compact('agencies'));
    }


    public function user_store(Request $request)
    {
        $validatedData = $request->validate([
            'company_id' => 'required|string',
            'name' => 'required|string|max:255',
            'email' => 'required|email|unique:users,email',
            'phone' => 'required|string|max:20',
            'password' => 'required|string|min:6',
            'role' => 'required|integer|in:0,1,2,3,4',
        ]);

        $user = new User();
        $user->company_id = $request->company_id;
        $user->name = $request->name;
        $user->email = $request->email;
        $user->phone = $request->phone;
        $user->password = Hash::make($request->password);
        $user->role = $request->role;
        $user->save();
        return redirect()->route('manage-user.index')->with('success', 'User created successfully.');
    }

    public function user_edit($id)
    {
        $user = User::findOrFail($id);
        $agencies = CompanyInfo::all();
        return view('role_wise.global_files.user_manage.edit', compact('user', 'agencies'));
    }

    public function user_update(Request $request, $id)
    {
        $validated = $request->validate([
            'company_id' => 'required|exists:company_infos,id',
            'name'       => 'required|string|max:255',
            'email'      => 'required|email|unique:users,email,' . $id,
            'phone'      => 'required|string|max:20',
            'password'   => 'nullable|string|min:6',
            'role'       => 'required|in:0,1,2,3,4',
        ]);

        $user = User::findOrFail($id);

        $user->company_id = $validated['company_id'];
        $user->name       = $validated['name'];
        $user->email      = $validated['email'];
        $user->phone      = $validated['phone'];
        $user->role       = $validated['role'];

        if (!empty($validated['password'])) {
            $user->password = Hash::make($validated['password']);
        }

        $user->save();
        return redirect()->route('manage-user.index')->with('success', 'User updated successfully.');
    }


    public function user_loginAs($id)
    {
        if (!in_array(Auth::user()->role, [1, 2, 3])) {
            abort(403, 'Unauthorized action.');
        }

        $user = User::findOrFail($id);

        Auth::logout();
        Auth::login($user);

        switch ($user->role) {
            case 1:
                return redirect()->route('admin.dashboard');
            case 2:
                return redirect()->route('manager.dashboard');
            case 3:
                return redirect()->route('account.dashboard');
            case 4:
                return redirect()->route('user.dashboard');
            default:
                return redirect()->route('login');
        }
    }
}