diff --git a/app/Http/Controllers/Api/UsersController.php b/app/Http/Controllers/Api/UsersController.php index 09dadbbd3c..7a83feef9e 100644 --- a/app/Http/Controllers/Api/UsersController.php +++ b/app/Http/Controllers/Api/UsersController.php @@ -6,6 +6,7 @@ use App\Helpers\Helper; use App\Http\Controllers\Controller; use App\Http\Requests\SaveUserRequest; use App\Http\Transformers\AccessoriesTransformer; +use App\Http\Transformers\ActionlogsTransformer; use App\Http\Transformers\AssetsTransformer; use App\Http\Transformers\ConsumablesTransformer; use App\Http\Transformers\LicensesTransformer; @@ -80,7 +81,7 @@ class UsersController extends Controller 'users.autoassign_licenses', 'users.website', - ])->with('manager', 'groups', 'userloc', 'company', 'department', 'assets', 'licenses', 'accessories', 'consumables', 'createdBy', 'managesUsers', 'managedLocations') + ])->with('manager', 'groups', 'userloc', 'company', 'department', 'assets', 'licenses', 'accessories', 'consumables', 'createdBy', 'managesUsers', 'managedLocations', 'eulas') ->withCount([ 'assets as assets_count' => function(Builder $query) { $query->withoutTrashed(); @@ -736,6 +737,23 @@ class UsersController extends Controller return (new UsersTransformer)->transformUser($request->user()); } + /** + * Display the EULAs accepted by the user. + * + * @param \App\Models\User $user + * * @param \App\Http\Transformers\ActionlogsTransformer $transformer + * * @return \Illuminate\Http\JsonResponse + *@since [v8.1.16] + * @author [Godfrey Martinez] [] + */ + public function eulas(User $user, ActionlogsTransformer $transformer) + { + $eulas = $user->eulas; + return response()->json( + $transformer->transformActionlogs($eulas, $eulas->count()) + ); + } + /** * Restore a soft-deleted user. * diff --git a/app/Http/Controllers/ViewAssetsController.php b/app/Http/Controllers/ViewAssetsController.php index 6c35ca2e05..bbff6ba4f7 100755 --- a/app/Http/Controllers/ViewAssetsController.php +++ b/app/Http/Controllers/ViewAssetsController.php @@ -39,7 +39,6 @@ class ViewAssetsController extends Controller 'consumables', 'accessories', 'licenses', - 'eulas', )->find(auth()->id()); $field_array = array(); diff --git a/app/Models/User.php b/app/Models/User.php index 5c6fc14ff0..bd24a62370 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -561,6 +561,7 @@ class User extends SnipeModel implements AuthenticatableContract, AuthorizableCo public function eulas() { return $this->hasMany(Actionlog::class, 'target_id') + ->with('item') ->where('target_type', self::class) ->where('action_type', 'accepted') ->whereNotNull('filename') diff --git a/resources/lang/en-US/general.php b/resources/lang/en-US/general.php index 54fe8a7f31..628f338c83 100644 --- a/resources/lang/en-US/general.php +++ b/resources/lang/en-US/general.php @@ -288,6 +288,7 @@ return [ 'status' => 'Status', 'accept_eula' => 'Acceptance Agreement', 'eula' => 'EULAs', + 'eula_long' => 'End-User License Agreements', 'show_or_hide_eulas' => 'Show/Hide EULAs', 'supplier' => 'Supplier', 'suppliers' => 'Suppliers', diff --git a/resources/views/account/view-assets.blade.php b/resources/views/account/view-assets.blade.php index 830b05c08c..d51e01f328 100755 --- a/resources/views/account/view-assets.blade.php +++ b/resources/views/account/view-assets.blade.php @@ -731,41 +731,28 @@ data-sort-order="asc" data-sort-name="name" class="table table-striped snipe-table table-hover" + data-url="{{route('api.user.eulas', $user->id)}}" data-export-options='{ "fileName": "export-eula-{{ str_slug($user->username) }}-{{ date('Y-m-d') }}", "ignoreColumn": ["actions","image","change","checkbox","checkincheckout","delete","purchasecost", "icon"] }'> - - {{ trans('general.consumables') }} + + {{ trans('general.eula_long') }} - {{ trans('general.name') }} - @can('self.view_purchase_cost') - {{ trans('general.purchase_cost') }} - @endcan - {{ trans('general.date') }} - {{ trans('general.notes') }} + {{ trans('admin/hardware/table.icon') }} + {{ trans('general.item') }} + {{ trans('general.accepted_date') }} + {{ trans('general.notes') }} + {{ trans('general.signature') }} + {{ trans('general.download') }} - - @foreach ($user->consumables as $consumable) - - {{ $consumable->name }} - @can('self.view_purchase_cost') - - {!! Helper::formatCurrencyOutput($consumable->purchase_cost) !!} - - @endcan - {{ Helper::getFormattedDateObject($consumable->pivot->created_at, 'datetime', false) }} - {{ $consumable->pivot->note }} - - @endforeach - - + diff --git a/routes/api.php b/routes/api.php index 8d9391d2a5..06317410a9 100644 --- a/routes/api.php +++ b/routes/api.php @@ -1094,6 +1094,14 @@ Route::group(['prefix' => 'v1', 'middleware' => ['api', 'api-throttle:api']], fu ] )->name('api.users.me'); + Route::get('/users/{user}/eulas', + [ + Api\UsersController::class, + 'eulas' + ] + )->name('api.user.eulas'); + + Route::get('list/{status?}', [ Api\UsersController::class,