[exam] finish assign and remove

This commit is contained in:
xiaomlove
2021-04-28 01:22:25 +08:00
parent d2e05c812e
commit 034d1c23fb
16 changed files with 988 additions and 34 deletions

View File

@@ -7,6 +7,7 @@ use App\Http\Resources\ExamUserResource;
use App\Http\Resources\UserResource;
use App\Repositories\ExamRepository;
use App\Repositories\UserRepository;
use Carbon\Carbon;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
@@ -44,9 +45,13 @@ class ExamUserController extends Controller
'uid' => 'required',
];
$request->validate($rules);
$result = $this->repository->assignToUser($request->uid, $request->exam_id, $request->begin, $request->end);
$resource = new ExamResource($result);
return $this->success($resource);
$timeRange = $request->get('time_range', []);
$begin = isset($timeRange[0]) ? Carbon::parse($timeRange[0])->toDateTimeString() : null;
$end = isset($timeRange[1])? Carbon::parse($timeRange[1])->toDateTimeString() : null;
$result = $this->repository->assignToUser($request->uid, $request->exam_id, $begin, $end);
$resource = new ExamUserResource($result);
return $this->success($resource, 'Assign exam success!');
}
/**

View File

@@ -114,11 +114,13 @@ class UserController extends Controller
return $this->success($resource);
}
public function matchExams()
public function matchExams(Request $request)
{
$id = Auth::id();
$request->validate([
'uid' => 'required',
]);
$examRepository = new ExamRepository();
$result = $examRepository->listMatchExam($id);
$result = $examRepository->listMatchExam($request->uid);
$resource = ExamResource::collection($result);
return $this->success($resource);
}

View File

@@ -62,5 +62,6 @@ class Kernel extends HttpKernel
'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class,
'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class,
'permission' => \App\Http\Middleware\Permission::class,
];
}

View File

@@ -0,0 +1,31 @@
<?php
namespace App\Http\Middleware;
use App\Models\User;
use Closure;
use Illuminate\Http\Request;
use Illuminate\Validation\UnauthorizedException;
class Permission
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle(Request $request, Closure $next)
{
$user = $request->user();
$targetClass = User::CLASS_MODERATOR;
$log = sprintf('user: %s, class: %s, target class: %s', $user->id, $user->class, $targetClass);
if (!$user || $user->class < $targetClass) {
do_log("$log, denied!");
throw new UnauthorizedException('Unauthorized!');
}
do_log("$log, pass!");
return $next($request);
}
}