FollowerController.php 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. <?php
  2. namespace App\Http\Controllers;
  3. use App\{
  4. Follower,
  5. FollowRequest,
  6. Profile,
  7. UserFilter
  8. };
  9. use Auth, Cache;
  10. use Illuminate\Http\Request;
  11. use App\Jobs\FollowPipeline\FollowPipeline;
  12. use App\Util\ActivityPub\Helpers;
  13. use App\Services\FollowerService;
  14. class FollowerController extends Controller
  15. {
  16. public function __construct()
  17. {
  18. $this->middleware('auth');
  19. }
  20. public function store(Request $request)
  21. {
  22. abort(422, 'Deprecated API Endpoint, use /api/v1/accounts/{id}/follow or /api/v1/accounts/{id}/unfollow instead.');
  23. }
  24. public function sendFollow($user, $target)
  25. {
  26. if($target->domain == null || $user->domain != null) {
  27. return;
  28. }
  29. $payload = [
  30. '@context' => 'https://www.w3.org/ns/activitystreams',
  31. 'id' => $user->permalink('#follow/'.$target->id),
  32. 'type' => 'Follow',
  33. 'actor' => $user->permalink(),
  34. 'object' => $target->permalink()
  35. ];
  36. $inbox = $target->sharedInbox ?? $target->inbox_url;
  37. Helpers::sendSignedObject($user, $inbox, $payload);
  38. }
  39. public function sendUndoFollow($user, $target)
  40. {
  41. if($target->domain == null || $user->domain != null) {
  42. return;
  43. }
  44. $payload = [
  45. '@context' => 'https://www.w3.org/ns/activitystreams',
  46. 'id' => $user->permalink('#follow/'.$target->id.'/undo'),
  47. 'type' => 'Undo',
  48. 'actor' => $user->permalink(),
  49. 'object' => [
  50. 'id' => $user->permalink('#follows/'.$target->id),
  51. 'actor' => $user->permalink(),
  52. 'object' => $target->permalink(),
  53. 'type' => 'Follow'
  54. ]
  55. ];
  56. $inbox = $target->sharedInbox ?? $target->inbox_url;
  57. Helpers::sendSignedObject($user, $inbox, $payload);
  58. }
  59. }