user()); } /** * Get the state of a specific term for the user. * * @param Request $request * @param int $termId * * @return \Illuminate\Http\JsonResponse */ public function get(Request $request, $termId) { $userCompliance = auth()->user()->getStatusForCompliance($termId); if (! $userCompliance) { return $this->respondNotFound(); } return $this->respond([ 'data' => $userCompliance, ]); } /** * Get all the policies ever signed by the authenticated user. * * @param Request $request * * @return \Illuminate\Http\JsonResponse */ public function compliance(Request $request) { $terms = auth()->user()->getAllCompliances(); return $this->respond([ 'data' => $terms, ]); } /** * Sign the latest policy for the authenticated user. * * @param Request $request * * @return \Illuminate\Http\JsonResponse */ public function set(Request $request) { $validator = Validator::make($request->all(), [ 'ip_address' => 'required', ]); if ($validator->fails()) { return $this->respondValidatorFailed($validator); } // Create the contact try { $term = auth()->user()->acceptPolicy($request->get('ip_address')); } catch (QueryException $e) { return $this->respondInvalidQuery(); } $userCompliance = auth()->user()->getStatusForCompliance($term->id); return $this->respond([ 'data' => $userCompliance, ]); } }