| 
									
										
										
										
											2020-09-19 19:06:45 +08:00
										 |  |  | <?php | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-05-18 00:56:55 +08:00
										 |  |  | namespace BookStack\Activity\Controllers; | 
					
						
							| 
									
										
										
										
											2020-09-19 19:06:45 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-05-18 00:56:55 +08:00
										 |  |  | use BookStack\Activity\ActivityType; | 
					
						
							|  |  |  | use BookStack\Activity\Models\Activity; | 
					
						
							| 
									
										
										
										
											2023-05-19 03:53:39 +08:00
										 |  |  | use BookStack\Http\Controller; | 
					
						
							| 
									
										
										
										
											2022-10-31 04:24:08 +08:00
										 |  |  | use BookStack\Util\SimpleListOptions; | 
					
						
							| 
									
										
										
										
											2020-09-19 19:06:45 +08:00
										 |  |  | use Illuminate\Http\Request; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class AuditLogController extends Controller | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     public function index(Request $request) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         $this->checkPermission('settings-manage'); | 
					
						
							|  |  |  |         $this->checkPermission('users-manage'); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-10-31 04:24:08 +08:00
										 |  |  |         $sort = $request->get('sort', 'activity_date'); | 
					
						
							|  |  |  |         $order = $request->get('order', 'desc'); | 
					
						
							|  |  |  |         $listOptions = (new SimpleListOptions('', $sort, $order))->withSortOptions([ | 
					
						
							|  |  |  |             'created_at' => trans('settings.audit_table_date'), | 
					
						
							|  |  |  |             'type' => trans('settings.audit_table_event'), | 
					
						
							|  |  |  |         ]); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         $filters = [ | 
					
						
							| 
									
										
										
										
											2021-06-26 23:23:15 +08:00
										 |  |  |             'event'     => $request->get('event', ''), | 
					
						
							| 
									
										
										
										
											2020-09-19 19:06:45 +08:00
										 |  |  |             'date_from' => $request->get('date_from', ''), | 
					
						
							| 
									
										
										
										
											2021-06-26 23:23:15 +08:00
										 |  |  |             'date_to'   => $request->get('date_to', ''), | 
					
						
							|  |  |  |             'user'      => $request->get('user', ''), | 
					
						
							| 
									
										
										
										
											2021-11-26 13:08:04 +08:00
										 |  |  |             'ip'        => $request->get('ip', ''), | 
					
						
							| 
									
										
										
										
											2020-09-19 19:06:45 +08:00
										 |  |  |         ]; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         $query = Activity::query() | 
					
						
							| 
									
										
										
										
											2020-11-06 20:54:39 +08:00
										 |  |  |             ->with([ | 
					
						
							| 
									
										
										
										
											2024-05-04 23:28:18 +08:00
										 |  |  |                 'loggable' => fn ($query) => $query->withTrashed(), | 
					
						
							| 
									
										
										
										
											2021-06-26 23:23:15 +08:00
										 |  |  |                 'user', | 
					
						
							| 
									
										
										
										
											2020-11-06 20:54:39 +08:00
										 |  |  |             ]) | 
					
						
							| 
									
										
										
										
											2022-10-31 04:24:08 +08:00
										 |  |  |             ->orderBy($listOptions->getSort(), $listOptions->getOrder()); | 
					
						
							| 
									
										
										
										
											2020-09-19 19:06:45 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-10-31 04:24:08 +08:00
										 |  |  |         if ($filters['event']) { | 
					
						
							|  |  |  |             $query->where('type', '=', $filters['event']); | 
					
						
							| 
									
										
										
										
											2020-09-19 19:06:45 +08:00
										 |  |  |         } | 
					
						
							| 
									
										
										
										
											2022-10-31 04:24:08 +08:00
										 |  |  |         if ($filters['user']) { | 
					
						
							|  |  |  |             $query->where('user_id', '=', $filters['user']); | 
					
						
							| 
									
										
										
										
											2021-03-21 23:04:32 +08:00
										 |  |  |         } | 
					
						
							| 
									
										
										
										
											2020-09-19 19:06:45 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-10-31 04:24:08 +08:00
										 |  |  |         if ($filters['date_from']) { | 
					
						
							|  |  |  |             $query->where('created_at', '>=', $filters['date_from']); | 
					
						
							| 
									
										
										
										
											2020-09-19 19:06:45 +08:00
										 |  |  |         } | 
					
						
							| 
									
										
										
										
											2022-10-31 04:24:08 +08:00
										 |  |  |         if ($filters['date_to']) { | 
					
						
							|  |  |  |             $query->where('created_at', '<=', $filters['date_to']); | 
					
						
							| 
									
										
										
										
											2020-09-19 19:06:45 +08:00
										 |  |  |         } | 
					
						
							| 
									
										
										
										
											2022-10-31 04:24:08 +08:00
										 |  |  |         if ($filters['ip']) { | 
					
						
							|  |  |  |             $query->where('ip', 'like', $filters['ip'] . '%'); | 
					
						
							| 
									
										
										
										
											2021-11-26 13:08:04 +08:00
										 |  |  |         } | 
					
						
							| 
									
										
										
										
											2020-09-19 19:06:45 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  |         $activities = $query->paginate(100); | 
					
						
							| 
									
										
										
										
											2022-10-31 04:24:08 +08:00
										 |  |  |         $activities->appends($request->all()); | 
					
						
							| 
									
										
										
										
											2020-09-19 19:06:45 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-10-31 04:24:08 +08:00
										 |  |  |         $types = ActivityType::all(); | 
					
						
							| 
									
										
										
										
											2020-09-19 19:06:45 +08:00
										 |  |  |         $this->setPageTitle(trans('settings.audit')); | 
					
						
							| 
									
										
										
										
											2021-06-26 23:23:15 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-09-19 19:06:45 +08:00
										 |  |  |         return view('settings.audit', [ | 
					
						
							| 
									
										
										
										
											2021-06-26 23:23:15 +08:00
										 |  |  |             'activities'    => $activities, | 
					
						
							| 
									
										
										
										
											2022-10-31 04:24:08 +08:00
										 |  |  |             'filters'       => $filters, | 
					
						
							|  |  |  |             'listOptions'   => $listOptions, | 
					
						
							| 
									
										
										
										
											2020-11-08 08:03:19 +08:00
										 |  |  |             'activityTypes' => $types, | 
					
						
							| 
									
										
										
										
											2020-09-19 19:06:45 +08:00
										 |  |  |         ]); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | } |