前提・実現したいこと
laravelでプロフィール更新サイトを作っております。
現在のパスワードと入力したパスワードが一致した場合プロフィールを編集できるようにしたいです。
発生している問題・エラーメッセージ
パスワードが一致していなくても変更できてしまいます。
###該当のソースコード
edit.blade.php
<form method="POST" action="{{ url('users/' .$user->id) }}" enctype="multipart/form-data"> <input type="hidden" name="_token" value="{{ csrf_token() }}"> {{ method_field('patch') }} <table class="update_form"> <!--ユーザーネーム--> <tr> <th> <label>username</label> <td> <input id="username" type="text" name="username" value="{{ $user->username }}" required autocomplete="username" autofocus> </td> </th> </tr> <!--メールアドレス--> <tr> <th><label>Mail Adress</label> <td> <input id="mail" type="mail" name="mail" value="{{ $user->mail }}" required autocomplete="mail" autofocus> </td> </th> </tr> <!--現在のパスワード--> <tr> <th> <label>Password</label> <td> <input id="oldPassword" type="password" name="oldPassword"> </td> </th> </tr> <!--Newパスワード--> <tr> <th><label>NewPassword</label> <td> <input id="newPassword" name="newPassword" type="password" autocomplete="password" required> </td> </th> </tr> <!--Newパスワード確認--> <tr> <th> <label>ConfirmPassword</label> <td> <input id="confirmPassword" type="password" name="confirmPassword"> </td> </th> </tr> <!--自己紹介--> <tr> <th><label>Bio</label> <td> <input id="bio" type="text" name="bio" value="{{ $user->bio }}" autocomplete="bio"> </td> </th> </tr> <!--画像--> <tr> <th><label>IconImage<label> <td> <img src="{{ asset('public/images/' .$user->image) }}" class="mr-2 rounded-circle" width="80" height="80" alt="image"> <div class="form__file"> <label> <input type="file" name="image" id="file" autocomplete="image">ファイルを選択 </label> </div> </td> </th> </tr> </table> <div class="btn"> <div class="col-md-6offset-md-4"> <button type="submit" class="btn btn-primary">更新する</button> </div> </form> </div> ```UsersController
public function update(Request $request, User $user)
{
$input = $request->only('username', 'image', 'mail', 'bio', 'oldPassword', 'newPassword');
$user = User::find(auth()->user()->id);
$validator = Validator::make($request->all(), [ 'username' => ['required', 'string', 'max:12', 'min:4'], 'image' => ['file', 'image', 'mimes:jpeg,png,jpg', 'max:2048'], 'mail' => ['required', 'string', 'email', 'max:12', 'min:4', 'unique:users,mail,' . $user->id . ',id'], 'bio' => ['string', 'max:255', 'nullable'], 'oldPassword' => ['required'], 'newPassword' => ['required', 'max:12', 'min:4', 'alpha'], 'confirmPassword' => ['required', 'same:new_password'] ]); if (!\Hash::check($request['oldPassword'], $user->password)); else { return redirect('users/' . $user->id . '/edit')->withErrors($validator) ->withInput(); }
if ($request->hasFile('image')) {
$path = $request->file('image')->store('public/images');
$user->image = basename($path); } if ($validator->fails()) { return redirect('users/' . $user->id . '/edit') ->withErrors($validator) ->withInput(); } $user->username = $request->username; $user->mail = $request->mail; $user->bio = $request->bio; $user->password = $request->newPassword;
$user->save();
return redirect('users/' . $user->id); }
web.php
Route::patch('/users', 'UsersController@update');
Route::resource('/users', 'UsersController', ['only' => ['edit', 'update', 'show']]);
### 試したこと 色々なサイトを参考にしましたが書き方がよく分からず困っています。 初心者で申し訳ございませんがご教授願います。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/02/27 05:22
2021/02/27 05:51