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::user()->id)->get(); $results = []; $results['total'] = $checkoutRequests->count(); foreach ($checkoutRequests as $checkoutRequest) { // Make sure the asset and request still exist if ($checkoutRequest && $checkoutRequest->itemRequested()) { $results['rows'][] = [ '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'), ]; } } 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::user()->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)); } }