You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
146 lines
5.2 KiB
PHP
146 lines
5.2 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers;
|
|
|
|
use App\Http\Requests\EditAdminAuthInput;
|
|
use App\Models\AdminAuth;
|
|
use App\Models\Auth;
|
|
use Login;
|
|
use Yo;
|
|
|
|
class AdminAuthController extends Controller
|
|
{
|
|
public function check()
|
|
{
|
|
$id = request()->post('id');
|
|
Login::admin($id);
|
|
return Yo::echo();
|
|
}
|
|
|
|
public function menu()
|
|
{
|
|
Login::admin(3);
|
|
$menu_group = Auth::select('id', 'name', 'title', 'icon', 'status')
|
|
->where('type', 1)->where('show', 1)->where('del', 2)
|
|
->orderBy('order', 'desc')->get();
|
|
$list = [];
|
|
foreach ($menu_group as $item) {
|
|
switch (Login::$info->admin_auth_id) {
|
|
case -1:
|
|
$auth_list = Auth::select('id', 'name', 'title', 'icon', 'status')->where('pid', $item->id)
|
|
->where('type', 2)->where('show', 1)->where('del', 2)
|
|
->orderBy('order', 'desc')->get();
|
|
break;
|
|
case 0:
|
|
$auth_list = Auth::select('id', 'name', 'title', 'icon', 'status')->where('pid', $item->id)
|
|
->where('type', 2)->where('check_type', 1)->where('show', 1)->where('del', 2)
|
|
->orderBy('order', 'desc')->get();
|
|
break;
|
|
default:
|
|
$admin_auth = AdminAuth::find(Login::$info->admin_auth_id);
|
|
$auth_ids = json_decode($admin_auth->auth_ids, true);
|
|
$auth_list = Auth::select('id', 'name', 'title', 'icon', 'status')
|
|
->where(function ($query) use ($auth_ids, $item) {
|
|
$query->whereIn('id', $auth_ids)->where('pid', $item->id)->where('type', 2)->where('check_type', 2)->where('show', 1)->where('del', 2);
|
|
})
|
|
->orWhere(function ($query) use ($auth_ids, $item) {
|
|
$query->where('type', 2)->where('pid', $item->id)->where('check_type', 1)->where('show', 1)->where('del', 2);
|
|
})
|
|
->orderBy('order', 'desc')->get();
|
|
}
|
|
if (count($auth_list) !== 0) $list[] = [
|
|
"id" => $item->id,
|
|
"name" => $item->name,
|
|
"title" => $item->title,
|
|
"icon" => $item->icon,
|
|
"status" => $item->status,
|
|
"children" => $auth_list
|
|
];
|
|
}
|
|
return Yo::echo([
|
|
'list' => $list
|
|
]);
|
|
}
|
|
|
|
public function all()
|
|
{
|
|
Login::admin(6);
|
|
$admin_auth_list = AdminAuth::select('id', 'name', 'del')->orderBy('updated_at', 'desc')->get();
|
|
return Yo::echo([
|
|
'list' => $admin_auth_list
|
|
]);
|
|
}
|
|
|
|
public function list()
|
|
{
|
|
Login::admin(5);
|
|
$admin_auth_list = AdminAuth::select('id', 'name', 'auth_ids', 'remark')->where('del', 2)->orderBy('updated_at', 'desc')->get();
|
|
$list = [];
|
|
foreach ($admin_auth_list as $item) {
|
|
$auth_ids_turn = [];
|
|
foreach (json_decode($item->auth_ids, true) as $i) {
|
|
$auth_ids_turn[] = intval($i);
|
|
}
|
|
$list[] = [
|
|
'id' => $item->id,
|
|
'name' => $item->name,
|
|
'auth_ids' => $item->auth_ids,
|
|
'auth_ids_turn' => $auth_ids_turn,
|
|
'remark' => $item->remark,
|
|
];
|
|
}
|
|
return Yo::echo([
|
|
'list' => $list
|
|
]);
|
|
}
|
|
|
|
public function delete()
|
|
{
|
|
Login::admin(5);
|
|
$ids = request()->post('ids');
|
|
AdminAuth::whereIn('id', $ids)->update([
|
|
'del' => 1
|
|
]);
|
|
return Yo::delete_echo($ids);
|
|
}
|
|
|
|
public function update(EditAdminAuthInput $request)
|
|
{
|
|
Login::admin(5);
|
|
$id = request()->post('id');
|
|
$name = $request->post('name');
|
|
$auth_ids = $request->post('auth_ids');
|
|
$remark = $request->post('remark');
|
|
$auth_ids_arr = [];
|
|
foreach ($auth_ids as $auth_id) $auth_ids_arr[] = (string)$auth_id;
|
|
$auth_ids_str = json_encode($auth_ids_arr, JSON_UNESCAPED_UNICODE);
|
|
if (mb_strlen($auth_ids_str) > 1000) Yo::error_echo(100007);
|
|
$admin_auth = AdminAuth::find($id);
|
|
if (!$admin_auth) Yo::error_echo(100008);
|
|
if ($admin_auth->del !== 2) Yo::error_echo(100008);
|
|
$admin_auth->name = $name;
|
|
$admin_auth->auth_ids = $auth_ids_str;
|
|
$admin_auth->remark = $remark ?? '';
|
|
$admin_auth->save();
|
|
return Yo::update_echo($admin_auth->id);
|
|
}
|
|
|
|
public function create(EditAdminAuthInput $request)
|
|
{
|
|
Login::admin(5);
|
|
$name = $request->post('name');
|
|
$auth_ids = $request->post('auth_ids');
|
|
$remark = $request->post('remark');
|
|
$auth_ids_arr = [];
|
|
foreach ($auth_ids as $auth_id) $auth_ids_arr[] = (string)$auth_id;
|
|
$auth_ids_str = json_encode($auth_ids_arr, JSON_UNESCAPED_UNICODE);
|
|
if (mb_strlen($auth_ids_str) > 1000) Yo::error_echo(100007);
|
|
$admin_auth = AdminAuth::create([
|
|
'name' => $name,
|
|
'auth_ids' => $auth_ids_str ?? '[]',
|
|
'remark' => $remark ?? '',
|
|
]);
|
|
return Yo::create_echo($admin_auth->id);
|
|
}
|
|
}
|