add superadmin dashboard. subscriptions
This commit is contained in:
@@ -59,6 +59,56 @@
|
||||
font-weight: 500;
|
||||
margin-bottom: 0.5rem;
|
||||
}
|
||||
|
||||
.session-item {
|
||||
padding: 1rem;
|
||||
border: 1px solid #e9ecef;
|
||||
border-radius: 0.5rem;
|
||||
margin-bottom: 0.75rem;
|
||||
background: #fafafa;
|
||||
}
|
||||
|
||||
.session-item:last-child {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.session-device {
|
||||
font-weight: 500;
|
||||
color: #333;
|
||||
}
|
||||
|
||||
.session-meta {
|
||||
font-size: 0.875rem;
|
||||
color: #6c757d;
|
||||
margin-top: 0.25rem;
|
||||
}
|
||||
|
||||
.session-current {
|
||||
border-color: #198754;
|
||||
background: #f0fff4;
|
||||
}
|
||||
|
||||
.session-current .badge {
|
||||
background: #198754;
|
||||
}
|
||||
|
||||
.session-badge {
|
||||
font-size: 0.75rem;
|
||||
padding: 0.25rem 0.5rem;
|
||||
border-radius: 0.25rem;
|
||||
}
|
||||
|
||||
.empty-sessions {
|
||||
text-align: center;
|
||||
padding: 2rem;
|
||||
color: #6c757d;
|
||||
}
|
||||
|
||||
.empty-sessions i {
|
||||
font-size: 3rem;
|
||||
margin-bottom: 1rem;
|
||||
opacity: 0.5;
|
||||
}
|
||||
</style>
|
||||
{% endblock %}
|
||||
|
||||
@@ -137,6 +187,65 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Активные сессии и устройства -->
|
||||
<div class="card mb-4">
|
||||
<div class="card-header bg-white d-flex justify-content-between align-items-center">
|
||||
<h4 class="mb-0"><i class="fa-solid fa-desktop me-2"></i>Активные сессии</h4>
|
||||
{% if sessions|length > 0 %}
|
||||
<form action="{{ base_url('/profile/sessions/revoke-all') }}" method="post" onsubmit="return confirm('Вы уверены? Это завершит сессии на всех устройствах, кроме текущего.');">
|
||||
{{ csrf_field()|raw }}
|
||||
<button type="submit" class="btn btn-outline-danger btn-sm">
|
||||
<i class="fa-solid fa-times me-1"></i>Завершить все
|
||||
</button>
|
||||
</form>
|
||||
{% endif %}
|
||||
</div>
|
||||
<div class="card-body">
|
||||
{% if sessions|length > 0 %}
|
||||
{% for session in sessions %}
|
||||
<div class="session-item{% if session.is_current %} session-current{% endif %}">
|
||||
<div class="d-flex justify-content-between align-items-start">
|
||||
<div>
|
||||
<div class="session-device">
|
||||
<i class="fa-solid fa-desktop me-2"></i>{{ session.device }}
|
||||
{% if session.is_current %}
|
||||
<span class="badge session-badge ms-2">Текущая сессия</span>
|
||||
{% endif %}
|
||||
</div>
|
||||
<div class="session-meta">
|
||||
<i class="fa-solid fa-globe me-1"></i>{{ session.ip_address }}
|
||||
{% if session.expires_at %}
|
||||
|
|
||||
<i class="fa-solid fa-clock me-1"></i>истекает {{ session.expires_at|date('d.m.Y H:i') }}
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
{% if not session.is_current %}
|
||||
<form action="{{ base_url('/profile/session/revoke') }}" method="post">
|
||||
{{ csrf_field()|raw }}
|
||||
<input type="hidden" name="session_id" value="{{ session.id }}">
|
||||
<button type="submit" class="btn btn-outline-danger btn-sm" onclick="return confirm('Завершить эту сессию?');">
|
||||
<i class="fa-solid fa-times"></i>
|
||||
</button>
|
||||
</form>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
{% endfor %}
|
||||
|
||||
<div class="alert alert-info mt-3 mb-0">
|
||||
<i class="fa-solid fa-info-circle me-2"></i>
|
||||
<strong>Запомненные устройства:</strong> Если вы отметили "Запомнить меня" при входе, устройство будет автоматически авторизовано в течение 30 дней. Вы можете завершить эти сессии вручную.
|
||||
</div>
|
||||
{% else %}
|
||||
<div class="empty-sessions">
|
||||
<i class="fa-solid fa-shield-check"></i>
|
||||
<p>Нет активных сессий на других устройствах</p>
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Информация о безопасности -->
|
||||
<div class="card">
|
||||
<div class="card-header bg-white">
|
||||
|
||||
Reference in New Issue
Block a user