File tree Expand file tree Collapse file tree 6 files changed +92
-0
lines changed
packages/Acme/Application/ShowUserProfile Expand file tree Collapse file tree 6 files changed +92
-0
lines changed Original file line number Diff line number Diff line change
1
+ <?php
2
+
3
+ declare (strict_types=1 );
4
+
5
+ namespace App \Http \Controllers ;
6
+
7
+ use Acme \Application \ShowUserProfile \ShowUserProfileUseCase ;
8
+ use Acme \Application \ShowUserProfile \ShowUserProfileUseCaseInput ;
9
+ use App \Models \User ;
10
+ use Illuminate \Contracts \View \View ;
11
+ use Illuminate \Support \Facades \Auth ;
12
+
13
+ final class ProfileController extends Controller
14
+ {
15
+ public function __invoke (ShowUserProfileUseCase $ useCase ): View
16
+ {
17
+ /** @var User $user */
18
+ $ user = Auth::user ();
19
+ $ input = new ShowUserProfileUseCaseInput ($ user ->username );
20
+ $ output = $ useCase ->show ($ input );
21
+
22
+ return view ('profile ' , [
23
+ 'username ' => $ output ->username ,
24
+ 'email ' => $ output ->email ,
25
+ ]);
26
+ }
27
+ }
Original file line number Diff line number Diff line change
1
+ <?php
2
+
3
+ declare (strict_types=1 );
4
+
5
+ namespace Acme \Application \ShowUserProfile ;
6
+
7
+ use Acme \Domain \User \Username ;
8
+ use Acme \Domain \User \UserRepository ;
9
+
10
+ final class ShowUserProfileUseCase
11
+ {
12
+ public function __construct (private UserRepository $ userRepository )
13
+ {
14
+ }
15
+
16
+ public function show (ShowUserProfileUseCaseInput $ input ): ShowUserProfileUseCaseOutput
17
+ {
18
+ $ username = new Username ($ input ->username );
19
+ $ authUser = $ this ->userRepository ->findByUsername ($ username );
20
+
21
+ return new ShowUserProfileUseCaseOutput ($ authUser ->username (), $ authUser ->email ());
22
+ }
23
+ }
Original file line number Diff line number Diff line change
1
+ <?php
2
+
3
+ declare (strict_types=1 );
4
+
5
+ namespace Acme \Application \ShowUserProfile ;
6
+
7
+ final readonly class ShowUserProfileUseCaseInput
8
+ {
9
+ public function __construct (public string $ username )
10
+ {
11
+ }
12
+ }
Original file line number Diff line number Diff line change
1
+ <?php
2
+
3
+ declare (strict_types=1 );
4
+
5
+ namespace Acme \Application \ShowUserProfile ;
6
+
7
+ final readonly class ShowUserProfileUseCaseOutput
8
+ {
9
+ public function __construct (
10
+ public string $ username ,
11
+ public string $ email ,
12
+ ) {
13
+ }
14
+ }
Original file line number Diff line number Diff line change
1
+ @extends (' layouts.app' )
2
+
3
+ @section (' title' , ' プロフィール' )
4
+
5
+ @section (' content' )
6
+ <h1 >プロフィール</h1 >
7
+
8
+ <ul >
9
+ <li >ユーザー名: {{ $username } } </li >
10
+ <li >メールアドレス: {{ $email } } </li >
11
+ </ul >
12
+
13
+ <p ><a href =" {{ route (' dashboard' ) } }" >ダッシュボードへ戻る</a ></p >
14
+ @endsection
Original file line number Diff line number Diff line change 4
4
5
5
use App \Http \Controllers \LoginController ;
6
6
use App \Http \Controllers \LogoutController ;
7
+ use App \Http \Controllers \ProfileController ;
7
8
use App \Http \Controllers \RegisterController ;
8
9
use Illuminate \Support \Facades \Route ;
9
10
28
29
29
30
Route::group (['middleware ' => 'auth ' ], static function () {
30
31
Route::view ('/dashboard ' , 'dashboard ' )->name ('dashboard ' );
32
+ Route::get ('/profile ' , ProfileController::class)->name ('profile ' );
31
33
Route::post ('/logout ' , LogoutController::class)->name ('logout ' );
32
34
});
You can’t perform that action at this time.
0 commit comments