validation = $validation; $this->tokenRepository = $tokenRepository; } /** * Display a listing of requested assets. * * @author [A. Gianotto] [] * @since [v4.3.0] * * @return array */ public function requestedAssets() { $checkoutRequests = CheckoutRequest::where('user_id', '=', auth()->id())->get(); $results = array(); $show_field = array(); $showable_fields = array(); $results['total'] = $checkoutRequests->count(); $all_custom_fields = CustomField::all(); //used as a 'cache' of custom fields throughout this page load foreach ($all_custom_fields as $field) { if (($field->field_encrypted=='0') && ($field->show_in_requestable_list=='1')) { $showable_fields[] = $field->db_column_name(); } } foreach ($checkoutRequests as $checkoutRequest) { // Make sure the asset and request still exist if ($checkoutRequest && $checkoutRequest->itemRequested()) { $assets = [ 'image' => e($checkoutRequest->itemRequested()->present()->getImageUrl()), 'name' => e($checkoutRequest->itemRequested()->present()->name()), 'type' => e($checkoutRequest->itemType()), 'qty' => (int) $checkoutRequest->quantity, 'location' => ($checkoutRequest->location()) ? e($checkoutRequest->location()->name) : null, 'expected_checkin' => Helper::getFormattedDateObject($checkoutRequest->itemRequested()->expected_checkin, 'datetime'), 'request_date' => Helper::getFormattedDateObject($checkoutRequest->created_at, 'datetime'), ]; foreach ($showable_fields as $showable_field_name) { $show_field['custom_fields.'.$showable_field_name] = $checkoutRequest->itemRequested()->{$showable_field_name}; } // Merge the plain asset data and the custom fields data $results['rows'][] = array_merge($assets, $show_field); } } return $results; } /** * Delete an API token * * @author [A. Gianotto] [] * @since [v6.0.5] * * @return \Illuminate\Http\Response */ public function createApiToken(Request $request) { if (!Gate::allows('self.api')) { abort(403); } $accessTokenName = $request->input('name', 'Auth Token'); if ($accessToken = auth()->user()->createToken($accessTokenName)->accessToken) { // Get the ID so we can return that with the payload $token = DB::table('oauth_access_tokens')->where('user_id', '=', auth()->id())->where('name','=',$accessTokenName)->orderBy('created_at', 'desc')->first(); $accessTokenData['id'] = $token->id; $accessTokenData['token'] = $accessToken; $accessTokenData['name'] = $accessTokenName; return response()->json(Helper::formatStandardApiResponse('success', $accessTokenData, 'Personal access token '.$accessTokenName.' created successfully')); } return response()->json(Helper::formatStandardApiResponse('error', null, 'Token could not be created.')); } /** * Delete an API token * * @author [A. Gianotto] [] * @since [v6.0.5] * * @return \Illuminate\Http\Response */ public function deleteApiToken($tokenId) { if (!Gate::allows('self.api')) { abort(403); } $token = $this->tokenRepository->findForUser( $tokenId, auth()->user()->getAuthIdentifier() ); if (is_null($token)) { return new Response('', 404); } $token->revoke(); return new Response('', Response::HTTP_NO_CONTENT); } /** * Show user's API tokens * * @author [A. Gianotto] [] * @since [v6.0.5] * * @return \Illuminate\Http\Response */ public function showApiTokens(Request $request) { if (!Gate::allows('self.api')) { abort(403); } $tokens = $this->tokenRepository->forUser(auth()->user()->getAuthIdentifier()); $token_values = $tokens->load('client')->filter(function ($token) { return $token->client->personal_access_client && ! $token->revoked; })->values(); return response()->json(Helper::formatStandardApiResponse('success', $token_values, null)); } }