Make site open and accessible to everyone
This commit is contained in:
parent
1fa55637f7
commit
2eccacde8b
39
index.html
39
index.html
@ -30,38 +30,6 @@ body{font:17px/1.6 -apple-system,BlinkMacSystemFont,"Segoe UI",Inter,system-ui,s
|
|||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div id="app">
|
<div id="app">
|
||||||
<!-- LOGIN SCREEN -->
|
|
||||||
<div id="login-screen" class="min-h-screen flex items-center justify-center p-4">
|
|
||||||
<div class="card w-full max-w-md">
|
|
||||||
<h1 class="text-2xl font-bold mb-2">HSE Assistant</h1>
|
|
||||||
<p class="text-gray-500 mb-6">Войдите через корпоративные данные</p>
|
|
||||||
<div class="mb-4">
|
|
||||||
<label class="block text-sm font-semibold mb-2">Табельный номер или логин</label>
|
|
||||||
<input type="text" id="login-id" class="input" placeholder="Например: admin">
|
|
||||||
</div>
|
|
||||||
<div class="mb-6">
|
|
||||||
<label class="block text-sm font-semibold mb-2">Пароль (любой для админа)</label>
|
|
||||||
<input type="password" id="login-pass" class="input" placeholder="••••••••">
|
|
||||||
</div>
|
|
||||||
<button onclick="doLogin()" class="btn w-full">Войти</button>
|
|
||||||
<div class="mt-4 p-3 bg-blue-50 rounded-lg border border-blue-200">
|
|
||||||
<p class="text-sm font-semibold text-blue-800 mb-2">🔑 Быстрый вход:</p>
|
|
||||||
<button onclick="quickLogin('admin')" class="btn text-sm py-1 px-3 mb-2 w-full">Админ (admin)</button>
|
|
||||||
<button onclick="quickLogin('1001')" class="btn btn-outline text-sm py-1 px-3 w-full">Сотрудник (1001)</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="mb-6">
|
|
||||||
<label class="block text-sm font-semibold mb-2">Пароль</label>
|
|
||||||
<input type="password" id="login-pass" class="input" placeholder="••••••••">
|
|
||||||
</div>
|
|
||||||
<button onclick="doLogin()" class="btn w-full">Войти</button>
|
|
||||||
<p class="text-sm text-gray-500 mt-4">Демо: admin / 12345 (админ) или 1001 / пароль (сотрудник)</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<!-- MAIN APP -->
|
|
||||||
<div id="main-app" class="hidden">
|
|
||||||
<!-- HEADER -->
|
<!-- HEADER -->
|
||||||
<header class="bg-[#0F1218] text-white p-4 sticky top-0 z-50">
|
<header class="bg-[#0F1218] text-white p-4 sticky top-0 z-50">
|
||||||
<div class="max-w-7xl mx-auto flex justify-between items-center">
|
<div class="max-w-7xl mx-auto flex justify-between items-center">
|
||||||
@ -69,8 +37,7 @@ body{font:17px/1.6 -apple-system,BlinkMacSystemFont,"Segoe UI",Inter,system-ui,s
|
|||||||
<span class="text-[#00E5FF] text-xl font-bold">🛡️ HSE Assistant</span>
|
<span class="text-[#00E5FF] text-xl font-bold">🛡️ HSE Assistant</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="flex items-center gap-4">
|
<div class="flex items-center gap-4">
|
||||||
<span id="user-info" class="text-sm text-gray-400"></span>
|
<span class="text-sm text-gray-400">Открытый доступ</span>
|
||||||
<button onclick="doLogout()" class="btn btn-outline text-sm text-white border-gray-600 hover:bg-gray-800">Выйти</button>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</header>
|
</header>
|
||||||
@ -170,10 +137,8 @@ body{font:17px/1.6 -apple-system,BlinkMacSystemFont,"Segoe UI",Inter,system-ui,s
|
|||||||
<h2 class="text-xl font-bold mb-4" id="emp-title">Моё HSE обучение</h2>
|
<h2 class="text-xl font-bold mb-4" id="emp-title">Моё HSE обучение</h2>
|
||||||
<div id="emp-courses"></div>
|
<div id="emp-courses"></div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/xlsx/0.18.5/xlsx.full.min.js"></script>
|
||||||
<script src="script.js"></script>
|
<script src="script.js"></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
52
script.js
52
script.js
@ -97,59 +97,17 @@ function generateEmployees() {
|
|||||||
const EMPLOYEES = generateEmployees();
|
const EMPLOYEES = generateEmployees();
|
||||||
|
|
||||||
// ========== СОСТОЯНИЕ ==========
|
// ========== СОСТОЯНИЕ ==========
|
||||||
let currentUser = null;
|
let currentUser = { tab: 'admin', fullName: 'Администратор системы', role: 'admin' };
|
||||||
let isAdmin = false;
|
let isAdmin = true;
|
||||||
|
|
||||||
// ========== АВТОРИЗАЦИЯ ==========
|
// ========== АВТОМАТИЧЕСКАЯ ЗАГРУЗКА ==========
|
||||||
function doLogin() {
|
document.addEventListener('DOMContentLoaded', function() {
|
||||||
const login = document.getElementById('login-id').value.trim();
|
|
||||||
const pass = document.getElementById('login-pass').value.trim();
|
|
||||||
|
|
||||||
if (!login) { alert('Введите табельный номер'); return; }
|
|
||||||
|
|
||||||
// Админ - любой пароль
|
|
||||||
if (login === 'admin' || login === '12345' || login === 'administrator' || login === 'root') {
|
|
||||||
isAdmin = true;
|
|
||||||
currentUser = { tab: 'admin', fullName: 'Администратор системы', role: 'admin' };
|
|
||||||
} else {
|
|
||||||
// Поиск сотрудника
|
|
||||||
const emp = EMPLOYEES.find(e => e.tab === login || e.fullName.toLowerCase().includes(login.toLowerCase()));
|
|
||||||
if (!emp) { alert('Сотрудник не найден. Попробуйте: 1001-1050'); return; }
|
|
||||||
isAdmin = false;
|
|
||||||
currentUser = emp;
|
|
||||||
}
|
|
||||||
|
|
||||||
document.getElementById('login-screen').classList.add('hidden');
|
|
||||||
document.getElementById('main-app').classList.remove('hidden');
|
|
||||||
document.getElementById('user-info').textContent = `${currentUser.fullName} (${isAdmin ? 'Администратор' : 'Сотрудник'})`;
|
|
||||||
|
|
||||||
if (isAdmin) {
|
|
||||||
document.getElementById('admin-panel').classList.remove('hidden');
|
document.getElementById('admin-panel').classList.remove('hidden');
|
||||||
document.getElementById('employee-panel').classList.add('hidden');
|
document.getElementById('employee-panel').classList.add('hidden');
|
||||||
showTab('dashboard');
|
showTab('dashboard');
|
||||||
renderDashboard();
|
renderDashboard();
|
||||||
renderCityStats();
|
renderCityStats();
|
||||||
} else {
|
});
|
||||||
document.getElementById('admin-panel').classList.add('hidden');
|
|
||||||
document.getElementById('employee-panel').classList.remove('hidden');
|
|
||||||
renderEmployeeCourses(currentUser);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function doLogout() {
|
|
||||||
currentUser = null;
|
|
||||||
isAdmin = false;
|
|
||||||
document.getElementById('login-screen').classList.remove('hidden');
|
|
||||||
document.getElementById('main-app').classList.add('hidden');
|
|
||||||
document.getElementById('login-id').value = '';
|
|
||||||
document.getElementById('login-pass').value = '';
|
|
||||||
}
|
|
||||||
|
|
||||||
function quickLogin(login) {
|
|
||||||
document.getElementById('login-id').value = login;
|
|
||||||
document.getElementById('login-pass').value = '12345';
|
|
||||||
doLogin();
|
|
||||||
}
|
|
||||||
|
|
||||||
// ========== ТАБЫ ==========
|
// ========== ТАБЫ ==========
|
||||||
function showTab(name) {
|
function showTab(name) {
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user