RecipientKeyController.php 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. <?php
  2. namespace App\Http\Controllers;
  3. use App\Http\Requests\UpdateRecipientKeyRequest;
  4. use App\Http\Resources\RecipientResource;
  5. class RecipientKeyController extends Controller
  6. {
  7. protected $gnupg;
  8. public function __construct()
  9. {
  10. $this->gnupg = new \gnupg();
  11. }
  12. public function update(UpdateRecipientKeyRequest $request, $id)
  13. {
  14. $recipient = user()->recipients()->findOrFail($id);
  15. $info = $this->gnupg->import($request->key_data);
  16. if (!$info || !$info['imported']) {
  17. return response('Key could not be imported', 404);
  18. }
  19. $recipient->update([
  20. 'should_encrypt' => true,
  21. 'fingerprint' => $info['fingerprint']
  22. ]);
  23. return new RecipientResource($recipient->fresh());
  24. }
  25. public function destroy($id)
  26. {
  27. $recipient = user()->recipients()->findOrFail($id);
  28. if (!$this->gnupg->deletekey($recipient->fingerprint)) {
  29. return response('Key could not be deleted', 404);
  30. }
  31. $recipient->update([
  32. 'should_encrypt' => false,
  33. 'fingerprint' => null
  34. ]);
  35. return response('', 204);
  36. }
  37. }