Files

94 lines
3.1 KiB
PHP
Raw Permalink Normal View History

2026-01-24 14:03:11 +00:00
<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use App\Http\Controllers\SuperController;
use App\Models\Permission;
use App\Models\User;
use Illuminate\Http\Request;
2026-02-12 10:57:01 +03:30
use App\Models\Setting;
2026-10-20 10:26:45 +03:30
use App\Services\AdminPageAccess;
2026-07-04 11:55:10 +03:30
use App\Services\SmsBilling\SmsWalletService;
2026-10-20 10:26:45 +03:30
use Symfony\Component\HttpKernel\Exception\UnprocessableEntityHttpException;
2026-01-24 14:03:11 +00:00
class UserController extends SuperController
{
public function __construct(Request $request)
{
$model = User::class;
// $with=['avatar','user_type_record'];
$with=[];
$select = ['*'];
$name_model = 'user';
$search=['name','mobile'];
$request->request->add(['active'=>1]);
parent::__construct($model, $with, $select, $name_model,null,$search);
}
2026-10-20 10:26:45 +03:30
public function store(Request $request)
{
$this->applyPageAccessInput($request, true);
return parent::store($request);
}
public function update(Request $request, $id)
{
$this->applyPageAccessInput($request, false);
return parent::update($request, $id);
}
private function applyPageAccessInput(Request $request, bool $creating): void
{
$actor = auth('user')->user();
if (!$actor instanceof User || !AdminPageAccess::hasFullAccess($actor)) {
if ($creating && $actor instanceof User) {
$request->merge(['page_access' => $actor->page_access]);
} else {
$request->replace($request->except('page_access'));
}
return;
}
if (!$request->exists('page_access')) {
return;
}
$normalized = AdminPageAccess::normalize($request->input('page_access'));
if (is_array($normalized) && !AdminPageAccess::hasAnyView($normalized)) {
throw new UnprocessableEntityHttpException('حداقل مشاهدهٔ یک صفحه را انتخاب کنید');
}
$request->merge(['page_access' => $normalized]);
}
2026-01-24 14:03:11 +00:00
public function me(){
$user = User::with($this->with)
->select($this->select)
->findOrFail(auth()->id());
// $permission = Permission::where('user_type',$user->user_type)->select('rid')->distinct('rid')->get()->pluck('rid')->toArray();
// $user['permission'] = $permission;
2026-02-12 10:57:01 +03:30
$query = Setting::query();
$settings = $query->get();
$user->settings= $settings;
2026-07-04 11:55:10 +03:30
$user->setAttribute('sms_billing_enabled', SmsWalletService::isBillingEnabled());
$user->setAttribute(
'sms_panel_access',
SmsWalletService::isBillingEnabled() && SmsWalletService::isSmsPanelSuperAdmin($user)
);
2026-01-24 14:03:11 +00:00
return response()->json($user);
}
public function updateMe(Request $request){
return parent::update($request,auth()->id());
}
public function getByUserType($user_type){
$user = User::where('user_type',$user_type)->select('id','name','mobile')->get();
return response()->json($user);
}
public function listUser(){
$user = User::select('id','name','mobile','user_type')->get();
return response()->json($user);
}
}