Skip to content

Commit

Permalink
hash pass
Browse files Browse the repository at this point in the history
  • Loading branch information
Hanna committed Nov 17, 2024
1 parent 4e64e4e commit 4783169
Show file tree
Hide file tree
Showing 2 changed files with 142 additions and 115 deletions.
244 changes: 130 additions & 114 deletions admin.html
Original file line number Diff line number Diff line change
Expand Up @@ -20,24 +20,24 @@ <h2>Введіть пароль для доступу до адмін-панел
<nav class="nav">
<div class="container">
<div class="nav__row">
<a href="/" class="logo">
<div class="logo">
<img src="./img/icons/logo2.png" alt="logo" />
</a>
</div>

<!--Hamburger menu-->
<button id="hamburgerBtn" class="hamburger">&#9776;</button>

<div class="navigation-list">
<ul class="dash-under-link">
<li class="nav__link">
<a href="/">Головна</a>
</li>
<li class="nav__link"><a href="about">Про нас</a></li>
<li class="nav__link"><a href="portfolio">Портфоліо</a></li>
<!-- <li class="nav__link"><a href="#">Послуги</a></li> -->
<li class="nav__link"><a href="reviews">Відгуки</a></li>
<li class="nav__link"><a href="admin" class="active">Панель Адміністратора</a></li>
</ul>
<li class="nav__link">
<a href="/" class="active">Головна</a>
</li>
<li class="nav__link"><a href="about">Про нас</a></li>
<li class="nav__link"><a href="#">Портфоліо</a></li>
<li class="nav__link"><a href="#">Послуги</a></li>
<li class="nav__link"><a href="reviews">Відгуки</a></li>
<li class="nav__link"><a href="admin">Панель Адміністратора</a></li>
</ul>
</div>
</div>
</div>
Expand All @@ -62,75 +62,75 @@ <h1 class="admin-reviews-title">Відгуки</h1>
<!-- Тут будуть відображатися несхвалені відгуки -->
</div>

</main>

<footer class="footer">
<div class="container">
<div class="footer__row">
<div class="footer__info">
<div class="footer__logo">
<div class="logo">
<img src="./img/icons/logo.png" alt="logo" />
</div>
</div>

<div class="footer__info-text">
<p>
Декоративні штукатурки West Decor дозволяють створювати сучасні
ефекти: камінь, бетон, травертин, марморін, мерехтливий,
перламутр, оксамит, мармур.
</p>
</div>

<div class="footer__socials">
<a href="#!">
<img src="./img/social/facebook.svg" alt="fb" />
</a>
<a href="#!">
<img src="./img/social/twitter.svg" alt="tw" />
</a>
<a href="#!">
<img src="./img/social/youtube.svg" alt="yt" />
</a>
<a href="#!">
<img src="./img/social/linkedin.svg" alt="ln" />
</a>
</div>
</div>

<div class="footer__nav">
<div class="footer__nav-block">
<h4 class="footer__nav-block-title">Навігація</h4>
<ul class="dash-under-link dash-under-link__center">
<li><a href="/">Головна</a></li>
<li><a href="about">Про нас</a></li>
<li><a href="portfolio">Портфоліо</a></li>
<!-- <li><a href="">Послуги</a></li> -->
<li><a href="reviews">Відгуки</a></li>
</ul>
</div>

<div class="footer__nav-block">
<h4 class="footer__nav-block-title">Контакти</h4>
<ul>
<li>
<a href="mailto:[email protected]">[email protected]</a>
</li>
<li>
<a href="#!" onclick="confirmCall('+380 95 716 87 47')"
>+380 95 716 87 47</a
>
</li>
</ul>
</div>
</div>
</div>
<footer class="footer">
<div class="container">
<div class="footer__row">
<div class="footer__info">
<div class="footer__logo">
<div class="logo">
<img src="./img/icons/logo.png" alt="logo" />
</div>

<div class="footer__bottom">
<p>&copy; 2024 West Decor. Всі права захищені.</p>
</div>

<div class="footer__info-text">
<p>
Декоративні штукатурки West Decor дозволяють створювати сучасні
ефекти: камінь, бетон, травертин, марморін, мерехтливий,
перламутр, оксамит, мармур.
</p>
</div>

<div class="footer__socials">
<a href="#!">
<img src="./img/social/facebook.svg" alt="fb" />
</a>
<a href="#!">
<img src="./img/social/twitter.svg" alt="tw" />
</a>
<a href="#!">
<img src="./img/social/youtube.svg" alt="yt" />
</a>
<a href="#!">
<img src="./img/social/linkedin.svg" alt="ln" />
</a>
</div>
</footer>
</div>

<div class="footer__nav">
<div class="footer__nav-block">
<h4 class="footer__nav-block-title">Навігація</h4>
<ul class="dash-under-link dash-under-link__center">
<li><a href="/">Головна</a></li>
<li><a href="about">Про нас</a></li>
<li><a href="#!">Портфоліо</a></li>
<li><a href="#!">Послуги</a></li>
<li><a href="reviews">Відгуки</a></li>
</ul>
</div>

<div class="footer__nav-block">
<h4 class="footer__nav-block-title">Контакти</h4>
<ul>
<li>
<a href="mailto:[email protected]">[email protected]</a>
</li>
<li>
<a href="#!" onclick="confirmCall('+380 95 716 87 47')"
>+380 95 716 87 47</a
>
</li>
</ul>
</div>
</div>
</div>
</div>

