DomainController.php 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. <?php
  2. namespace App\Http\Controllers\Api;
  3. use App\Http\Controllers\Controller;
  4. use App\Http\Requests\StoreDomainRequest;
  5. use App\Http\Requests\UpdateDomainRequest;
  6. use App\Http\Resources\DomainResource;
  7. use App\Models\Domain;
  8. class DomainController extends Controller
  9. {
  10. public function __construct()
  11. {
  12. $this->middleware('throttle:6,1')->only('store');
  13. }
  14. public function index()
  15. {
  16. return DomainResource::collection(user()->domains()->with(['aliases', 'defaultRecipient'])->latest()->get());
  17. }
  18. public function show($id)
  19. {
  20. $domain = user()->domains()->findOrFail($id);
  21. return new DomainResource($domain->load(['aliases', 'defaultRecipient']));
  22. }
  23. public function store(StoreDomainRequest $request)
  24. {
  25. $domain = new Domain();
  26. $domain->domain = $request->domain;
  27. if (! $domain->checkVerification()) {
  28. return response('Verification record not found, please add the following TXT record to your domain: aa-verify=' . sha1(config('anonaddy.secret') . user()->id), 404);
  29. }
  30. user()->domains()->save($domain);
  31. $domain->markDomainAsVerified();
  32. return new DomainResource($domain->refresh()->load(['aliases', 'defaultRecipient']));
  33. }
  34. public function update(UpdateDomainRequest $request, $id)
  35. {
  36. $domain = user()->domains()->findOrFail($id);
  37. $domain->update(['description' => $request->description]);
  38. return new DomainResource($domain->refresh()->load(['aliases', 'defaultRecipient']));
  39. }
  40. public function destroy($id)
  41. {
  42. $domain = user()->domains()->findOrFail($id);
  43. $domain->delete();
  44. return response('', 204);
  45. }
  46. }