2015-08-29 11 views
5

मैं अपने लॉग इन/अधिकृत उपयोगकर्ताओं के लिए पासवर्ड परिवर्तन सुविधा जोड़ने की कोशिश कर रहा हूं। यह अपने सादे OLE सामान्य सेट अप:लार्वेल में वर्तमान पासवर्ड मान्य/अधिकृत करें 5.1

Current Password 
New Password 
Confirm New Password 

जाहिर है मैं सिर्फ नया पासवर्ड और पासवर्ड की पुष्टि पर मान्य उपयोग कर सकते हैं, लेकिन मैं कैसे को अधिकृत करते हैं उनकी वास्तविक वर्तमान पासवर्ड के खिलाफ प्रस्तुत वर्तमान पासवर्ड?

उपयोगकर्ता मॉडल में password एक छिपी हुई संपत्ति है इसलिए मैं उन्हें सिर्फ मिलान नहीं कर सकता।

मैंने Illiminate\Auth और Guard के माध्यम से देखने की कोशिश की लेकिन मुझे इसे कहीं भी नहीं देखा। शायद मुझे यह याद आया, या शायद मैं इस बारे में गलत तरीके से जा रहा हूं?

+0

मुझे बताएं कि क्या मेरा जवाब वह है जो आप ढूंढ रहे हैं। – MaXi32

उत्तर

10

यहाँ है किसी और मामले किसी में जवाब की तलाश में है:

$validator = $this->validator($request->all()); 

$validator->after(function($validator) use ($request) { 
    $check = auth()->validate([ 
     'email' => $this->user->email, 
     'password' => $request->current_password 
    ]); 

    if (!$check): 
     $validator->errors()->add('current_password', 
      'Your current password is incorrect, please try again.'); 
    endif; 
}); 

if ($validator->fails()): 
    return redirect('account/password') 
     ->withErrors($validator) 
     ->withInput(); 
endif; 

$this->user->password = bcrypt($request->password); 
$this->user->save(); 
+1

क्या उन चेक को सीधे अनुरोध में जोड़ना संभव है? – naneri

1

वर्तमान पासवर्ड प्राप्त करें और नए पासवर्ड के साथ तुलना करें।

//use Auth, Hash, Input; 

if (Hash::check(Input::get('new_password'), Auth::user()->password)) 
     echo "Matched"; 
else 
     echo "Not matched"; 

क्या आपने प्रमाणीकरण पैकेज में बनाए गए लार्वेल का उपयोग किया था? यदि हां, तो सत्यापन आपके लिए किया गया है। ऐप/एचटीपी/कंट्रोलर/ऑथ/ऑथकंट्रोलर.एफ़पी जांचें, आप यह सत्यापन फ़ंक्शन देख सकते हैं। आप आप चाहते हैं !:

protected function validator(array $data) 
{ 
    return Validator::make($data, [ 
     'first_name' => 'required|max:255', 
     'last_name' => 'required|max:255', 
     'email' => 'required|email|max:255|unique:users', 
     'password' => 'required|confirmed|min:6', 
    ]); 
} 

ऊपर सत्यापन के दौरान कोई त्रुटि यदि ऐसा होता है, तो अधिक जोड़ सकते हैं, यह $ त्रुटियों चर जहाँ आपके ब्लेड दृश्य उन्हें पकड़ कर सकते हैं करने के लिए भेजा जाएगा। तो, आपके कूटशब्द पुनर्स्थापन दृश्य (देखें/प्रमाणन/reset.blade.php) में, आप का पालन सत्यापन त्रुटियों पकड़ कर सकते हैं:

@if (count($errors) > 0) 
         <div class="alert alert-danger"> 
          <strong>Whoops!</strong> There were some problems with your input.<br><br> 
          <ul> 
           @foreach ($errors->all() as $error) 
            <li>{{ $error }}</li> 
           @endforeach 
          </ul> 
         </div> 
@endif 
+0

अजीब यह काम नहीं करता है मैंने शुरुआत में कोशिश की। लेकिन हां, यह वास्तव में उतना ही मदद नहीं करता जितना मैं आशा करता हूं क्योंकि मुझे तुलना करने के लिए अभी भी एक कस्टम सत्यापनकर्ता लिखना होगा। यह विश्वास करना मुश्किल है कि यह पहले से ही वैधकर्ता का हिस्सा नहीं है। –

+0

हाय, मैंने अपना जवाब अपडेट कर दिया है। क्या आपने प्रमाणीकरण पैकेज में निर्मित लार्वेल का उपयोग किया था? यदि हां, तो आपको कस्टम सत्यापनकर्ता लिखना नहीं है। यह आपके लिए किया गया है, बस आपको उस त्रुटि को ब्लेड व्यू में प्रदर्शित करने की आवश्यकता है। कृपया मुझे बताएं कि क्या वह जवाब है जिसे आप ढूंढ रहे हैं और यदि आपको अधिक स्पष्टीकरण की आवश्यकता है तो बस पूछें। :) – MaXi32

+0

हाँ यह सवाल में स्पष्ट रूप से बताया गया है कि यह उपयोगकर्ताओं में लॉग इन है। और हाँ वे ऑथ सिस्टम में बेक्ड के साथ बनाए गए थे। –

संबंधित मुद्दे