ApiV1Controller.php 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. <?php
  2. namespace App\Http\Controllers\Api;
  3. use Illuminate\Http\Request;
  4. use App\Http\Controllers\Controller;
  5. use Illuminate\Support\Str;
  6. use App\Jobs\StatusPipeline\StatusDelete;
  7. use Laravel\Passport\Passport;
  8. use Auth, Cache, DB;
  9. use Carbon\Carbon;
  10. use App\{
  11. Like,
  12. Media,
  13. Profile,
  14. Status
  15. };
  16. use App\Services\NotificationService;
  17. class ApiV1Controller extends Controller {
  18. public function apps(Request $request)
  19. {
  20. abort_if(!config('pixelfed.oauth_enabled'), 404);
  21. $this->validate($request, [
  22. 'client_name' => 'required',
  23. 'redirect_uris' => 'required',
  24. 'scopes' => 'nullable',
  25. 'website' => 'nullable'
  26. ]);
  27. $client = Passport::client()->forceFill([
  28. 'user_id' => null,
  29. 'name' => e($request->client_name),
  30. 'secret' => Str::random(40),
  31. 'redirect' => $request->redirect_uris,
  32. 'personal_access_client' => false,
  33. 'password_client' => false,
  34. 'revoked' => false,
  35. ]);
  36. $client->save();
  37. $res = [
  38. 'id' => $client->id,
  39. 'name' => $client->name,
  40. 'website' => null,
  41. 'redirect_uri' => $client->redirect,
  42. 'client_id' => $client->id,
  43. 'client_secret' => $client->secret,
  44. 'vapid_key' => null
  45. ];
  46. return $res;
  47. }
  48. }