1
0

UserInviteController.php 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. <?php
  2. namespace App\Http\Controllers;
  3. use Illuminate\Http\Request;
  4. use Auth;
  5. use App\UserInvite;
  6. use Illuminate\Support\Str;
  7. class UserInviteController extends Controller
  8. {
  9. public function create(Request $request)
  10. {
  11. abort_if(!config('pixelfed.user_invites.enabled'), 404);
  12. abort_unless(Auth::check(), 403);
  13. return view('settings.invites.create');
  14. }
  15. public function show(Request $request)
  16. {
  17. abort_if(!config('pixelfed.user_invites.enabled'), 404);
  18. abort_unless(Auth::check(), 403);
  19. $invites = UserInvite::whereUserId(Auth::id())->paginate(10);
  20. $limit = config('pixelfed.user_invites.limit.total');
  21. $used = UserInvite::whereUserId(Auth::id())->count();
  22. return view('settings.invites.home', compact('invites', 'limit', 'used'));
  23. }
  24. public function store(Request $request)
  25. {
  26. abort_if(!config('pixelfed.user_invites.enabled'), 404);
  27. abort_unless(Auth::check(), 403);
  28. $this->validate($request, [
  29. 'email' => 'required|email|unique:users|unique:user_invites',
  30. 'message' => 'nullable|string|max:500',
  31. 'tos' => 'required|accepted'
  32. ]);
  33. $invite = new UserInvite;
  34. $invite->user_id = Auth::id();
  35. $invite->profile_id = Auth::user()->profile->id;
  36. $invite->email = $request->input('email');
  37. $invite->message = $request->input('message');
  38. $invite->key = (string) Str::uuid();
  39. $invite->token = str_random(32);
  40. $invite->save();
  41. return redirect(route('settings.invites'));
  42. }
  43. }