289 lines
9.1 KiB
PHP
Executable File
289 lines
9.1 KiB
PHP
Executable File
<?php
|
|
|
|
namespace App\Http\Controllers;
|
|
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Http\Response;
|
|
use Illuminate\Support\Facades\DB;
|
|
use Illuminate\Support\Facades\Hash;
|
|
use Validator;
|
|
use App\Responses;
|
|
use App\Helper;
|
|
use App\Models\Users;
|
|
use App\Models\Clients;
|
|
use App\Models\Vehicles;
|
|
use App\Models\Banks;
|
|
use App\Models\UsersMenuPermissions;
|
|
use Spatie\Permission\PermissionRegistrar;
|
|
use Illuminate\Support\Facades\Auth;
|
|
use App\Models\UserLogs;
|
|
|
|
class RolesController extends Controller
|
|
{
|
|
public function view(Request $req)
|
|
{
|
|
$permissions = \Spatie\Permission\Models\Permission::all();
|
|
|
|
$data = [
|
|
"roles" => Users::listRoles($req->auth->role),
|
|
"pernus" => UsersMenuPermissions::listPermissionsMenus([
|
|
"is_active" => UsersMenuPermissions::IS_ACTIVE,
|
|
]),
|
|
"vehicles" => Vehicles::getVehicles(),
|
|
"banks" => Banks::listBanks(["is_active" => Banks::IS_ACTIVE]),
|
|
"permission" => $permissions->groupBy(function ($perm) {
|
|
return explode(".", $perm->name)[0];
|
|
}),
|
|
];
|
|
|
|
$log = [
|
|
"module" => "Role",
|
|
"action" => "View",
|
|
"desc" => "Open Role menu",
|
|
];
|
|
UserLogs::insert(Auth::user()->id, $log);
|
|
|
|
return view("menu_v1.roles", $data);
|
|
}
|
|
|
|
public function api_list(Request $req)
|
|
{
|
|
try {
|
|
$list = DB::table("roles")->get();
|
|
foreach ($list as $key => $row) {
|
|
$list[$key]->DT_RowIndex = $key + 1;
|
|
$list[$key]->count_trx = 0;
|
|
$list[$key]->action = "-";
|
|
}
|
|
|
|
$apiResp = Responses::success("success list users");
|
|
$apiResp["data"] = $list;
|
|
$apiResp["count"] = count($list);
|
|
return new Response($apiResp, $apiResp["meta"]["code"]);
|
|
} catch (\Exception $e) {
|
|
$apiResp = Responses::error($e->getMessage());
|
|
return new Response($apiResp, $apiResp["meta"]["code"]);
|
|
}
|
|
}
|
|
|
|
public function api_show(Request $req, $uid)
|
|
{
|
|
try {
|
|
$input = ["uid" => $uid];
|
|
$rulesInput = ["uid" => "required|integer|not_in:0"];
|
|
|
|
$isValidInput = Validator::make($input, $rulesInput);
|
|
if (!$isValidInput->passes()) {
|
|
$apiResp = Responses::bad_input($isValidInput->messages()->first());
|
|
return new Response($apiResp, $apiResp["meta"]["code"]);
|
|
}
|
|
|
|
$role = DB::table("roles")
|
|
->where("roles.id", $uid)
|
|
->get();
|
|
if (count($role) < 1) {
|
|
$apiResp = Responses::not_found("role not found");
|
|
return new Response($apiResp, $apiResp["meta"]["code"]);
|
|
}
|
|
|
|
$permissions = DB::table("role_has_permissions")
|
|
->where("role_id", $uid)
|
|
->pluck("permission_id")
|
|
->toArray();
|
|
$role[0]->permissions = $permissions;
|
|
|
|
$apiResp = Responses::success("success get detail role");
|
|
$apiResp["data"] = $role[0];
|
|
return new Response($apiResp, $apiResp["meta"]["code"]);
|
|
} catch (\Exception $e) {
|
|
$apiResp = Responses::error($e->getMessage());
|
|
return new Response($apiResp, $apiResp["meta"]["code"]);
|
|
}
|
|
}
|
|
|
|
public function api_add(Request $req)
|
|
{
|
|
try {
|
|
DB::beginTransaction();
|
|
|
|
$role_id = DB::table("roles")->insertGetId([
|
|
"name" => $req->name,
|
|
"guard_name" => "web",
|
|
"created_at" => now(),
|
|
"updated_at" => now(),
|
|
]);
|
|
|
|
$role_has_permissions = [];
|
|
foreach ($req->permissions as $_permission) {
|
|
$role_has_permissions[] = [
|
|
"permission_id" => $_permission,
|
|
"role_id" => $role_id,
|
|
];
|
|
}
|
|
DB::table("role_has_permissions")->insert($role_has_permissions);
|
|
|
|
DB::commit();
|
|
|
|
app()[PermissionRegistrar::class]->forgetCachedPermissions();
|
|
|
|
$apiResp = Responses::created("success add new role");
|
|
|
|
$log = [
|
|
"module" => "Role",
|
|
"action" => "Create",
|
|
"desc" => "Add new role : ".$req->name,
|
|
];
|
|
UserLogs::insert(Auth::user()->id, $log);
|
|
|
|
return new Response($apiResp, $apiResp["meta"]["code"]);
|
|
} catch (\Exception $e) {
|
|
DB::rollBack();
|
|
$apiResp = Responses::error($e->getMessage());
|
|
return new Response($apiResp, $apiResp["meta"]["code"]);
|
|
}
|
|
}
|
|
|
|
public function api_edit(Request $req)
|
|
{
|
|
try {
|
|
DB::beginTransaction();
|
|
|
|
DB::table("roles")
|
|
->where("id", $req->uid)
|
|
->update([
|
|
"name" => $req->name,
|
|
"updated_at" => now(),
|
|
]);
|
|
|
|
DB::table("role_has_permissions")
|
|
->where("role_id", $req->uid)
|
|
->delete();
|
|
|
|
$role_has_permissions = [];
|
|
foreach ($req->permissions as $pid) {
|
|
$role_has_permissions[] = [
|
|
"role_id" => $req->uid,
|
|
"permission_id" => $pid,
|
|
];
|
|
}
|
|
DB::table("role_has_permissions")->insert($role_has_permissions);
|
|
|
|
DB::commit();
|
|
|
|
app()[PermissionRegistrar::class]->forgetCachedPermissions();
|
|
|
|
$apiResp = Responses::created("success update role");
|
|
|
|
$log = [
|
|
"module" => "Role",
|
|
"action" => "Update",
|
|
"desc" => "Update role : ".$req->name,
|
|
];
|
|
UserLogs::insert(Auth::user()->id, $log);
|
|
return new Response($apiResp, $apiResp["meta"]["code"]);
|
|
} catch (\Exception $e) {
|
|
DB::rollBack();
|
|
$apiResp = Responses::error($e->getMessage());
|
|
return new Response($apiResp, $apiResp["meta"]["code"]);
|
|
}
|
|
}
|
|
|
|
public function api_del(Request $req)
|
|
{
|
|
try {
|
|
$input = ["uid" => $req->uid];
|
|
$rulesInput = ["uid" => "required|integer|not_in:0"];
|
|
|
|
$isValidInput = Validator::make($input, $rulesInput);
|
|
if (!$isValidInput->passes()) {
|
|
$apiResp = Responses::bad_input($isValidInput->messages()->first());
|
|
return new Response($apiResp, $apiResp["meta"]["code"]);
|
|
}
|
|
|
|
$role = DB::table("roles")
|
|
->where("id", $req->uid)
|
|
->get();
|
|
if (count($role) < 1) {
|
|
$apiResp = Responses::not_found("role not found");
|
|
return new Response($apiResp, $apiResp["meta"]["code"]);
|
|
}
|
|
|
|
DB::beginTransaction();
|
|
|
|
DB::table("role_has_permissions")
|
|
->where("role_id", $req->uid)
|
|
->delete();
|
|
DB::table("roles")
|
|
->where("id", $req->uid)
|
|
->delete();
|
|
|
|
DB::commit();
|
|
|
|
app()[PermissionRegistrar::class]->forgetCachedPermissions();
|
|
|
|
$apiResp = Responses::created("success delete role");
|
|
|
|
$log = [
|
|
"module" => "Role",
|
|
"action" => "Delete",
|
|
"desc" => "Delete role : ".$role[0]->name,
|
|
];
|
|
UserLogs::insert(Auth::user()->id, $log);
|
|
return new Response($apiResp, $apiResp["meta"]["code"]);
|
|
} catch (\Exception $e) {
|
|
DB::rollBack();
|
|
$apiResp = Responses::error($e->getMessage());
|
|
return new Response($apiResp, $apiResp["meta"]["code"]);
|
|
}
|
|
}
|
|
|
|
public function api_search(Request $req)
|
|
{
|
|
try {
|
|
DB::beginTransaction();
|
|
|
|
$roles = Users::arrRoles();
|
|
$input = [
|
|
"name" => $req->name,
|
|
"roles" => $req->roles,
|
|
];
|
|
$rulesInput = [
|
|
"name" => "required|string|max:125",
|
|
"roles" => "nullable|integer|not_in:0",
|
|
];
|
|
|
|
$isValidInput = Validator::make($input, $rulesInput);
|
|
if (!$isValidInput->passes()) {
|
|
$apiResp = Responses::bad_input($isValidInput->messages()->first());
|
|
return new Response($apiResp, $apiResp["meta"]["code"]);
|
|
}
|
|
|
|
if ($req->roles && !in_array($req->roles, $roles)) {
|
|
$apiResp = Responses::bad_request("role not valid");
|
|
return new Response($apiResp, $apiResp["meta"]["code"]);
|
|
}
|
|
|
|
$users = $req->roles ? Users::likeName($req->name, $req->roles) : Users::likeName($req->name);
|
|
|
|
if (count($users) < 1) {
|
|
$apiResp = Responses::not_found("user not found");
|
|
return new Response($apiResp, $apiResp["meta"]["code"]);
|
|
}
|
|
|
|
foreach ($users as $k => $v) {
|
|
unset($users[$k]->password);
|
|
}
|
|
|
|
DB::commit();
|
|
|
|
$apiResp = Responses::success("success search user by name");
|
|
$apiResp["data"] = $users;
|
|
return new Response($apiResp, $apiResp["meta"]["code"]);
|
|
} catch (\Exception $e) {
|
|
DB::rollBack();
|
|
$apiResp = Responses::error($e->getMessage());
|
|
return new Response($apiResp, $apiResp["meta"]["code"]);
|
|
}
|
|
}
|
|
}
|