Laravel 7.0: ошибка входа в систему — эти учетные данные не соответствуют нашим записям

#php #laravel #authentication

#php #laravel #аутентификация

Вопрос:

Это мой первый большой проект с Laravel. Я добавил многорядную функцию удаления для своей таблицы пользователей, она сработала и отключила меня, и я не смог снова войти в систему. Также все мои маршруты не работают. я не совсем уверен, что делать, я пытался войти в систему с другими данными пользователя, но результат все тот же. Я также создал новый профиль пользователя. Ниже приведен код файла пользовательского блейда

 @extends('layouts.admin')
@section('content')

   <!-- Page Heading -->
    @can('user_create')
    <div class="d-sm-flex align-items-center justify-content-between mb-4">
        <h2 class="h3 mb-0 ">Staff</h2>
   
        <span class="d-md-flex d-sm-block left-side ">
        
        <a href="{{ route("admin.users.create") }}" class="d-none d-sm-inline-block button shadow-sm text-white py-2"> Add Staff</a>
        </span>
    </div>
    @endcan
    <!-- toolbar -->
    <div class="row">
        <div class="col-2">
        <div class="d-md-flex">
        <span class="d-flex mr-4">
            <span class="mr-2"><small>Sort</small></span>  <div class="dropdown arrow">
            <a class="dropdown-toggle font-weight-bold" href="#" role="button" id="dropdownMenuLink" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
            <small>All</small>
            </a>
            <div class="dropdown-menu dropdown-menu-right shadow animated--fade-in" aria-labelledby="dropdownMenuLink">
            
                <a class="dropdown-item" href="#">Name</a>
                <a class="dropdown-item" href="#">No of ticket</a>
                <a class="dropdown-item" href="#">Something else here</a>
            </div>
            </div> 
        </span>
        <span>
            <a href="#" class="d-none d-sm-inline-block button-1 text-muted mr--3" id="DASR"> Layout off Staff</a>
        </span>
        </div>
        </div>
    </div>
    <div class="row">
        <!-- main content column -->
        <div class="col-xl-12 col-lg-12">
            <div class="table-responsive px-1">
                        <table class="ajaxTable datatable datatable-User">
                            <thead>
                                <tr>
                                    <th scope="col ml-3"><small class="align-middle">
                                        <label class="checkbox-container">
                                          <input type="checkbox" id="chkCheckAll">
                                          <span class="checkmark"></span>
                                        </label>
                                      </th>
                                    <th scope="col ml-3 "><small class="align-middle">Name <small></th>
                                    <th scope="col ml-3"><small class="align-middle">Position<small></th>
                                    <th scope="col ml-3"><small class="">Department<small></th>
                                      <th scope="col ml-3"><small class="">Phone<small></th>
                                        <th scope="col ml-3"><small class="">Email<small></th>
                                    <th scope="col ml-3"><small class="">Assigned ticket<small></th>
                                    <th scope="col ml-3"><small class="">Date Created<small></th>
                                    <th scope="col ml-3"><small class="">Actions<small></th>
                                </tr>
                            </thead>
                            <tbody>
                                @foreach($users as $key => $user)
                                    <tr class="rounded-3" id="sid{{ $user->id }}">
                                        <td class="align-middle"> 
                                            <label class="checkbox-container">
                                              <input type="checkbox" name="ids" value="{{ $user->id }}" class="chkBoxClass" >
                                              <span class="checkmark"></span>
                                            </label>
                                        </td>
                                      
                                        <td>
                                        <a href="{{ route("admin.users.show",$user) }}"><span class="d-block font-weight-bold">
                                              
                                              <img class="img-profile rounded-circle mr-2" height ="40" width="40" src="https://source.unsplash.com/QAB-WJcbgJk/60x60">
                                              {{ $user->name ?? '' }}</span></a>
                                        </td>
                                        <td>
                                            @foreach($user->roles as $key => $item)
                                                <span class="badge badge-info">{{ $item->title }}</span>
                                            @endforeach
                                        </td>
                                        <td class="align-middle">
                                          @foreach($user->categories as $key => $item)
                                          <div>{{ $item->name }}</div>
                                      @endforeach
                                        </td>
                                        <td class="align-middle">
                                          {{ $user->phone}}
                                        </td>
                                        <td class="align-middle font-weight-bold">
                                            {{ $user->email ?? '' }}
                                        </td>
                                        <td class="align-middle">
                                          {{ count($user->tickets) }}
                                        </td>
                                        <td class="align-middle text-center">
                                          {{ $user->created_at ?? '' }}
                                        </td>
                                        <td>
                                            <div class="dropdown no-arrow">
                                                <a class="dropdown-toggle font-weight-bold" href="#" role="button" id="dropdownMenuLink" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
                                                  <i class="fas fa-ellipsis-v fa-sm fa-fw text-gray-400 "></i>
                                                </a>
                                                <div class="dropdown-menu dropdown-menu-right shadow animated--fade-in" aria-labelledby="dropdownMenuLink">
                                                 
                                                  @can('user_show')
                                                  <a class="dropdown-item" href="{{ route('admin.users.show', $user->id) }}">
                                                      {{ trans('global.view') }}
                                                  </a>
                                                  @endcan
                                                  @can('user_edit')
                                                    <a class="dropdown-item" href="{{ route('admin.users.edit', $user->id) }}">
                                                        {{ trans('global.edit') }}
                                                    </a>
                                                  @endcan
                                                  @can('user_delete')
                                                    <form class="d-flex" action="{{ route('admin.users.destroy', $user->id) }}" method="POST" onsubmit="return confirm('{{ trans('global.areYouSure') }}');" style="display: inline-block;">
                                                        <input type="hidden" name="_method" value="DELETE">
                                                        <input type="hidden" name="_token" value="{{ csrf_token() }}">
                                                        <input type="submit" class="dropdown-item" value="{{ trans('global.delete') }}">
                                                    </form>
                                                  @endcan
                                             
                                                </div>
                                              </div>
                                        </td>

                                    </tr>
                                @endforeach
                            </tbody>
                        </table>
                        {{ $users->links() }}
            </div>
        </div>
    </div>
