diff --git a/app/Http/Controllers/Auth/RegisterController.php b/app/Http/Controllers/Auth/RegisterController.php index e48e2e3..84006fc 100644 --- a/app/Http/Controllers/Auth/RegisterController.php +++ b/app/Http/Controllers/Auth/RegisterController.php @@ -3,69 +3,27 @@ namespace App\Http\Controllers\Auth; use App\User; +use App\Invitation; use App\Http\Controllers\Controller; -use Illuminate\Support\Facades\Validator; -use Illuminate\Foundation\Auth\RegistersUsers; +use Illuminate\Support\Facades\Auth; class RegisterController extends Controller { - /* - |-------------------------------------------------------------------------- - | Register Controller - |-------------------------------------------------------------------------- - | - | This controller handles the registration of new users as well as their - | validation and creation. By default this controller uses a trait to - | provide this functionality without requiring any additional code. - | - */ - - use RegistersUsers; - - /** - * Where to redirect users after login / registration. - * - * @var string - */ - protected $redirectTo = '/home'; - - /** - * Create a new controller instance. - * - * @return void - */ - public function __construct() + public function register() { - $this->middleware('guest'); - } + $invitation = Invitation::findByCode(request('invitation_code')); - /** - * Get a validator for an incoming registration request. - * - * @param array $data - * @return \Illuminate\Contracts\Validation\Validator - */ - protected function validator(array $data) - { - return Validator::make($data, [ - 'name' => 'required|max:255', - 'email' => 'required|email|max:255|unique:users', - 'password' => 'required|min:6|confirmed', + $user = User::create([ + 'email' => request('email'), + 'password' => bcrypt(request('password')), ]); - } - /** - * Create a new user instance after a valid registration. - * - * @param array $data - * @return User - */ - protected function create(array $data) - { - return User::create([ - 'name' => $data['name'], - 'email' => $data['email'], - 'password' => bcrypt($data['password']), + $invitation->update([ + 'user_id' => $user->id, ]); + + Auth::login($user); + + return redirect()->route('backstage.concerts.index'); } } diff --git a/app/Invitation.php b/app/Invitation.php index 79d93e3..efd95b1 100644 --- a/app/Invitation.php +++ b/app/Invitation.php @@ -6,11 +6,18 @@ use Illuminate\Database\Eloquent\Model; class Invitation extends Model { + protected $guarded = []; + public static function findByCode($code) { return self::where('code', $code)->firstOrFail(); } + public function user() + { + return $this->belongsTo(User::class); + } + public function hasBeenUsed() { return $this->user_id !== null; diff --git a/resources/views/invitations/show.blade.php b/resources/views/invitations/show.blade.php index e69de29..1f6f628 100644 --- a/resources/views/invitations/show.blade.php +++ b/resources/views/invitations/show.blade.php @@ -0,0 +1,40 @@ +@extends('layouts.master') + +@section('body') +