InstanceActor.php 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. <?php
  2. namespace App\Models;
  3. use Illuminate\Database\Eloquent\Factories\HasFactory;
  4. use Illuminate\Database\Eloquent\Model;
  5. class InstanceActor extends Model
  6. {
  7. use HasFactory;
  8. const PROFILE_BASE = '/i/actor';
  9. const KEY_ID = '/i/actor#main-key';
  10. const PROFILE_KEY = 'federation:_v3:instance:actor:profile';
  11. const PKI_PUBLIC = 'federation:_v1:instance:actor:profile:pki_public';
  12. const PKI_PRIVATE = 'federation:_v1:instance:actor:profile:pki_private';
  13. public function permalink($suffix = '')
  14. {
  15. return url(self::PROFILE_BASE . $suffix);
  16. }
  17. public function getActor()
  18. {
  19. return [
  20. '@context' => 'https://www.w3.org/ns/activitystreams',
  21. 'id' => $this->permalink(),
  22. 'type' => 'Application',
  23. 'inbox' => $this->permalink('/inbox'),
  24. 'outbox' => $this->permalink('/outbox'),
  25. 'preferredUsername' => config('pixelfed.domain.app'),
  26. 'publicKey' => [
  27. 'id' => $this->permalink('#main-key'),
  28. 'owner' => $this->permalink(),
  29. 'publicKeyPem' => $this->public_key
  30. ],
  31. 'manuallyApprovesFollowers' => true,
  32. 'url' => url('/site/kb/instance-actor')
  33. ];
  34. }
  35. }