Skip to content

Commit a7fe7c4

Browse files
authored
Merge pull request #11 from Caknoooo/feature/9-create-view-register
feat: create a simple register and login
2 parents b7013ba + 3677a19 commit a7fe7c4

File tree

5 files changed

+260
-1
lines changed

5 files changed

+260
-1
lines changed

app/Http/Controllers/UserController.php

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,25 @@ public function create(Request $request, RegisterUserService $service)
3636
}
3737
DB::commit();
3838

39-
return response()->json(['message' => 'success']);
39+
return redirect()->route('user.create');
40+
}
41+
42+
public function login(Request $request)
43+
{
44+
$request->validate(
45+
[
46+
'email' => 'required|email',
47+
'password' => 'required',
48+
]
49+
);
50+
51+
$user = DB::table('users')->where('email', $request->input('email'))->first();
52+
53+
if ($user && $user->password === $request->input('password')) {
54+
$request->session()->put('user', $user);
55+
return redirect()->route('user.login');
56+
}
57+
58+
return redirect()->route('user.login');
4059
}
4160
}
Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
@extends('layouts.app')
2+
3+
@section('content')
4+
<div class="container">
5+
<div class="row justify-content-center">
6+
<div class="col-md-8">
7+
<div class="card">
8+
<div class="card-header">{{ __('Register') }}</div>
9+
10+
<div class="card-body">
11+
<form method="POST" action="{{ route('user.login') }}" enctype="multipart/form-data">
12+
@csrf
13+
14+
<div class="form-group row">
15+
<label for="email"
16+
class="col-md-4 col-form-label text-md-right">{{ __('E-Mail Address') }}</label>
17+
18+
<div class="col-md-6">
19+
<input id="email" type="email"
20+
class="form-control @error('email') is-invalid @enderror" name="email"
21+
value="{{ old('email') }}" required>
22+
23+
@error('email')
24+
<span class="invalid-feedback" role="alert">
25+
<strong>{{ $message }}</strong>
26+
</span>
27+
@enderror
28+
</div>
29+
</div>
30+
31+
<div class="form-group row">
32+
<label for="password"
33+
class="col-md-4 col-form-label text-md-right">{{ __('Password') }}</label>
34+
35+
<div class="col-md-6">
36+
<input id="password" type="password"
37+
class="form-control @error('password') is-invalid @enderror" name="password"
38+
required>
39+
40+
@error('password')
41+
<span class="invalid-feedback" role="alert">
42+
<strong>{{ $message }}</strong>
43+
</span>
44+
@enderror
45+
</div>
46+
</div>
47+
48+
49+
<div class="form-group row mb-0">
50+
<div class="col-md-6 offset-md-4">
51+
<button type="submit" class="btn btn-primary">
52+
{{ __('Login') }}
53+
</button>
54+
</div>
55+
</div>
56+
</form>
57+
</div>
58+
</div>
59+
</div>
60+
</div>
61+
</div>
62+
@endsection
Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
@extends('layouts.app')
2+
3+
@section('content')
4+
<div class="container">
5+
<div class="row justify-content-center">
6+
<div class="col-md-8">
7+
<div class="card">
8+
<div class="card-header">{{ __('Register') }}</div>
9+
10+
<div class="card-body">
11+
<form method="POST" action="{{ route('user.create') }}" enctype="multipart/form-data">
12+
@csrf
13+
14+
<div class="form-group row">
15+
<label for="name" class="col-md-4 col-form-label text-md-right">{{ __('Name') }}</label>
16+
17+
<div class="col-md-6">
18+
<input id="name" type="text" class="form-control @error('name') is-invalid @enderror" name="name" value="{{ old('name') }}" required autofocus>
19+
20+
@error('name')
21+
<span class="invalid-feedback" role="alert">
22+
<strong>{{ $message }}</strong>
23+
</span>
24+
@enderror
25+
</div>
26+
</div>
27+
28+
<div class="form-group row">
29+
<label for="email" class="col-md-4 col-form-label text-md-right">{{ __('E-Mail Address') }}</label>
30+
31+
<div class="col-md-6">
32+
<input id="email" type="email" class="form-control @error('email') is-invalid @enderror" name="email" value="{{ old('email') }}" required>
33+
34+
@error('email')
35+
<span class="invalid-feedback" role="alert">
36+
<strong>{{ $message }}</strong>
37+
</span>
38+
@enderror
39+
</div>
40+
</div>
41+
42+
<div class="form-group row">
43+
<label for="password" class="col-md-4 col-form-label text-md-right">{{ __('Password') }}</label>
44+
45+
<div class="col-md-6">
46+
<input id="password" type="password" class="form-control @error('password') is-invalid @enderror" name="password" required>
47+
48+
@error('password')
49+
<span class="invalid-feedback" role="alert">
50+
<strong>{{ $message }}</strong>
51+
</span>
52+
@enderror
53+
</div>
54+
</div>
55+
56+
<div class="form-group row">
57+
<label for="image" class="col-md-4 col-form-label text-md-right">{{ __('Profile Image') }}</label>
58+
59+
<div class="col-md-6">
60+
<input id="image" type="file" class="form-control-file @error('image') is-invalid @enderror" name="image">
61+
62+
@error('image')
63+
<span class="invalid-feedback" role="alert">
64+
<strong>{{ $message }}</strong>
65+
</span>
66+
@enderror
67+
</div>
68+
</div>
69+
70+
<div class="form-group row mb-0">
71+
<div class="col-md-6 offset-md-4">
72+
<button type="submit" class="btn btn-primary">
73+
{{ __('Register') }}
74+
</button>
75+
</div>
76+
</div>
77+
</form>
78+
</div>
79+
</div>
80+
</div>
81+
</div>
82+
</div>
83+
@endsection
Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
<!DOCTYPE html>
2+
<html lang="{{ str_replace('_', '-', app()->getLocale()) }}">
3+
4+
<head>
5+
<meta charset="utf-8">
6+
<meta name="viewport" content="width=device-width, initial-scale=1">
7+
8+
<title>{{ config('app.name', 'Laravel') }}</title>
9+
10+
<!-- Styles -->
11+
<link href="{{ asset('css/app.css') }}" rel="stylesheet">
12+
13+
<!-- Bootstrap CSS -->
14+
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
15+
integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
16+
17+
{{-- Bootstrap Icons --}}
18+
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.10.3/font/bootstrap-icons.css">
19+
20+
<!-- Scripts -->
21+
<script src="{{ asset('js/app.js') }}" defer></script>
22+
</head>
23+
24+
<body>
25+
<div id="app">
26+
<nav class="navbar navbar-expand-md navbar-light bg-white shadow-sm">
27+
<div class="container">
28+
<a class="navbar-brand" href="{{ url('/') }}">
29+
{{ config('app.name', 'Laravel') }}
30+
</a>
31+
<button class="navbar-toggler" type="button" data-toggle="collapse"
32+
data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false"
33+
aria-label="{{ __('Toggle navigation') }}">
34+
<span class="navbar-toggler-icon"></span>
35+
</button>
36+
37+
<div class="collapse navbar-collapse" id="navbarSupportedContent">
38+
<!-- Left Side Of Navbar -->
39+
<ul class="navbar-nav mr-auto">
40+
41+
</ul>
42+
43+
<!-- Right Side Of Navbar -->
44+
<ul class="navbar-nav ml-auto">
45+
<!-- Authentication Links -->
46+
@guest
47+
<li class="nav-item">
48+
<a class="nav-link" href="{{ route('login') }}">{{ __('Login') }}</a>
49+
</li>
50+
<li class="nav-item">
51+
<a class="nav-link" href="{{ route('register') }}">{{ __('Register') }}</a>
52+
</li>
53+
@else
54+
<li class="nav-item dropdown">
55+
<a id="navbarDropdown" class="nav-link dropdown-toggle" href="#" role="button"
56+
data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" v-pre>
57+
{{ Auth::user()->name }}
58+
</a>
59+
60+
<div class="dropdown-menu dropdown-menu-right" aria-labelledby="navbarDropdown">
61+
<a class="dropdown-item" href="{{ route('logout') }}"
62+
onclick="event.preventDefault();
63+
document.getElementById('logout-form').submit();">
64+
{{ __('Logout') }}
65+
</a>
66+
67+
<form id="logout-form" action="{{ route('logout') }}" method="POST" class="d-none">
68+
@csrf
69+
</form>
70+
</div>
71+
</li>
72+
@endguest
73+
</ul>
74+
</div>
75+
</div>
76+
</nav>
77+
78+
<main class="py-4">
79+
@yield('content')
80+
</main>
81+
</div>
82+
</body>
83+
84+
</html>

routes/web.php

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
<?php
22

3+
use App\Http\Controllers\UserController;
34
use Illuminate\Support\Facades\Route;
45

56
/*
@@ -16,3 +17,13 @@
1617
Route::get('/', function () {
1718
return view('welcome');
1819
});
20+
21+
Route::post('/register', [UserController::class, 'create'])->name('register');
22+
Route::get('/register', function () {
23+
return view('auth.register');
24+
})->name('user.create');
25+
26+
Route::post('/login', [UserController::class, 'login'])->name('login');
27+
Route::get('/login', function () {
28+
return view('auth.login');
29+
})->name('user.login');

0 commit comments

Comments
 (0)