ApiV1Controller.php 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  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 App\{
  10. Like,
  11. Media,
  12. Profile,
  13. Status
  14. };
  15. use League\Fractal;
  16. use App\Transformer\Api\{
  17. AccountTransformer,
  18. RelationshipTransformer,
  19. StatusTransformer,
  20. };
  21. use League\Fractal\Serializer\ArraySerializer;
  22. use League\Fractal\Pagination\IlluminatePaginatorAdapter;
  23. use App\Services\NotificationService;
  24. class ApiV1Controller extends Controller
  25. {
  26. protected $fractal;
  27. public function __construct()
  28. {
  29. $this->fractal = new Fractal\Manager();
  30. $this->fractal->setSerializer(new ArraySerializer());
  31. }
  32. public function apps(Request $request)
  33. {
  34. abort_if(!config('pixelfed.oauth_enabled'), 404);
  35. $this->validate($request, [
  36. 'client_name' => 'required',
  37. 'redirect_uris' => 'required',
  38. 'scopes' => 'nullable',
  39. 'website' => 'nullable'
  40. ]);
  41. $client = Passport::client()->forceFill([
  42. 'user_id' => null,
  43. 'name' => e($request->client_name),
  44. 'secret' => Str::random(40),
  45. 'redirect' => $request->redirect_uris,
  46. 'personal_access_client' => false,
  47. 'password_client' => false,
  48. 'revoked' => false,
  49. ]);
  50. $client->save();
  51. $res = [
  52. 'id' => $client->id,
  53. 'name' => $client->name,
  54. 'website' => null,
  55. 'redirect_uri' => $client->redirect,
  56. 'client_id' => $client->id,
  57. 'client_secret' => $client->secret,
  58. 'vapid_key' => null
  59. ];
  60. return $res;
  61. }
  62. public function accountById(Request $request, $id)
  63. {
  64. $profile = Profile::whereNull('status')->findOrFail($id);
  65. $resource = new Fractal\Resource\Item($profile, new AccountTransformer());
  66. $res = $this->fractal->createData($resource)->toArray();
  67. return response()->json($res);
  68. }
  69. }