2016-09-20 28 views
10

Chcę utworzyć formularz z 3 pola (old_password, new_password, confirm_password) z laravel 5.zmiana laravel użytkownika Hasło 5,3

Zobacz

stare hasło: {!! Form::password('old_password',['class' => 'form-control']) !!}

Nowe hasło: {!! Form::password('password',['class' => 'form-control']) !!}

Potwierdź nowe hasło: {!! Form::password('verify_password',['class' => 'form-control']) !!}

Controller gdy użytkownik

public function postRegister(Request $request) 
{ 
    $rules = [ 
     'email'    => 'required|email|unique:users', 
     'confirm_email'  => 'required|same:email', 
     'password'   => 'required|min:8|regex:/^(?=\S*[a-z])(?=\S*[[email protected]#$&*])(?=\S*[A-Z])(?=\S*[\d])\S*$/', 
     'verify_password' => 'required|same:password', 
    ]; 

    $messages = [ 
     'email.required'   => 'email tidak boleh kosong', 
     'password.required'   => 'password tidak boleh kosong', 
     'password.min'    => 'Password harus minimal 8 karakter', 
     'password.regex'   => 'Format password harus terdiri dari kombinasi huruf besar, angka dan karakter spesial (contoh:[email protected]#$%^&*?><).', 
     'verify_password.required' => 'Verify Password tidak boleh kosong', 
     'email.email'    => 'Format Email tidak valid', 
     'email.unique'    => 'Email yang anda masukkan telah digunakan', 
     'verify_password.same'  => 'Password tidak sama!', 
    ]; 

    $this->validate($request,$rules,$messages); 


    $newUser = $this->user->create([ 
     'email'   => $request->email, 
     'password'  => \Hash::make($request->password), 
    ]); 
    $this->activationService->sendActivationMail($newUser); 

    return redirect('/account/login')->with('success', 'Check your email'); 
} 

Jestem nowy w laravel, czytałem trochę podobny problem, aby zmienić hasło w stackoverflow, ale to mi nie pomaga.

Jak napisać kod w moim kontrolerze dla użytkownika zmiany hasła ?. Dzięki z góry.

+0

można użyć wbudowanej passwordcontroller. –

+1

Jeśli chcesz ręcznie, musisz zbadać stronę 'vendor \ laravel \ framework \ src \ Illuminate \ Foundation \ Auth \ ResetsPasswords \ PasswordController.php'. – Manish

+0

Sprawdź to https://www.5balloons.info/setting-up-change-password-with-laravel-authentication/ – jpussacq

Odpowiedz

24

Jest to forma zmiany hasła

<form id="form-change-password" role="form" method="POST" action="{{ url('/user/credentials') }}" novalidate class="form-horizontal"> 
    <div class="col-md-9">    
    <label for="current-password" class="col-sm-4 control-label">Current Password</label> 
    <div class="col-sm-8"> 
     <div class="form-group"> 
     <input type="hidden" name="_token" value="{{ csrf_token() }}"> 
     <input type="password" class="form-control" id="current-password" name="current-password" placeholder="Password"> 
     </div> 
    </div> 
    <label for="password" class="col-sm-4 control-label">New Password</label> 
    <div class="col-sm-8"> 
     <div class="form-group"> 
     <input type="password" class="form-control" id="password" name="password" placeholder="Password"> 
     </div> 
    </div> 
    <label for="password_confirmation" class="col-sm-4 control-label">Re-enter Password</label> 
    <div class="col-sm-8"> 
     <div class="form-group"> 
     <input type="password" class="form-control" id="password_confirmation" name="password_confirmation" placeholder="Re-enter Password"> 
     </div> 
    </div> 
    </div> 
    <div class="form-group"> 
    <div class="col-sm-offset-5 col-sm-6"> 
     <button type="submit" class="btn btn-danger">Submit</button> 
    </div> 
    </div> 
</form> 

Tworzenie

public function admin_credential_rules(array $data) 
{ 
    $messages = [ 
    'current-password.required' => 'Please enter current password', 
    'password.required' => 'Please enter password', 
    ]; 

    $validator = Validator::make($data, [ 
    'current-password' => 'required', 
    'password' => 'required|same:password', 
    'password_confirmation' => 'required|same:password',  
    ], $messages); 

    return $validator; 
} 

użytkownika metody kontrolera reguły do ​​zmiany hasła

użytkowania walidator;

public function postCredentials(Request $request) 
{ 
    if(Auth::Check()) 
    { 
    $request_data = $request->All(); 
    $validator = $this->admin_credential_rules($request_data); 
    if($validator->fails()) 
    { 
     return response()->json(array('error' => $validator->getMessageBag()->toArray()), 400); 
    } 
    else 
    { 
     $current_password = Auth::User()->password;   
     if(Hash::check($request_data['current-password'], $current_password)) 
     {   
     $user_id = Auth::User()->id;      
     $obj_user = User::find($user_id); 
     $obj_user->password = Hash::make($request_data['password']);; 
     $obj_user->save(); 
     return "ok"; 
     } 
     else 
     {   
     $error = array('current-password' => 'Please enter correct current password'); 
     return response()->json(array('error' => $error), 400); 
     } 
    }   
    } 
    else 
    { 
    return redirect()->to('/'); 
    }  
} 
+2

