AliasController.php 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. <?php
  2. namespace App\Http\Controllers\Api;
  3. use App\Http\Controllers\Controller;
  4. use App\Http\Requests\StoreAliasRequest;
  5. use App\Http\Requests\UpdateAliasRequest;
  6. use App\Http\Resources\AliasResource;
  7. use Ramsey\Uuid\Uuid;
  8. class AliasController extends Controller
  9. {
  10. public function index()
  11. {
  12. return AliasResource::collection(user()->aliases()->with('recipients')->latest()->get());
  13. }
  14. public function show($id)
  15. {
  16. $alias = user()->aliases()->findOrFail($id);
  17. return new AliasResource($alias->load('recipients'));
  18. }
  19. public function store(StoreAliasRequest $request)
  20. {
  21. if (user()->hasExceededNewAliasLimit()) {
  22. return response('', 429);
  23. }
  24. $uuid = Uuid::uuid4();
  25. $alias = user()->aliases()->create([
  26. 'id' => $uuid,
  27. 'email' => $uuid . '@' . $request->domain,
  28. 'local_part' => $uuid,
  29. 'domain' => $request->domain,
  30. 'description' => $request->description
  31. ]);
  32. return new AliasResource($alias->refresh()->load('recipients'));
  33. }
  34. public function update(UpdateAliasRequest $request, $id)
  35. {
  36. $alias = user()->aliases()->findOrFail($id);
  37. $alias->update(['description' => $request->description]);
  38. return new AliasResource($alias->refresh()->load('recipients'));
  39. }
  40. public function destroy($id)
  41. {
  42. $alias = user()->aliases()->findOrFail($id);
  43. $alias->recipients()->detach();
  44. $alias->delete();
  45. return response('', 204);
  46. }
  47. }