質問するログイン新規登録

質問編集履歴

3

追記

2020/11/02 09:21

投稿

pup-ganbaru
pup-ganbaru

スコア29

title CHANGED
File without changes
body CHANGED
@@ -6,10 +6,7 @@
6
6
  自動生成されるAuthenticatedSessionControllerにてそれらしきコードを見つけたので
7
7
  新しいコントローラーを作成して、namespace以外をコピーして読みこませ編集しましたが、singletonの記述がうまくいってないのか、代わりに読み込まれてくれません。
8
8
 
9
- また論理削除も実装しようと思っています。
10
9
 
11
-
12
-
13
10
  fortify service provider
14
11
  ```ここに言語を入力
15
12
  public function authSession()

2

追記

2020/11/02 09:21

投稿

pup-ganbaru
pup-ganbaru

スコア29

title CHANGED
File without changes
body CHANGED
@@ -1,6 +1,6 @@
1
- laravel8 + jetstream にてログイン認証機能を実装しました
1
+ laravel8 + jetstream にてログイン認証機能を実装しましたがdestroyメソッドのカスタマイズができません
2
- カスタマイズとして管理者アカウントのユーザー一覧からユーザー毎に削除ボタンをつけたいのですが、jetstreamの仕組みが分からず、カスタマイズしようにもどうしたらいいかわかりません。
3
2
 
3
+
4
4
  試したこと
5
5
 
6
6
  自動生成されるAuthenticatedSessionControllerにてそれらしきコードを見つけたので

1

追記、試したこと

2020/11/02 09:20

投稿

pup-ganbaru
pup-ganbaru

スコア29

title CHANGED
@@ -1,1 +1,1 @@
1
- 【laravel8 + jetstream 】【ユーザー認証】アカウント削除機能をカスタマイズしたい。
1
+ 【laravel8 + jetstream 】【ユーザー認証】アカウント削除機能をカスタマイズしたい。singletonができない
body CHANGED
@@ -1,14 +1,129 @@
1
1
  laravel8 + jetstream にてログイン認証機能を実装しました。
2
2
  カスタマイズとして管理者アカウントのユーザー一覧からユーザー毎に削除ボタンをつけたいのですが、jetstreamの仕組みが分からず、カスタマイズしようにもどうしたらいいかわかりません。
3
3
 
4
- 自動生成されるAuthenticatedSessionControllerにてそれらしきコードを見つけました。
5
- いコントローラーを作成して、namespace以外をコピーして読みませ編集するこによってカスタマイズすることが可能になるのでしょうか?
4
+ こと
6
5
 
6
+ 自動生成されるAuthenticatedSessionControllerにてそれらしきコードを見つけたので
7
+ 新しいコントローラーを作成して、namespace以外をコピーして読みこませ編集しましたが、singletonの記述がうまくいってないのか、代わりに読み込まれてくれません。
8
+
7
9
  また論理削除も実装しようと思っています。
8
10
 
11
+
12
+
13
+ fortify service provider
9
14
  ```ここに言語を入力