@endsection
@section('scripts')
@parent
<script>
    $(function () 
    {
  let dtButtons = $.extend(true, [], $.fn.dataTable.defaults.buttons)
@can('user_delete')
  let deleteButtonTrans = '{{ trans('global.datatables.delete') }}'
  let deleteButton = {
    text: deleteButtonTrans,
    url: "{{ route('admin.users.massDestroy') }}",
    className: 'btn-danger',
    action: function (e, dt, node, config) {
      var ids = $.map(dt.rows({ selected: true }).nodes(), function (entry) {
          return $(entry).data('entry-id')
      });

      if (ids.length === 0) {
        alert('{{ trans('global.datatables.zero_selected') }}')

        return
      }

      if (confirm('{{ trans('global.areYouSure') }}')) {
        $.ajax({
          headers: {'x-csrf-token': _token},
          method: 'POST',
          url: config.url,
          data: { ids: ids, _method: 'DELETE' }})
          .done(function () { location.reload() })
      }
    }
  }
  dtButtons.push(deleteButton)
@endcan

  $.extend(true, $.fn.dataTable.defaults, {
    order: [[ 1, 'desc' ]],
    pageLength: 4,
  });
  $('.datatable-User:not(.ajaxTable)').DataTable({ buttons: dtButtons })
    $('a[data-toggle="tab"]').on('shown.bs.tab', function(e){
        $($.fn.dataTable.tables(true)).DataTable()
            .columns.adjust();
    });
})

</script>
<script>
$(function(e){
  $("#chkCheckAll").click(function(){
    $(".chkBoxClass").prop('checked', $(this).prop('checked'));
  });
  $('#DASR').click(function(e){
    e.preventDefault();
    var allids = [];
    $("input:checkbox[name=ids]:checked").each(function(){
      allids.push($(this).val());
    });
    $.ajax({
      url:"{{route('admin.users.massDestroy')}}",
      type:'DELETE',
      data:{
        ids:allids,
        _token: $("input[name=_token]").val()
      },
      success:function(response)
      {
        $.each(allids,function(key, val){
          $('#sid' val).remove();
        });
      }
    });
  });
});
</script> 
@endsection
 

Комментарии:

1. Проверьте свою базу данных и посмотрите, какие записи существуют в таблице users. Вероятно, когда вы вызывали функцию удаления нескольких строк, она удаляла все записи или записи, с помощью которых вы пытаетесь войти в систему.

2. В вашем javascript я вижу massDestroy маршрут. Не могли ли вы удалить не всех пользователей и попытаться снова войти в систему с помощью пользователя / пользователей, которых вы удалили? Проверьте свою базу данных, чтобы узнать, существуют ли пользователи.

3. Спасибо за ответ. Я смог решить проблему, удалив предыдущую таблицу users в моей базе данных и создав ее заново. Не совсем уверен, в чем проблема, но теперь она работает нормально @DonKarnash

Ответ №1:

У вас есть репозиторий для совместного использования, чтобы мы могли видеть полную базу кода. Я бы сказал, что проблема не связана именно с этой страницей. Было бы интересно узнать, какая функциональность стоит за маршрутом ‘admin.users.massDestroy’ тоже … возможно, это удалило то, чего не следовало делать.

Кроме этого, я могу только догадываться и, возможно, сказать, что пароли неверны при входе в систему. Или что-то не так с кэшем. Вы можете попробовать очистить его.

Комментарии:

1. Я думаю, что что-то пошло не так в моей базе данных, потому что удаление таблицы user и ее повторное создание, казалось, решило проблему. Спасибо за ответ