diff --git a/app/Http/Controllers/Auth/RegisterController.php b/app/Http/Controllers/Auth/RegisterController.php index ecfc4151..840ad692 100644 --- a/app/Http/Controllers/Auth/RegisterController.php +++ b/app/Http/Controllers/Auth/RegisterController.php @@ -4,6 +4,8 @@ namespace App\Http\Controllers\Auth; use App\User; use App\Role; +use App\Marking; +use Illuminate\Support\Facades\Auth; use Illuminate\Http\Request; use App\Http\Controllers\Controller; use Illuminate\Support\Facades\Validator; @@ -56,8 +58,16 @@ class RegisterController extends Controller * @param array $data * @return User */ - protected function create(array $data) + protected function create(Request $data) { + $marking = Marking::Where('email',$data['email'])->first(); + if(!$marking){ + return response()->json('Access Denied', 401); + } + if($marking->marking != $data['marking']){ + return response()->json('Wrong Marking', 400); + } + $role = Role::where('name','=','member')->first(); $user = new User(); $user->name = $data['name']; @@ -66,7 +76,6 @@ class RegisterController extends Controller $user->save(); $user->attachRole($role); - return $user; - + return response()->json($user, 201); } } diff --git a/database/factories/MarkingFactory.php b/database/factories/MarkingFactory.php new file mode 100644 index 00000000..989fcf07 --- /dev/null +++ b/database/factories/MarkingFactory.php @@ -0,0 +1,10 @@ +define(App\Marking::class, function (Faker $faker) { + return [ + 'email' => $faker->unique()->safeEmail, + 'marking' => str_random(10) + ]; +}); diff --git a/routes/api.php b/routes/api.php index af03826e..dfd4c1e0 100644 --- a/routes/api.php +++ b/routes/api.php @@ -51,7 +51,7 @@ Route::group(['middleware' => 'auth:api'], function () { Route::group(['middleware' => 'guest:api'], function () { Route::post('login', 'Auth\LoginController@login'); - Route::post('register', 'Auth\RegisterController@register'); + Route::post('register', 'Auth\RegisterController@create'); Route::post('password/email', 'Auth\ForgotPasswordController@sendResetLinkEmail'); Route::post('password/reset', 'Auth\ResetPasswordController@reset'); diff --git a/tests/Feature/RegisterTest.php b/tests/Feature/RegisterTest.php index 9861c9e0..4f1c3023 100644 --- a/tests/Feature/RegisterTest.php +++ b/tests/Feature/RegisterTest.php @@ -3,17 +3,30 @@ namespace Tests\Feature; use Tests\TestCase; +use App\Marking; +use Artisan; class RegisterTest extends TestCase { + protected $marking; + + public function setUp(){ + parent::setUp(); + Artisan::call('db:seed'); + + $this->marking = factory(Marking::class)->create(); + } + + /** @test */ public function can_register() { $this->postJson('/api/register', [ 'name' => 'Test User', - 'email' => 'test@test.app', + 'email' => $this->marking->email, 'password' => 'secret', 'password_confirmation' => 'secret', + 'marking' => $this->marking->marking ]) ->assertSuccessful() ->assertJsonStructure(['id', 'name', 'email']);