| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- <?php
- namespace App\Http\Middleware\Board;
- use Closure;
- use Illuminate\Http\Request;
- use Illuminate\Support\Facades\Gate;
- use App\Services\BoardService;
- use App\Services\PostService;
- class PostAccess
- {
- public function handle(Request $request, Closure $next)
- {
- $code = $request->route('code');
- $postID = $request->route('postID');
- // 게시판 코드 확인
- if (!$code || !$postID) {
- abort(404);
- }
- $boardService = new BoardService();
- // 게시판 정보 조회
- $board = $boardService->find($code);
- // 게시판 존재 유무
- if (!$board->exists) {
- return alert('존재하지 않는 게시판입니다.', DIRECTORY_SEPARATOR);
- }
- // 게시판 사용 여부
- if ($board->is_display == 0) {
- return alert('더 이상 사용하지 않는 게시판입니다.', DIRECTORY_SEPARATOR);
- }
- $postService = new PostService();
- // 게시글 조회
- $post = $postService->find($postID);
- $boardIndexURL = route('board.list', $code);
- // 게시글 존재 유무
- if (!$post->exists) {
- return alert('존재하지 않는 게시글입니다.', $boardIndexURL);
- }
- // 게시판 정보 조회
- $boardMeta = $boardService->meta($board->id);
- // 보기 권한 확인
- $response = Gate::inspect('view', [$post, $boardMeta]);
- echo '<pre>';var_dump($response->denied());echo '</pre>';exit;
- if($response->denied()) {
- if($response->code() == 401) {
- return loginCheck($boardIndexURL);
- }else{
- return alert($response->message(), $boardIndexURL);
- }
- }
- // 신고 시 숨김
- if (
- $boardMeta->item('use_blame', 0)
- && $post->blame >= $boardMeta->item('blame_blind_count', 0)
- ) {
- return alert('신고 누적으로 비공개 처리되었습니다. 해당 게시글은 관리자 확인 후 이용규칙에 따라 처리됩니다.', $boardIndexURL);
- }
- // 게시글 조회 수 증가
- $postService->addHit($post);
- $request->merge([
- 'board' => $board,
- 'boardMeta' => $boardMeta,
- 'post' => $post
- ]);
- return $next($request);
- }
- }
|