vendor and env first commit

This commit is contained in:
2025-03-28 08:52:46 +01:00
parent f8388bc81b
commit 8f26283832
10976 changed files with 1349952 additions and 2 deletions
@@ -0,0 +1,37 @@
<?php
namespace Vanguard\UserActivity\Http\Controllers\Api;
use Spatie\QueryBuilder\AllowedFilter;
use Spatie\QueryBuilder\QueryBuilder;
use Vanguard\Http\Controllers\Api\ApiController;
use Vanguard\UserActivity\Activity;
use Vanguard\UserActivity\Http\Requests\GetActivitiesRequest;
use Vanguard\UserActivity\Http\Resources\ActivityResource;
class ActivityController extends ApiController
{
public function __construct()
{
$this->middleware('auth');
$this->middleware('permission:users.activity');
}
/**
* Paginate user activities.
*/
public function index(GetActivitiesRequest $request): \Illuminate\Http\Resources\Json\AnonymousResourceCollection
{
$activities = QueryBuilder::for(Activity::class)
->allowedIncludes('user')
->allowedFilters([
AllowedFilter::partial('description'),
AllowedFilter::exact('user', 'user_id'),
])
->allowedSorts('created_at')
->defaultSort('-created_at')
->paginate($request->per_page ?: 20);
return ActivityResource::collection($activities);
}
}
@@ -0,0 +1,28 @@
<?php
namespace Vanguard\UserActivity\Http\Controllers\Api;
use Auth;
use Carbon\Carbon;
use Illuminate\Http\JsonResponse;
use Vanguard\Http\Controllers\Api\ApiController;
use Vanguard\UserActivity\Repositories\Activity\ActivityRepository;
class StatsController extends ApiController
{
public function __construct(private readonly ActivityRepository $activities)
{
$this->middleware('auth');
}
public function show(): JsonResponse
{
$data = $this->activities->userActivityForPeriod(
Auth::user()->id,
Carbon::now()->subWeeks(2),
Carbon::now()
);
return response()->json($data);
}
}
@@ -0,0 +1,28 @@
<?php
namespace Vanguard\UserActivity\Http\Controllers\Web;
use Illuminate\Http\Request;
use Illuminate\View\View;
use Vanguard\Http\Controllers\Controller;
use Vanguard\UserActivity\Repositories\Activity\ActivityRepository;
class ActivityController extends Controller
{
public function __construct(private readonly ActivityRepository $activities)
{
}
/**
* Displays the page with activities for all system users.
*/
public function index(Request $request): View
{
$activities = $this->activities->paginateActivities(perPage: 20, search: $request->search);
return view('user-activity::index', [
'adminView' => true,
'activities' => $activities,
]);
}
}
@@ -0,0 +1,48 @@
<?php
namespace Vanguard\UserActivity\Http\Controllers\Web;
use Illuminate\Contracts\View\View;
use Illuminate\Http\Request;
use Vanguard\Http\Controllers\Controller;
use Vanguard\User;
use Vanguard\UserActivity\Repositories\Activity\ActivityRepository;
class UserActivityController extends Controller
{
public function __construct(private readonly ActivityRepository $activities)
{
}
/**
* Displays the activity log page for specific user.
*/
public function index(User $user, Request $request): View
{
$activities = $this->activities->paginateActivitiesForUser(
userId: $user->id,
search: $request->search,
);
return view('user-activity::index', [
'user' => $user,
'adminView' => true,
'activities' => $activities,
]);
}
/**
* Display user activity log.
*/
public function show(Request $request): View
{
$user = auth()->user();
$activities = $this->activities->paginateActivitiesForUser(
userId: $user->id,
search: $request->get('search'),
);
return view('user-activity::index', compact('activities', 'user'));
}
}
@@ -0,0 +1,25 @@
<?php
namespace Vanguard\UserActivity\Http\Requests;
use Vanguard\Http\Requests\Request;
class GetActivitiesRequest extends Request
{
/**
* Get the validation rules that apply to the request.
*/
public function rules(): array
{
return [
'per_page' => 'integer|max:100',
];
}
public function messages(): array
{
return [
'per_page.max' => __('Maximum number of records per page is 100.'),
];
}
}
@@ -0,0 +1,31 @@
<?php
namespace Vanguard\UserActivity\Http\Resources;
use Illuminate\Http\Resources\Json\JsonResource;
class ActivityResource extends JsonResource
{
/**
* Transform the resource into an array.
*
* @param \Illuminate\Http\Request $request
*/
public function toArray($request): array
{
$agent = app('agent');
$agent->setUserAgent($this->resource->user_agent);
return [
'id' => (int) $this->id,
'user_id' => (int) $this->user_id,
'ip_address' => $this->ip_address,
'user_agent' => $this->user_agent,
'browser' => $agent->browser(),
'platform' => $agent->platform(),
'device' => $agent->device(),
'description' => $this->description,
'created_at' => (string) $this->created_at,
];
}
}
@@ -0,0 +1,20 @@
<?php
namespace Vanguard\UserActivity\Http\View\Composers;
use Illuminate\View\View;
use Vanguard\UserActivity\Repositories\Activity\ActivityRepository;
class ShowUserComposer
{
public function __construct(private readonly ActivityRepository $activity)
{
}
public function compose(View $view): void
{
$user = $view->getData()['user'];
$view->with('activities', $this->activity->getLatestActivitiesForUser($user->id));
}
}