Dlaczego sprawdzasz, czy obecne hasło ma co najmniej 8 znaków? Być może użytkownik ma hasło, które ma mniej niż 8 znaków i musi go zmienić na> = 8. –

+0

To była tylko część sprawdzania poprawności .. – Komal

+0

Tak, oczywiście, ale to jest coś, gdzie kod może się nie udać;) –

-1

Funkcja changePassword.blade.php

@extends('layouts.app') 

@section('content') 
    <!-- header logo: style can be found in header.less --> 
    <header class="header"> 
     <div class="container"> 
      <div class="row"> 
       <div class="col-lg-6"> 
       <a href="index.php" class="logo"> 
        <!-- Add the class icon to your logo image or logo icon to add the margining --> 
        <img src="img/airbus-logo.png" /> 
       </a></div> 
       <!-- Header Navbar: style can be found in header.less --> 
       <div class="col-lg-6"> 
        @include('partials._userModal') 
        @include('partials._menu') 
       </div> 
      </div> 
     </div> 
    </header> 
    <div class="wrapper"> 
     <div class="container"> 
      <!-- Right side column. Contains the navbar and content of the page --> 
      <aside class="content files-list clearfix"> 
       <h2> 
       @if(Auth::check()) 
       Welcome {{ Auth::user()->fullName }} 
       @endif 
       </h2> 
        <div class="col-xs-5"> 
         <h4>Change password</h4><br /> 
         @if($errors->any()) 
          @foreach($errors->all() as $error) 
           <p style='padding:15px;' class='bg-danger'>{{ $error }}</p> 
          @endforeach 
         @endif 
         @if(Request::get('errorMessage') !== null) 
          <p style='padding:15px;' class='bg-danger'>{{ Request::get('errorMessage') }}</p> 
         @endif 
         <form method="post"> 
          {{ csrf_field() }} 
          <div class="placeholder">Current Password</div> 
          <input style="max-width:200px;" placeholder='Current password' name="oldpass" id="oldpass" class="form-control" type="password"><br> 
          <div class="placeholder">New password</div> 
          <input style="max-width:200px;" placeholder='New password' name="password" id="password" class="form-control" type="password"><br> 
          <div class="placeholder">Confirm password</div> 
          <input id="password_confirmation" style="max-width:200px;" placeholder='Confirm password' name="password_confirmation" class="form-control" type="password"> 
          <hr> 
          <input type="submit" class="btn btn-primary" value="Save"> 
         </form>  
        </div> 
      </aside> 
      <!-- /.right-side --> 
     </div> 
     <div style=" height: 155px;"></div> 
     <div id="footer"> 
      <div class="container"> © Airbus Group 2015 </div> 
     </div> 
    </div> 
    <!-- ./wrapper --> 
    <!-- <script src="js/hub/demo.js" type="text/javascript"></script> --> 
<script type="text/javascript"> 
    $(document).ready(function(){ 
     var bHeight = $("body").height(); 
     var wHeight = $(window).height(); 
     if(bHeight < wHeight){ 
      $("#footer").addClass("absolute"); 
     }else{ 
      $("#footer").removeClass("absolute"); 
     } 
     if (!$.support.htmlSerialize && !$.support.opacity){ 
      $(".placeholder").show(); 
     } 
    }); 
</script> 
@endsection 

Controller post

public function postChangePassword(Request $request) 
    { 
     $validatedData = $request->validate([ 
      'oldpass' => 'required|min:6', 
      'password' => 'required|string|min:6', 
      'password_confirmation' => 'required|same:password', 
     ],[ 
      'oldpass.required' => 'Old password is required', 
      'oldpass.min' => 'Old password needs to have at least 6 characters', 
      'password.required' => 'Password is required', 
      'password.min' => 'Password needs to have at least 6 characters', 
      'password_confirmation.required' => 'Passwords do not match' 
     ]); 

     $current_password = \Auth::User()->password;   
     if(\Hash::check($request->input('oldpass'), $current_password)) 
     {   
      $user_id = \Auth::User()->id;      
      $obj_user = User::find($user_id); 
      $obj_user->password = \Hash::make($request->input('password')); 
      $obj_user->save(); 
      return view('auth.passwords.changeConfirmation'); 
     } 
     else 
     {   
      $data['errorMessage'] = 'Please enter correct current password'; 
      return redirect()->route('user.getChangePassword', $data); 
     } 
    } 
Powiązane problemy