راکت

تغییر پسورد

سلام دوستان
من یه قسمتی رو برای کاربر در نظر گرفتم که بتونه پسوردش رو تغییر بده ولی مشکلی که دارم اینه که میخوام قبل از این که رمزش رو تغییر بده رمز قبلی رو وارد کنه تا این جا پیش رفتم که بدون تایید رمز قبلی بتونه پسورد رو تغییر بده
ممنون میشم راهنمایی کنید

قسمت web.php

Route::namespace('Profile')->middleware(['auth', 'verified'])->group(function () {
Route::resource('/changePassword', 'changePasswordController', ['only' => ['index', 'update']]);
});

قسمت changePassword.blade.php

@extends('layouts.master')

@section('title' , 'Change Password')

@section('content')

<div class="Profile" dir="rtl">
    <div class="row container">
        <aside class="sidebarWrap sidebar-group col-sm-12 col-md-4 col-lg-3 col-xl-3 ">
            @include('userPanel.sidebar')
        </aside>
        <div id="main" class="col-sm-12 col-md-8 col-lg-9 col-xl-9">
            <div class="personal_information">
                <p class="bold" id="blue_icon" class="">بروزرسانی گذرواژه</p>
            </div>
            @include('admin.layouts.adminErrors')
            <div class="row container personal_information">
                <div class="col-sm-12 col-md-12 col-lg-12 col-xl-12">
                    <div class="tab-content">
                        <div class="tab-pane active" id="home">
                            <form class="form row" action="{{ route('changePassword.update', ['changePassword' => $user->id]) }}" method="POST" id="registrationForm" style="margin-bottom: 0px;padding-right: 0.75rem;font-size: 18px;font-weight: bold;">
                                @csrf
                                @method('PATCH')
                                <div class=" col-sm-12 col-md-12 col-lg-6 col-xl-6">
                                    <div class="form-group">
                                        <div class="col-xs-6">
                                            <label for="first_name">
                                                <p>گذرواژه فعلی:</p>
                                            </label>
                                            <input type="password" name="current_password" class="form-info" id="inputPassword" placeholder="********" title="enter your first name if any.">
                                        </div>
                                    </div>
                                </div>
                                <div class="col-sm-12 col-md-12 col-lg-6 col-xl-6 ">
                                    <div class="form-group">
                                        <div class="col-xs-6">
                                            <label for="nationalCode">
                                                <p>گذرواژه جدید:</p>
                                            </label>
                                            <input type="password" name="password" class="form-info" id="inputPassword2" placeholder="********" title="enter your nationalCode.">
                                        </div>
                                    </div>
                                    <div class="form-group">
                                        <div class="col-xs-6">
                                            <label for="nationalCode">
                                                <p>تایید گذرواژه جدید:</p>
                                            </label>
                                            <input type="password" name="password_confirmation" class="form-info" id="inputPassword2" placeholder="********" title="enter your nationalCode.">
                                        </div>
                                    </div>
                                </div>
                                <button class="btn btn-submit " type="submit">بروزرسانی</button>
                            </form>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>

@endsection

قسمت changePasswordController.php

<?php

namespace App\Http\Controllers\Profile;

use App\Http\Controllers\Controller;
use App\Models\User;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;

class changePasswordController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        $user = Auth::user();
        return view('userPanel.changePassword', compact('user'));
    }

    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request, User $changePassword)
    {
        if (!is_null($request->password)) {
            $request->validate([
                'password' => ['required', 'string', 'min:8', 'confirmed'],
            ]);

            $data['password'] = $request->password;
        }

        $changePassword->update($data);

        return redirect(route('userPanel.index'));
    }

}

ثبت پرسش جدید
مهران مرندی
مهران مرندی
تخصص :برنامه نویس
@mehranmarandi5 سال پیشمطرح شد
1

با اساس کد خودتون یه همچین چیزی میشه (با گوشی یه مقدار سخته نوشتن کد، شاید اشکال سینتکسی داشته باشه

            $request->validate([
                'password' => ['required', 'string', 'min:8', 'confirmed'],
                'old_password' => ['required'],
            ]);

            if (Hash::check($request->old_password, $changePassword->password)) {
                $data['password'] = $request->password;
            $changePassword->update($data);

            }

دقت کنید که فیلد oldpassword رو باید در view از کاربر دریافت کنید.
و تابع هش هم باید user بشه

use Illuminate\Support\Facades\Hash;

مهران مرندی
مهران مرندی
تخصص :برنامه نویس
@mehranmarandi5 سال پیشمطرح شد
0

میتونید همزمان با رمز جدید رمز قدیم کاربر رو هم دریافت کنید با کد زیر چک کنید که رمزش درست هست یا نه خروجی بهتون true false میده

Hash::check('INPUT PASSWORD', $user->password);

محمدهادی باقریان
محمدهادی باقریان
تخصص :web developer
@mohammadhadi5 سال پیشمطرح شد
0

ممنون الان تستش میکنم


محمدهادی باقریان
محمدهادی باقریان
تخصص :web developer
@mohammadhadi5 سال پیشمطرح شد
0

@mehranmarandi90 دقیق نمیدم چطوری توی کدم بزارمش میشه بیشتر راهنمایی کنید

الان به این شکل نوشتم درسته؟

public function update(Request $request, User $changePassword)
    {
        if (Hash::check('current_password', $changePassword->password)) {

            if (!is_null($request->password)) {
                $request->validate([
                    'password' => ['required', 'string', 'min:8', 'confirmed'],
                ]);

                $data['password'] = $request->password;
            }
            $changePassword->update($data);
        }

        return redirect(route('userPanel.index'));
    }

مهران مرندی
مهران مرندی
تخصص :برنامه نویس
@mehranmarandi5 سال پیشمطرح شد
1

با اساس کد خودتون یه همچین چیزی میشه (با گوشی یه مقدار سخته نوشتن کد، شاید اشکال سینتکسی داشته باشه

            $request->validate([
                'password' => ['required', 'string', 'min:8', 'confirmed'],
                'old_password' => ['required'],
            ]);

            if (Hash::check($request->old_password, $changePassword->password)) {
                $data['password'] = $request->password;
            $changePassword->update($data);

            }

دقت کنید که فیلد oldpassword رو باید در view از کاربر دریافت کنید.
و تابع هش هم باید user بشه

use Illuminate\Support\Facades\Hash;

محمدهادی باقریان
محمدهادی باقریان
تخصص :web developer
@mohammadhadi5 سال پیشمطرح شد
0

درست شد خیلی ممنون لطف کردید❤️🙏


برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام