diff --git a/app/Http/Controllers/RegisteredUserController.php b/app/Http/Controllers/RegisteredUserController.php new file mode 100644 index 0000000..6fd1b9e --- /dev/null +++ b/app/Http/Controllers/RegisteredUserController.php @@ -0,0 +1,31 @@ +validate([ + 'fullname' => ['required'], + 'email' => ['required', 'email', 'confirmed'], + 'password' => ['required', Password::min(5), 'confirmed'], + ]); + + $user = User::create($validatedAttributes); + + Auth::login( $user ); + + return redirect('/admin'); + } +} diff --git a/app/Http/Controllers/SessionController.php b/app/Http/Controllers/SessionController.php index 5874623..899c8e4 100644 --- a/app/Http/Controllers/SessionController.php +++ b/app/Http/Controllers/SessionController.php @@ -8,7 +8,7 @@ class SessionController extends Controller { public function create() { - return view('admin.login'); + return view('auth.login'); } public function store() diff --git a/app/Models/User.php b/app/Models/User.php index 407a732..01e827c 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -17,6 +17,7 @@ class User extends Authenticatable * @var array */ protected $fillable = [ + 'fullname', 'email', 'password', ]; diff --git a/app/View/Components/input.php b/app/View/Components/input.php new file mode 100644 index 0000000..749d1ef --- /dev/null +++ b/app/View/Components/input.php @@ -0,0 +1,26 @@ +id(); + $table->string('fullname'); $table->string('email')->unique(); $table->timestamp('email_verified_at')->nullable(); $table->string('password'); diff --git a/public/css/style.css b/public/css/style.css index 64ddafe..d4dfc52 100644 --- a/public/css/style.css +++ b/public/css/style.css @@ -427,6 +427,7 @@ button { margin-left : -3rem ; background : #ddd ; border : 0.125rem solid #ddd +; box-shadow : inset 0 0 0 0.125rem #ddd } .buttons input[type="search"]:hover @@ -443,13 +444,21 @@ button .buttons input[type="search"] + button:hover , .buttons input[type="search"] + button:focus , .buttons input[type="search"] + button:active +{ border : 0.125rem solid #ddd +; box-shadow : inset 0 0 0 0.125rem transparent + , 0 0 0 0.125rem #fff + , 0 0 0 0.3rem #ddd +} + .buttons input[type="search"]:focus + button:hover +, .buttons input[type="search"]:active + button:hover { border : 0.125rem solid #bbb ; box-shadow : inset 0 0 0 0.125rem transparent , 0 0 0 0.125rem #fff - , 0 0 0 0.25rem #bbb + , 0 0 0 0.3rem #bbb } + .red { --b : var( --red ) } .yellow { --b : var( --yellow ) } .green { --b : var( --green ) } @@ -684,4 +693,30 @@ dfn[title] { border-bottom: 1pt dotted var(--text) } .w-30 -{ width : 30rem } \ No newline at end of file +{ width : 30rem } + +.error +{ color : var(--red) } + +.x-input +{ display : grid +; justify-content : center +; gap : 0.5rem 1rem +; grid-template : + ' label input ' + ' error error ' + auto / 10rem 14rem ; +} +.x-input label +{ grid-area : label +; justify-self : flex-end +; align-self : center +; text-align : right +} +.x-input input +{ grid-area : input +; justify-self : flex-start +; align-self : flex-start +} +.x-input .error +{ grid-area : error } \ No newline at end of file diff --git a/resources/views/admin/login.blade.php b/resources/views/auth/login.blade.php similarity index 100% rename from resources/views/admin/login.blade.php rename to resources/views/auth/login.blade.php diff --git a/resources/views/auth/register.blade.php b/resources/views/auth/register.blade.php new file mode 100644 index 0000000..a49c033 --- /dev/null +++ b/resources/views/auth/register.blade.php @@ -0,0 +1,27 @@ + + +
+ @csrf + + fullname + + email + email_confirmation + + password + password_confirmation + + +
+ +
diff --git a/resources/views/components/input.blade.php b/resources/views/components/input.blade.php new file mode 100644 index 0000000..32edfc6 --- /dev/null +++ b/resources/views/components/input.blade.php @@ -0,0 +1,17 @@ +
+ + merge()->filter(fn ($value, $key) => !in_array($key, ['title'])) }} + > + +@error( "$slot" ) +

{{ $message }}

+@enderror +
\ No newline at end of file diff --git a/resources/views/components/layout-admin.blade.php b/resources/views/components/layout-admin.blade.php index 5e72784..c078265 100644 --- a/resources/views/components/layout-admin.blade.php +++ b/resources/views/components/layout-admin.blade.php @@ -20,18 +20,29 @@ @guest + +Register +
@csrf - - - + email + password +
@endguest @auth {{ $slot }} + + +
+ @csrf + +
@endauth diff --git a/routes/web.php b/routes/web.php index 6665860..0946b3a 100644 --- a/routes/web.php +++ b/routes/web.php @@ -1,5 +1,6 @@ get('/admin', function ($name = null) { return view('admin.index'); }); + +Route::get('/register', [RegisteredUserController::class, 'create']); +Route::post('/register', [RegisteredUserController::class, 'store']); + Route::get('/login', [SessionController::class, 'create']); Route::post('/login', [SessionController::class, 'store']); Route::post('/logout', [SessionController::class, 'destroy']);