10
- public function destroy(Request $request): LogoutResponse
15
+ public function authSession()
11
16
  {
17
+ $this->app->singleton(
18
+ AuthenticatedSessionController::class,
19
+ AuthSessionController::class
20
+ );
21
+ }
22
+ }
23
+ ```
24
+
25
+ fortifyによって自動生成されるコントローラー
26
+
27
+ ```ここに言語を入力
28
+ <?php
29
+
30
+ namespace Laravel\Fortify\Http\Controllers;
31
+
32
+ use Illuminate\Contracts\Auth\StatefulGuard;
33
+ use Illuminate\Http\Request;
34
+ use Illuminate\Routing\Controller;
35
+ use Illuminate\Routing\Pipeline;
36
+ use Laravel\Fortify\Actions\AttemptToAuthenticate;
37
+ use Laravel\Fortify\Actions\EnsureLoginIsNotThrottled;
38
+ use Laravel\Fortify\Actions\PrepareAuthenticatedSession;
39
+ use Laravel\Fortify\Actions\RedirectIfTwoFactorAuthenticatable;
40
+ use Laravel\Fortify\Contracts\LoginResponse;
41
+ use Laravel\Fortify\Contracts\LoginViewResponse;
42
+ use Laravel\Fortify\Contracts\LogoutResponse;
43
+ use Laravel\Fortify\Features;
44
+ use Laravel\Fortify\Fortify;
45
+ use Laravel\Fortify\Http\Requests\LoginRequest;
46
+
47
+ class AuthenticatedSessionController extends Controller
48
+ {
49
+ /**
50
+ * The guard implementation.
51
+ *
52
+ * @var \Illuminate\Contracts\Auth\StatefulGuard
53
+ */
54
+ protected $guard;
55
+
56
+ /**
57
+ * Create a new controller instance.
58
+ *
59
+ * @param \Illuminate\Contracts\Auth\StatefulGuard
60
+ * @return void
61
+ */
62
+ public function __construct(StatefulGuard $guard)
63
+ {
64
+ $this->guard = $guard;
65
+ }
66
+
67
+ /**
68
+ * Show the login view.
69
+ *
70
+ * @param \Illuminate\Http\Request $request
71
+ * @return \Laravel\Fortify\Contracts\LoginViewResponse
72
+ */
73
+ public function create(Request $request): LoginViewResponse
74
+ {
75
+ return app(LoginViewResponse::class);
76
+ }
77
+
78
+ /**
79
+ * Attempt to authenticate a new session.
80
+ *
81
+ * @param \Laravel\Fortify\Http\Requests\LoginRequest $request
82
+ * @return mixed
83
+ */
84
+ public function store(LoginRequest $request)
85
+ {
86
+ return $this->loginPipeline($request)->then(function ($request) {
87
+ return app(LoginResponse::class);
88
+ });
89
+ }
90
+
91
+ /**
92
+ * Get the authentication pipeline instance.
93
+ *
94
+ * @param \Laravel\Fortify\Http\Requests\LoginRequest $request
95
+ * @return \Illuminate\Pipeline\Pipeline
96
+ */
97
+ protected function loginPipeline(LoginRequest $request)
98
+ {
99
+ if (Fortify::$authenticateThroughCallback) {
100
+ return (new Pipeline(app()))->send($request)->through(array_filter(
101
+ call_user_func(Fortify::$authenticateThroughCallback, $request)
102
+ ));
103
+ }
104
+
105
+ if (is_array(config('fortify.pipelines.login'))) {
106
+ return (new Pipeline(app()))->send($request)->through(array_filter(
107
+ config('fortify.pipelines.login')
108
+ ));
109
+ }
110
+
111
+ return (new Pipeline(app()))->send($request)->through(array_filter([
112
+ config('fortify.limiters.login') ? null : EnsureLoginIsNotThrottled::class,
113
+ Features::enabled(Features::twoFactorAuthentication()) ? RedirectIfTwoFactorAuthenticatable::class : null,
114
+ AttemptToAuthenticate::class,
115
+ PrepareAuthenticatedSession::class,
116
+ ]));
117
+ }
118
+
119
+ /**
120
+ * Destroy an authenticated session.
121
+ *
122
+ * @param \Illuminate\Http\Request $request
123
+ * @return \Laravel\Fortify\Contracts\LogoutResponse
124
+ */
125
+ public function destroy(Request $request): LogoutResponse
126
+ {
12
127
  $this->guard->logout();
13
128
 
14
129
  $request->session()->invalidate();
@@ -17,4 +132,115 @@
17
132
 
18
133
  return app(LogoutResponse::class);
19
134
  }
135
+ }
136
+
137
+ ```
138
+
139
+ カスタマイズするために作ったコントローラー
140
+ ```ここに言語を入力
141
+ <?php
142
+
143
+ namespace App\Http\Controllers;
144
+
145
+ use Illuminate\Contracts\Auth\StatefulGuard;
146
+ use Illuminate\Http\Request;
147
+ use Illuminate\Routing\Controller;
148
+ use Illuminate\Routing\Pipeline;
149
+ use Laravel\Fortify\Actions\AttemptToAuthenticate;
150
+ use Laravel\Fortify\Actions\EnsureLoginIsNotThrottled;
151
+ use Laravel\Fortify\Actions\PrepareAuthenticatedSession;
152
+ use Laravel\Fortify\Actions\RedirectIfTwoFactorAuthenticatable;
153
+ use Laravel\Fortify\Contracts\LoginResponse;
154
+ use Laravel\Fortify\Contracts\LoginViewResponse;
155
+ use Laravel\Fortify\Contracts\LogoutResponse;
156
+ use Laravel\Fortify\Features;
157
+ use Laravel\Fortify\Fortify;
158
+ use Laravel\Fortify\Http\Requests\LoginRequest;
159
+
160
+ class AuthSessionController extends Controller
161
+
162
+ {
163
+
164
+ /**
165
+ * The guard implementation.
166
+ *
167
+ * @var \Illuminate\Contracts\Auth\StatefulGuard
168
+ */
169
+ protected $guard;
170
+
171
+ /**
172
+ * Create a new controller instance.
173
+ *
174
+ * @param \Illuminate\Contracts\Auth\StatefulGuard
175
+ * @return void
176
+ */
177
+ public function __construct(StatefulGuard $guard)
178
+ {
179
+ $this->guard = $guard;
180
+ }
181
+
182
+ /**
183
+ * Show the login view.
184
+ *
185
+ * @param \Illuminate\Http\Request $request
186
+ * @return \Laravel\Fortify\Contracts\LoginViewResponse
187
+ */
188
+ public function create(Request $request): LoginViewResponse
189
+ {
190
+ return app(LoginViewResponse::class);
191
+ }
192
+
193
+ /**
194
+ * Attempt to authenticate a new session.
195
+ *
196
+ * @param \Laravel\Fortify\Http\Requests\LoginRequest $request
197
+ * @return mixed
198
+ */
199
+ public function store(LoginRequest $request)
200
+ {
201
+ return $this->loginPipeline($request)->then(function ($request) {
202
+ return app(LoginResponse::class);
203
+ });
204
+ }
205
+
206
+ /**
207
+ * Get the authentication pipeline instance.
208
+ *
209
+ * @param \Laravel\Fortify\Http\Requests\LoginRequest $request
210
+ * @return \Illuminate\Pipeline\Pipeline
211
+ */
212
+ protected function loginPipeline(LoginRequest $request)
213
+ {
214
+ if (Fortify::$authenticateThroughCallback) {
215
+ return (new Pipeline(app()))->send($request)->through(array_filter(
216
+ call_user_func(Fortify::$authenticateThroughCallback, $request)
217
+ ));
218
+ }
219
+
220
+ if (is_array(config('fortify.pipelines.login'))) {
221
+ return (new Pipeline(app()))->send($request)->through(array_filter(
222
+ config('fortify.pipelines.login')
223
+ ));
224
+ }
225
+
226
+ return (new Pipeline(app()))->send($request)->through(array_filter([
227
+ config('fortify.limiters.login') ? null : EnsureLoginIsNotThrottled::class,
228
+ Features::enabled(Features::twoFactorAuthentication()) ? RedirectIfTwoFactorAuthenticatable::class : null,
229
+ AttemptToAuthenticate::class,
230
+ PrepareAuthenticatedSession::class,
231
+ ]));
232
+ }
233
+
234
+ /**
235
+ * Destroy an authenticated session.
236
+ *
237
+ * @param \Illuminate\Http\Request $request
238
+ * @return \Laravel\Fortify\Contracts\LogoutResponse
239
+ */
240
+ public function destroy(Request $request)
241
+ {
242
+ echo 'hello';
243
+ }
244
+ }
245
+
20
246
  ```