3 namespace BookStack\Activity\Controllers;
5 use BookStack\Activity\ActivityType;
6 use BookStack\Activity\Models\Activity;
7 use BookStack\Http\Controller;
8 use BookStack\Sorting\SortUrl;
9 use BookStack\Util\SimpleListOptions;
10 use Illuminate\Http\Request;
12 class AuditLogController extends Controller
14 public function index(Request $request)
16 $this->checkPermission('settings-manage');
17 $this->checkPermission('users-manage');
19 $sort = $request->get('sort', 'activity_date');
20 $order = $request->get('order', 'desc');
21 $listOptions = (new SimpleListOptions('', $sort, $order))->withSortOptions([
22 'created_at' => trans('settings.audit_table_date'),
23 'type' => trans('settings.audit_table_event'),
27 'event' => $request->get('event', ''),
28 'date_from' => $request->get('date_from', ''),
29 'date_to' => $request->get('date_to', ''),
30 'user' => $request->get('user', ''),
31 'ip' => $request->get('ip', ''),
34 $query = Activity::query()
36 'loggable' => fn ($query) => $query->withTrashed(),
39 ->orderBy($listOptions->getSort(), $listOptions->getOrder());
41 if ($filters['event']) {
42 $query->where('type', '=', $filters['event']);
44 if ($filters['user']) {
45 $query->where('user_id', '=', $filters['user']);
48 if ($filters['date_from']) {
49 $query->where('created_at', '>=', $filters['date_from']);
51 if ($filters['date_to']) {
52 $query->where('created_at', '<=', $filters['date_to']);
55 $query->where('ip', 'like', $filters['ip'] . '%');
58 $activities = $query->paginate(100);
59 $activities->appends($request->all());
61 $types = ActivityType::all();
62 $this->setPageTitle(trans('settings.audit'));
64 return view('settings.audit', [
65 'activities' => $activities,
66 'filters' => $filters,
67 'listOptions' => $listOptions,
68 'activityTypes' => $types,
69 'filterSortUrl' => new SortUrl('settings/audit', array_filter($request->except('page')))