/** * @param $request * @param Closure $next * @param $permission * * @return mixed */ public function handle($request, Closure $next, $permission) { $token = JWTAuth::getToken(); if (!$token) { return Response::apiResponse(['httpCode' => 400, 'message' => 'Token não encontrado ou inválido.']); } try { $user = $this->auth->authenticate($token); } catch (TokenExpiredException $e) { return Response::apiResponse(['httpCode' => 400, 'message' => 'O token de acesso expirou.']); } catch (JWTException $e) { return Response::apiResponse(['httpCode' => 400, 'message' => 'Token inválido.']); } if (!$user) { return Response::apiResponse(['httpCode' => 404, 'message' => 'Usuário não encontrado.']); } if (!$user->hasRole(explode('|', $permission))) { return Response::apiResponse(['httpCode' => 401, 'message' => 'Acesso não autorizado.']); } $this->events->fire('tymon.jwt.valid', $user); return $next($request); }
/** * Remove uma entidade específica. * * @param int $id Id da entidade que deve ser removida * * @return \Illuminate\Http\Response */ public function destroy($id) { try { $wasSuccessful = $this->repository->delete($id); return Response::apiResponse(['data' => $wasSuccessful]); } catch (\Exception $e) { return Response::apiResponse(['httpCode' => 400, 'message' => $e->getMessage()]); } }