| Server IP : 13.235.167.51 / Your IP : 216.73.217.116 Web Server : Apache System : Linux machinox-server 6.17.0-1013-aws #13~24.04.1-Ubuntu SMP Fri Apr 24 21:36:58 UTC 2026 aarch64 User : root ( 0) PHP Version : 8.2.29 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : OFF Directory : /var/www/app.machinox.in/app/Http/Controllers/Admin/ |
Upload File : |
<?php
namespace App\Http\Controllers\Admin;
use App\Helpers\UserAccessHelper;
use App\Http\Controllers\Controller;
use App\Models\AdminRole;
use App\Models\AdminUser;
use App\Models\Menu;
use App\Models\Role;
use App\Models\RoleAccess;
use Illuminate\Http\Request;
use Illuminate\Http\Response;
use Illuminate\Support\Facades\Validator;
class RoleController extends Controller
{
protected $_userId;
protected $access = null;
public function __construct()
{
$this->_userId = ADMIN_USER_ID();
$this->access = UserAccessHelper::getAccess($this->_userId, UserAccessHelper::$code_manage_roles);
}
public function GetLeftMenu(Request $request)
{
$user = AdminUser::GetInfoById($this->_userId);
if (!$user) {
return $this->sendError(trans("messages.USER_INFO_NOT_FOUND"));
}
$left_menus = UserAccessHelper::getLeftMenus();
$access = UserAccessHelper::getAccessByCode($user->id, $left_menus);
$access = UserAccessHelper::HashMap($access);
$arr = [];
if (!empty($access)) {
if ($access['manage_dashboard']->can_read == 1) {
$arr[] = UserAccessHelper::getMenuObject(trans('menus.MANAGE_DASHBOARD'), $access['manage_dashboard'], "home-icon.png", "/dashboard");
}
if ($access['manage_app_user']->can_read == 1) {
$arr[] = UserAccessHelper::getMenuObject(trans('menus.MANAGE_APP_USERS'), $access['manage_app_user'], "users-icon.png", "/manage-app-user");
}
if ($access['manage_category']->can_read == 1) {
$arr[] = UserAccessHelper::getMenuObject(trans('menus.MANAGE_CATEGORY'), $access['manage_category'], "monthly_invvoice.svg", "/manage-category");
}
if ($access['manage_clients']->can_read == 1) {
$arr[] = UserAccessHelper::getMenuObject(trans('menus.MANAGE_CLIENTS'), $access['manage_clients'], "users-icon.png", "/manage-clients");
}
if ($access['manage_advertisement']->can_read == 1) {
$arr[] = UserAccessHelper::getMenuObject(trans('menus.MANAGE_ADVERTISEMENT'), $access['manage_advertisement'], "monthly_invvoice.svg", "/manage-advertisements");
}
if ($access['manage_jobs']->can_read == 1) {
$arr[] = UserAccessHelper::getMenuObject(trans('menus.MANAGE_JOBS'), $access['manage_jobs'], "users-icon.png", "/manage-jobs");
}
if (
(($access['manage_subscription'] && $access['manage_subscription']->can_read == 1) ||
($access['manage_user_subscription'] && $access['manage_user_subscription']->can_read == 1) ||
($access['manage_boost'] && $access['manage_boost']->can_read == 1) ||
($access['manage_job_seeker'] && $access['manage_job_seeker']->can_read == 1))
) {
$sub_menus = [];
$access['manage_subscription']->can_read = "1";
$objReports = UserAccessHelper::GetMenuObject(trans('menus.MANAGE_SUBSCRIPTION'), $access['manage_subscription'], "subscription.svg", "#");
if ($access['manage_user_subscription']->can_read == 1) {
$sub_menus[] = UserAccessHelper::getMenuObject(trans('menus.MANAGE_USER_SUBSCRIPTION'), $access['manage_user_subscription'], "subscription.svg", "/manage-user-subscription");
}
if ($access['manage_boost']->can_read == 1) {
$sub_menus[] = UserAccessHelper::getMenuObject(trans('menus.MANAGE_BOOST'), $access['manage_boost'], "subscription.svg", "/manage-boost");
}
if ($access['manage_job_seeker']->can_read == 1) {
$sub_menus[] = UserAccessHelper::getMenuObject(trans('menus.MANAGE_JOB_SEEKER'), $access['manage_job_seeker'], "subscription", "/manage-job-seeker");
}
$objReports->sub_menus = $sub_menus;
$arr[] = $objReports;
}
if ($access['manage_banner']->can_read == 1) {
$arr[] = UserAccessHelper::getMenuObject(trans('menus.MANAGE_BANNER'), $access['manage_banner'], "monthly_invvoice.svg", "/manage-banners");
}
if ($access['manage_machine_enquiry']->can_read == 1) {
$arr[] = UserAccessHelper::getMenuObject(trans('menus.MANAGE_MACHINE_ENQUIRY'), $access['manage_machine_enquiry'], "monthly_invvoice.svg", "/manage-machine-enquiry");
}
if ($access['manage_customer_queries']->can_read == 1) {
$arr[] = UserAccessHelper::getMenuObject(trans('menus.MANAGE_CUSTOMER_QUERIES'), $access['manage_customer_queries'], "monthly_invvoice.svg", "/manage-customer-queries");
}
if ($access['manage_transactions']->can_read == 1) {
$arr[] = UserAccessHelper::getMenuObject(trans('menus.MANAGE_TRANSACTIONS'), $access['manage_transactions'], "monthly_invvoice.svg", "/manage-transactions");
}
if ($access['manage_notification']->can_read == 1) {
$arr[] = UserAccessHelper::getMenuObject(trans('menus.MANAGE_NOTIFICATION'), $access['manage_notification'], "activity_log.svg", "/manage-notifications");
}
if (
(($access['manage_settings'] && $access['manage_settings']->can_read == 1) ||
($access['manage_role'] && $access['manage_role']->can_read == 1) ||
($access['manage_admin_user'] && $access['manage_admin_user']->can_read == 1) ||
($access['manage_cms'] && $access['manage_cms']->can_read == 1) ||
($access['manage_faqs'] && $access['manage_faqs']->can_read == 1))
) {
$sub_menus = [];
$access['manage_settings']->can_read = "1";
$objReports = UserAccessHelper::GetMenuObject(trans('menus.MANAGE_SETTINGS'), $access['manage_settings'], "settings.svg", "#");
if ($access['manage_role']->can_read == 1) {
$sub_menus[] = UserAccessHelper::getMenuObject(trans('menus.MANAGE_ROLES'), $access['manage_role'], "monthly_invvoice.svg", "/manage-roles");
}
if ($access['manage_admin_user']->can_read == 1) {
$sub_menus[] = UserAccessHelper::getMenuObject(trans('menus.MANAGE_ADMIN_USERS'), $access['manage_admin_user'], "users-icon.png", "/manage-admin-user");
}
if ($access['manage_cms']->can_read == 1) {
$sub_menus[] = UserAccessHelper::getMenuObject(trans('menus.MANAGE_CMS'), $access['manage_cms'], "monthly_invvoice.svg", "/manage-cms");
}
if ($access['manage_faqs']->can_read == 1) {
$sub_menus[] = UserAccessHelper::getMenuObject(trans('menus.MANAGE_FAQS'), $access['manage_faqs'], "monthly_invvoice.svg", "/manage-faq");
}
if ($access['manage_contact_support']->can_read == 1) {
$sub_menus[] = UserAccessHelper::getMenuObject(trans('menus.MANAGE_CONTACT_SUPPORT'), $access['manage_contact_support'], "settings.svg", "/manage-contact-support");
}
$objReports->sub_menus = $sub_menus;
$arr[] = $objReports;
}
}
return response()->json(['message' => trans('messages.OK'), 'status' => trans('messages.SUCCESS'), 'list' => $arr]);
}
public function GetRoles(Request $request)
{
$user = AdminUser::GetInfoById($this->_userId);
if (!$user) {
return $this->sendError(trans("messages.USER_INFO_NOT_FOUND"));
}
$roleIds = [];
if ($user->role) {
$roleIds[] = $user->role->id;
}
if ($this->access->can_read == 1) {
$data = Role::GetRoleList($request);
foreach ($data['list'] as $item) {
if ($item->is_editable === "Y" && in_array($item->id, $roleIds)) {
$item->is_editable = "N";
}
}
$data['access'] = $this->access;
return $this->sendSuccess(trans('messages.SUCCESS'), $data);
}
return $this->sendError(trans('messages.SOMETHING_WENT_WRONG'), ["access" => $this->access, 'list' => []]);
}
public function getMenus(Request $request, $roleId = null)
{
$user = AdminUser::GetInfoById($this->_userId);
if (!$user) {
return $this->sendError(trans("messages.USER_INFO_NOT_FOUND"));
}
$roleInfo = null;
if ($roleId > 0) {
$roleInfo = Role::getRoleInfo($roleId);
if (!$roleInfo) {
return $this->sendError(trans("messages.ROLE_INFO_NOT_FOUND"));
}
}
$list = Menu::getMenus($roleId);
if (!empty($list)) {
$response = ['list' => $list];
if ($roleInfo) {
$response = array_merge($response, [
'status' => $roleInfo->status,
'id' => $roleInfo->id,
'role_name' => $roleInfo->role_name,
'is_editable' => $roleInfo->is_editable
]);
}
return $this->sendSuccess(trans('messages.OK'), $response);
}
return $this->sendSuccess(trans('messages.RECORD_NOT_FOUND'), ['list' => []]);
}
public function setRoleAccess(Request $request, $role_id = 0)
{
$validator = Validator::make($request->all(), [
'role_name' => 'required|string',
'status' => 'required|in:ACTIVE,INACTIVE',
'role_access' => 'required|array'
]);
if ($validator->fails()) {
return $this->sendError($validator->errors()->first());
}
$user = AdminUser::GetInfoById($this->_userId);
if (!$user) {
return $this->sendError(trans("messages.USER_INFO_NOT_FOUND"));
}
$role_name = $request->input('role_name');
$status = $request->input('status');
$role_access = $request->input('role_access');
if (($this->access->can_read == 0 && $role_id == 0) || ($this->access->can_update == 0 && $role_id > 0)) {
return $this->sendError(trans("messages.YOU_DONT_HAVE_PERMISSION_TO_ACCESS_THIS_FUNCTION"));
}
$objRole = Role::checkRoleExists($role_name, $role_id);
if ($objRole) {
return $this->sendError(trans('messages.ROLE_WITH_THIS_NAME_ALREDY_EXISTS'),['name' => $role_name]);
}
if ($role_id == 0) {
$role_id = Role::addRole($role_name, $status);
} else {
Role::updateRole($role_name, $status, $role_id);
}
$arrAccess = [];
foreach ($role_access as $ra) {
$menuInfo = Menu::where('menu', $ra['menu'])->first();
if ($menuInfo) {
$arrAccess[] = [
'role_id' => $role_id,
'menu_id' => $menuInfo->id,
'can_create' => $ra['can_create'] ?? "0",
'can_read' => $ra['can_read'] ?? "0",
'can_update' => $ra['can_update'] ?? "0",
'can_delete' => $ra['can_delete'] ?? "0",
'can_print' => $ra['can_print'] ?? "0",
];
}
}
RoleAccess::DeleteRoleAccess($role_id);
RoleAccess::AssignRoleAccess($arrAccess);
return $this->sendSuccess(trans('messages.ROLE_HAS_SAVED_SUCCESSFULLY'), ["id" => $role_id]);
}
public function deleteRole(Request $request, $role_id)
{
$user = AdminUser::getInfoById($this->_userId);
if (!$user) {
return $this->sendError(trans("messages.USER_INFO_NOT_FOUND"));
}
$role_ids = [];
if ($user->user_roles) {
foreach ($user->user_roles as $userRole) {
$role_ids[] = $userRole->role->id;
}
}
if (!empty($role_ids) && in_array($role_id, $role_ids)) {
return $this->sendError("Sorry, You don't have permission to delete this role.");
}
$info = Role::getRoleInfo($role_id);
if (!$info) {
return $this->sendError(trans('messages.ROLE_NOT_FOUND'));
}
if ($info->is_editable === "N") {
return $this->sendError(trans("messages.YOU_CANT_DELETE_THIS_RECORD"));
}
$checkAssignedRole = AdminRole::where("role_id", $role_id)->count();
if ($checkAssignedRole == 0) {
RoleAccess::DeleteRoleAccess($role_id);
$info->delete();
return $this->sendSuccess(trans('messages.ROLE_HAS_DELETED_SUCCESSFULLY'));
}
return $this->sendError(trans('messages.ROLE_HAS_IN_USED'));
}
public function GetRolesForDropdown(Request $request)
{
try {
$roles = Role::where("role_type", "ADMIN")->get();
return $this->sendSuccess(trans('messages.SUCCESS'), ['list' => $roles]);
} catch (\Throwable $th) {
return $this->sendError($th->getMessage());
}
}
}