<div class="footer__bottom">
<p>&copy; 2024 West Decor. Всі права захищені.</p>
</div>
</footer>
</main>


<!-- scroll to top -->
<button onclick="topFunction()" id="myBtn" title="Go to top">
Expand Down Expand Up @@ -160,42 +160,58 @@ <h4 class="footer__nav-block-title">Контакти</h4>


<script>
document.addEventListener('DOMContentLoaded', function() {
const isAdminLoggedIn = localStorage.getItem('isAdminLoggedIn');

if (isAdminLoggedIn === 'true') {
// Якщо адмін увійшов, показати адмін панель та завантажити фотографії
document.getElementById('authSection').style.display = 'none';
document.getElementById('adminPanel').style.display = 'block';
loadPhotos(); // Завантажуємо фотографії
} else {
// Якщо адмін не увійшов, показати форму входу
document.getElementById('authSection').style.display = 'block';
document.getElementById('adminPanel').style.display = 'none';
document.getElementById('photosContainer').style.display = 'none'; // Сховати контейнер з фото
}
});

document.getElementById('loginButton').addEventListener('click', function () {
const password = document.getElementById('password').value;
if (password === 'westdecor') { // Змініть на ваш пароль
localStorage.setItem('isAdminLoggedIn', 'true'); // Зберегти стан входу
document.getElementById('authSection').style.display = 'none';
document.getElementById('adminPanel').style.display = 'block';
document.getElementById('photosContainer').style.display = 'block'; // Показати контейнер з фото
loadPhotos(); // Завантажуємо фотографії
} else {
document.getElementById('authMessage').innerText = 'Невірний пароль.';
document.getElementById('photosContainer').style.display = 'none'; // Сховати контейнер з фото
}
});

function logout() {
localStorage.removeItem('isAdminLoggedIn'); // Очищаємо стан входу
document.getElementById('adminPanel').style.display = 'none'; // Сховати адмін панель
document.getElementById('authSection').style.display = 'block'; // Показати форму входу
document.getElementById('photosContainer').style.display = 'none'; // Сховати контейнер з фото
}
document.addEventListener('DOMContentLoaded', function () {
const isAdminLoggedIn = localStorage.getItem('isAdminLoggedIn');

if (isAdminLoggedIn === 'true') {
// Якщо адмін увійшов, показати адмін панель та завантажити фотографії
document.getElementById('authSection').style.display = 'none';
document.getElementById('adminPanel').style.display = 'block';
loadPhotos(); // Завантажуємо фотографії
} else {
// Якщо адмін не увійшов, показати форму входу
document.getElementById('authSection').style.display = 'block';
document.getElementById('adminPanel').style.display = 'none';
document.getElementById('photosContainer').style.display = 'none'; // Сховати контейнер з фото
}
});

document.getElementById('loginButton').addEventListener('click', async function () {
const password = document.getElementById('password').value;

try {
// Надсилаємо запит на сервер
const response = await fetch('/check-password', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ password })
});

const result = await response.json();

if (result.success) {
localStorage.setItem('isAdminLoggedIn', 'true'); // Зберегти стан входу
document.getElementById('authSection').style.display = 'none';
document.getElementById('adminPanel').style.display = 'block';
document.getElementById('photosContainer').style.display = 'block'; // Показати контейнер з фото
loadPhotos(); // Завантажуємо фотографії
} else {
document.getElementById('authMessage').innerText = 'Невірний пароль.';
document.getElementById('photosContainer').style.display = 'none'; // Сховати контейнер з фото
}
} catch (error) {
console.error('Помилка під час входу:', error);
document.getElementById('authMessage').innerText = 'Сталася помилка. Спробуйте пізніше.';
}
});

function logout() {
localStorage.removeItem('isAdminLoggedIn'); // Очищаємо стан входу
document.getElementById('adminPanel').style.display = 'none'; // Сховати адмін панель
document.getElementById('authSection').style.display = 'block'; // Показати форму входу
document.getElementById('photosContainer').style.display = 'none'; // Сховати контейнер з фото
}

</script>

</body>
Expand Down
13 changes: 12 additions & 1 deletion js/server.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
require('dotenv').config();
const bcrypt = require('bcrypt');
const express = require('express');
const multer = require('multer');
const path = require('path');
Expand All @@ -7,10 +8,11 @@ const { v4: uuidv4 } = require('uuid'); // UUID для унікального т

const { db, bucket } = require('./firebase'); // Імпортуємо db і bucket з firebase.js


const app = express();
const upload = multer({ storage: multer.memoryStorage() }); // зберігання у пам'яті



// Firebase Storage

// Налаштування CORS
Expand Down Expand Up @@ -231,6 +233,15 @@ app.delete('/api/reviews/:id', async (req, res) => {
}
});

// admin
const adminPasswordHash = process.env.ADMIN_PASSWORD_HASH;

app.post('/check-password', async (req, res) => {
const { password } = req.body;
const isValid = await bcrypt.compare(password, adminPasswordHash);
res.json({ success: isValid });
});


const PORT = process.env.PORT || 3000;
app.listen(PORT, () => {
Expand Down

0 comments on commit 4783169

Please sign in to comment.