|
@@ -0,0 +1,52 @@
|
|
|
|
+<?php
|
|
|
|
+
|
|
|
|
+namespace App\Http\Controllers;
|
|
|
|
+
|
|
|
|
+use Illuminate\Http\Request;
|
|
|
|
+use Auth;
|
|
|
|
+use App\UserInvite;
|
|
|
|
+use Illuminate\Support\Str;
|
|
|
|
+
|
|
|
|
+class UserInviteController extends Controller
|
|
|
|
+{
|
|
|
|
+ public function __construct()
|
|
|
|
+ {
|
|
|
|
+ abort_if(!config('pixelfed.user_invites.enabled'), 404);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ public function create(Request $request)
|
|
|
|
+ {
|
|
|
|
+ abort_unless(Auth::check(), 403);
|
|
|
|
+ return view('settings.invites.create');
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ public function show(Request $request)
|
|
|
|
+ {
|
|
|
|
+ abort_unless(Auth::check(), 403);
|
|
|
|
+ $invites = UserInvite::whereUserId(Auth::id())->paginate(10);
|
|
|
|
+ $limit = config('pixelfed.user_invites.limit.total');
|
|
|
|
+ $used = UserInvite::whereUserId(Auth::id())->count();
|
|
|
|
+ return view('settings.invites.home', compact('invites', 'limit', 'used'));
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ public function store(Request $request)
|
|
|
|
+ {
|
|
|
|
+ abort_unless(Auth::check(), 403);
|
|
|
|
+ $this->validate($request, [
|
|
|
|
+ 'email' => 'required|email|unique:users|unique:user_invites',
|
|
|
|
+ 'message' => 'nullable|string|max:500',
|
|
|
|
+ 'tos' => 'required|accepted'
|
|
|
|
+ ]);
|
|
|
|
+
|
|
|
|
+ $invite = new UserInvite;
|
|
|
|
+ $invite->user_id = Auth::id();
|
|
|
|
+ $invite->profile_id = Auth::user()->profile->id;
|
|
|
|
+ $invite->email = $request->input('email');
|
|
|
|
+ $invite->message = $request->input('message');
|
|
|
|
+ $invite->key = (string) Str::uuid();
|
|
|
|
+ $invite->token = str_random(32);
|
|
|
|
+ $invite->save();
|
|
|
|
+
|
|
|
|
+ return redirect(route('settings.invites'));
|
|
|
|
+ }
|
|
|
|
+}
|