1. Общие положения
- 1.1. Настоящая Политика конфиденциальности регулирует порядок сбора, хранения и использования персональных данных пользователей бегового клуба "Бегущий Башкир".
+ 1.1. Настоящая Политика конфиденциальности регулирует порядок сбора, хранения и использования персональных
+ данных пользователей бегового клуба "Бегущий Башкир".
1.2. Используя наш сайт и услуги, вы соглашаетесь с условиями настоящей Политики.
@@ -42,7 +43,8 @@
4. Защита данных
- 4.1. Мы принимаем все необходимые меры для защиты ваших персональных данных от несанкционированного доступа.
+ 4.1. Мы принимаем все необходимые меры для защиты ваших персональных данных от несанкционированного
+ доступа.
4.2. Данные хранятся на защищенных серверах и передаются в зашифрованном виде.
@@ -77,7 +79,7 @@
8. Контакты
По вопросам, связанным с обработкой персональных данных, обращайтесь:
📧 Email: privacy@begushiybashkir.ru
- 📞 Телефон: +7 (XXX) XXX-XX-XX
+ 📞 Телефон: +7 (XXX) XXX-XX-XX
@@ -96,12 +98,47 @@
@@ -654,6 +682,7 @@ export default {
.avatar-section {
margin-bottom: 1.5rem;
}
+
.avatar-preview {
position: relative;
width: 150px;
@@ -664,8 +693,10 @@ export default {
border: 4px solid #2e8b57;
background: linear-gradient(135deg, #f5f5f5, #e0e0e0);
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2);
- isolation: isolate; /* Новое свойство */
- background-image: none !important; /* Явно убираем фоновое изображение */
+ isolation: isolate;
+ /* Новое свойство */
+ background-image: none !important;
+ /* Явно убираем фоновое изображение */
}
.avatar-image {
@@ -673,7 +704,8 @@ export default {
height: 100%;
object-fit: cover;
transition: transform 0.3s ease;
- display: block; /* Убедитесь, что block */
+ display: block;
+ /* Убедитесь, что block */
}
.avatar-placeholder {
diff --git a/serv_nginx/bbvue/src/views/ProfileEdit.vue b/serv_nginx/bbvue/src/views/ProfileEdit.vue
index 1f88818..39aa493 100644
--- a/serv_nginx/bbvue/src/views/ProfileEdit.vue
+++ b/serv_nginx/bbvue/src/views/ProfileEdit.vue
@@ -137,6 +137,18 @@ export default {
}
},
methods: {
+ handleFirstInteraction() {
+ if (!this.hasInteracted) {
+ this.hasInteracted = true
+ this.showContent()
+ clearTimeout(this.autoShowTimeout)
+ }
+ },
+ showContent() {
+ this.isContentVisible = true
+ // Эмитим событие для показа хедера
+ this.$emit('show-header')
+ },
async onAvatarUpdated() {
// Обновляем данные пользователя после загрузки аватара
await this.authStore.fetchProfile()
@@ -205,7 +217,22 @@ export default {
this.initializeForm()
})
}
- }
+ window.addEventListener('scroll', this.handleFirstInteraction, { passive: true, once: true })
+ window.addEventListener('click', this.handleFirstInteraction, { once: true })
+ window.addEventListener('touchstart', this.handleFirstInteraction, { once: true })
+ this.autoShowTimeout = setTimeout(() => {
+ if (!this.hasInteracted) {
+ this.showContent()
+ }
+ }, 3000)
+ },
+ beforeUnmount() {
+ // Убираем обработчики при размонтировании
+ window.removeEventListener('scroll', this.handleFirstInteraction)
+ window.removeEventListener('click', this.handleFirstInteraction)
+ window.removeEventListener('touchstart', this.handleFirstInteraction)
+ clearTimeout(this.autoShowTimeout)
+ },
}
diff --git a/serv_nginx/bbvue/src/views/Register.vue b/serv_nginx/bbvue/src/views/Register.vue
index de2612c..d23ceaf 100644
--- a/serv_nginx/bbvue/src/views/Register.vue
+++ b/serv_nginx/bbvue/src/views/Register.vue
@@ -125,6 +125,23 @@ import { useAuthStore } from '../stores/auth'
export default {
// eslint-disable-next-line vue/multi-word-component-names
name: 'Register',
+ mounted() {
+ window.addEventListener('scroll', this.handleFirstInteraction, { passive: true, once: true })
+ window.addEventListener('click', this.handleFirstInteraction, { once: true })
+ window.addEventListener('touchstart', this.handleFirstInteraction, { once: true })
+ this.autoShowTimeout = setTimeout(() => {
+ if (!this.hasInteracted) {
+ this.showContent()
+ }
+ }, 3000)
+ },
+ beforeUnmount() {
+ // Убираем обработчики при размонтировании
+ window.removeEventListener('scroll', this.handleFirstInteraction)
+ window.removeEventListener('click', this.handleFirstInteraction)
+ window.removeEventListener('touchstart', this.handleFirstInteraction)
+ clearTimeout(this.autoShowTimeout)
+ },
setup() {
const authStore = useAuthStore()
return { authStore }
@@ -195,7 +212,19 @@ export default {
} else {
console.error('Ошибка регистрации:', result.error)
}
- }
+ },
+ handleFirstInteraction() {
+ if (!this.hasInteracted) {
+ this.hasInteracted = true
+ this.showContent()
+ clearTimeout(this.autoShowTimeout)
+ }
+ },
+ showContent() {
+ this.isContentVisible = true
+ // Эмитим событие для показа хедера
+ this.$emit('show-header')
+ },
}
}
diff --git a/serv_nginx/bbvue/src/views/Reviews.vue b/serv_nginx/bbvue/src/views/Reviews.vue
index b228b6b..799c0e5 100644
--- a/serv_nginx/bbvue/src/views/Reviews.vue
+++ b/serv_nginx/bbvue/src/views/Reviews.vue
@@ -372,6 +372,18 @@ export default {
}
},
methods: {
+ handleFirstInteraction() {
+ if (!this.hasInteracted) {
+ this.hasInteracted = true
+ this.showContent()
+ clearTimeout(this.autoShowTimeout)
+ }
+ },
+ showContent() {
+ this.isContentVisible = true
+ // Эмитим событие для показа хедера
+ this.$emit('show-header')
+ },
async loadReviews() {
this.loading = true
try {
@@ -643,10 +655,25 @@ export default {
}
},
mounted() {
+ window.addEventListener('scroll', this.handleFirstInteraction, { passive: true, once: true })
+ window.addEventListener('click', this.handleFirstInteraction, { once: true })
+ window.addEventListener('touchstart', this.handleFirstInteraction, { once: true })
+ this.autoShowTimeout = setTimeout(() => {
+ if (!this.hasInteracted) {
+ this.showContent()
+ }
+ }, 3000)
this.checkAuth()
this.loadReviews()
this.loadStats()
},
+ beforeUnmount() {
+ // Убираем обработчики при размонтировании
+ window.removeEventListener('scroll', this.handleFirstInteraction)
+ window.removeEventListener('click', this.handleFirstInteraction)
+ window.removeEventListener('touchstart', this.handleFirstInteraction)
+ clearTimeout(this.autoShowTimeout)
+ },
watch: {
sortBy() {
this.currentPage = 1
diff --git a/serv_nginx/bbvue/src/views/Training.vue b/serv_nginx/bbvue/src/views/Training.vue
index 972e616..fd6cee4 100644
--- a/serv_nginx/bbvue/src/views/Training.vue
+++ b/serv_nginx/bbvue/src/views/Training.vue
@@ -345,6 +345,18 @@ export default {
}
},
methods: {
+ handleFirstInteraction() {
+ if (!this.hasInteracted) {
+ this.hasInteracted = true
+ this.showContent()
+ clearTimeout(this.autoShowTimeout)
+ }
+ },
+ showContent() {
+ this.isContentVisible = true
+ // Эмитим событие для показа хедера
+ this.$emit('show-header')
+ },
getImageUrl(path) {
// В продакшене замените на правильный путь
const baseUrl = import.meta.env.BASE_URL
@@ -387,10 +399,22 @@ export default {
},
mounted() {
document.addEventListener('keydown', this.handleKeydown)
+ window.addEventListener('scroll', this.handleFirstInteraction, { passive: true, once: true })
+ window.addEventListener('click', this.handleFirstInteraction, { once: true })
+ window.addEventListener('touchstart', this.handleFirstInteraction, { once: true })
+ this.autoShowTimeout = setTimeout(() => {
+ if (!this.hasInteracted) {
+ this.showContent()
+ }
+ }, 3000)
},
beforeUnmount() {
document.removeEventListener('keydown', this.handleKeydown)
document.body.style.overflow = ''
+ window.removeEventListener('scroll', this.handleFirstInteraction)
+ window.removeEventListener('click', this.handleFirstInteraction)
+ window.removeEventListener('touchstart', this.handleFirstInteraction)
+ clearTimeout(this.autoShowTimeout)
}
}