3 namespace BookStack\Http\Controllers;
5 use BookStack\Actions\Activity;
6 use Illuminate\Http\Request;
7 use Illuminate\Support\Facades\DB;
9 class AuditLogController extends Controller
11 public function index(Request $request)
13 $this->checkPermission('settings-manage');
14 $this->checkPermission('users-manage');
17 'order' => $request->get('order', 'desc'),
18 'event' => $request->get('event', ''),
19 'sort' => $request->get('sort', 'created_at'),
20 'date_from' => $request->get('date_from', ''),
21 'date_to' => $request->get('date_to', ''),
22 'user' => $request->get('user', ''),
23 'ip' => $request->get('ip', ''),
26 $query = Activity::query()
28 'entity' => function ($query) {
29 $query->withTrashed();
33 ->orderBy($listDetails['sort'], $listDetails['order']);
35 if ($listDetails['event']) {
36 $query->where('type', '=', $listDetails['event']);
38 if ($listDetails['user']) {
39 $query->where('user_id', '=', $listDetails['user']);
42 if ($listDetails['date_from']) {
43 $query->where('created_at', '>=', $listDetails['date_from']);
45 if ($listDetails['date_to']) {
46 $query->where('created_at', '<=', $listDetails['date_to']);
48 if ($listDetails['ip']) {
49 $query->where('ip', 'like', $listDetails['ip'] . '%');
52 $activities = $query->paginate(100);
53 $activities->appends($listDetails);
55 $types = DB::table('activities')->select('type')->distinct()->pluck('type');
56 $this->setPageTitle(trans('settings.audit'));
58 return view('settings.audit', [
59 'activities' => $activities,
60 'listDetails' => $listDetails,
61 'activityTypes' => $types,