kopia lustrzana https://github.com/pixelfed/pixelfed
				
				
				
			Add user invites
							rodzic
							
								
									d127fbf290
								
							
						
					
					
						commit
						da0b3b5f1c
					
				| 
						 | 
				
			
			@ -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'));
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,15 @@
 | 
			
		|||
<?php
 | 
			
		||||
 | 
			
		||||
namespace App;
 | 
			
		||||
 | 
			
		||||
use Illuminate\Database\Eloquent\Model;
 | 
			
		||||
 | 
			
		||||
class UserInvite extends Model
 | 
			
		||||
{
 | 
			
		||||
    public function url()
 | 
			
		||||
    {
 | 
			
		||||
    	$path = '/i/invite/code';
 | 
			
		||||
    	$url = url($path, [$this->key, $this->token]);
 | 
			
		||||
    	return $url;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,39 @@
 | 
			
		|||
<?php
 | 
			
		||||
 | 
			
		||||
use Illuminate\Support\Facades\Schema;
 | 
			
		||||
use Illuminate\Database\Schema\Blueprint;
 | 
			
		||||
use Illuminate\Database\Migrations\Migration;
 | 
			
		||||
 | 
			
		||||
class CreateUserInvitesTable extends Migration
 | 
			
		||||
{
 | 
			
		||||
    /**
 | 
			
		||||
     * Run the migrations.
 | 
			
		||||
     *
 | 
			
		||||
     * @return void
 | 
			
		||||
     */
 | 
			
		||||
    public function up()
 | 
			
		||||
    {
 | 
			
		||||
        Schema::create('user_invites', function (Blueprint $table) {
 | 
			
		||||
            $table->bigIncrements('id');
 | 
			
		||||
            $table->bigInteger('user_id')->unsigned()->index();
 | 
			
		||||
            $table->bigInteger('profile_id')->unsigned()->index();
 | 
			
		||||
            $table->string('email')->unique()->index();
 | 
			
		||||
            $table->text('message')->nullable();
 | 
			
		||||
            $table->string('key');
 | 
			
		||||
            $table->string('token');
 | 
			
		||||
            $table->timestamp('valid_until')->nullable();
 | 
			
		||||
            $table->timestamp('used_at')->nullable()->index();
 | 
			
		||||
            $table->timestamps();
 | 
			
		||||
        });
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Reverse the migrations.
 | 
			
		||||
     *
 | 
			
		||||
     * @return void
 | 
			
		||||
     */
 | 
			
		||||
    public function down()
 | 
			
		||||
    {
 | 
			
		||||
        Schema::dropIfExists('user_invites');
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
		Ładowanie…
	
		Reference in New Issue