#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 и ее повторное создание, казалось, решило проблему. Спасибо за ответ