From 9ed56ec93de3078c97f98d40d580d5f851bbe6de Mon Sep 17 00:00:00 2001 From: sindoring Date: Sun, 26 Jul 2026 22:13:22 +0400 Subject: [PATCH] =?UTF-8?q?=D0=BE=D1=84=D0=B5=D1=80=D1=82=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .env.example | 5 +- app/Http/Controllers/Auth/LoginController.php | 4 +- app/Http/Controllers/CabinetController.php | 4 +- .../Concerns/BuildsPortalProps.php | 4 +- app/Http/Controllers/LandingController.php | 7 +- app/Http/Controllers/LegalController.php | 8 +- config/moonwell.php | 5 +- resources/css/moonwell.css | 11 + resources/js/Components/LegalDocument.vue | 25 +- .../js/Pages/Landing/Components/Footer.vue | 8 +- .../js/Pages/Landing/Components/Join.vue | 6 +- .../js/Pages/Landing/Components/symbols.js | 2 +- resources/js/Pages/Legal/Offer.vue | 97 +- resources/js/Pages/Legal/offerContent.js | 1270 +++++++++++++++++ .../Feature/InertiaPublicPagesFeatureTest.php | 29 +- tests/Feature/LandingPageTest.php | 5 +- Публичная оферта MoonWell.docx | Bin 0 -> 28001 bytes 17 files changed, 1363 insertions(+), 127 deletions(-) create mode 100644 resources/js/Pages/Legal/offerContent.js create mode 100644 Публичная оферта MoonWell.docx diff --git a/.env.example b/.env.example index 9a4308f..e0b4407 100644 --- a/.env.example +++ b/.env.example @@ -59,10 +59,11 @@ MAIL_PASSWORD=null MAIL_FROM_ADDRESS="hello@example.com" MAIL_FROM_NAME="${APP_NAME}" -MOONWELL_LEGAL_PUBLISHED=false +MOONWELL_OFFER_PUBLISHED=true +MOONWELL_PRIVACY_PUBLISHED=false MOONWELL_LEGAL_OPERATOR="Администрация проекта MoonWell" MOONWELL_LEGAL_EMAIL="support@moon-well.online" -MOONWELL_LEGAL_EFFECTIVE_DATE="25 июля 2026 года" +MOONWELL_LEGAL_EFFECTIVE_DATE="26 июля 2026 года" AWS_ACCESS_KEY_ID= AWS_SECRET_ACCESS_KEY= diff --git a/app/Http/Controllers/Auth/LoginController.php b/app/Http/Controllers/Auth/LoginController.php index 679336f..99c7be5 100644 --- a/app/Http/Controllers/Auth/LoginController.php +++ b/app/Http/Controllers/Auth/LoginController.php @@ -29,8 +29,8 @@ class LoginController extends Controller 'home' => route('landing.index'), 'login' => route('login'), 'login_store' => route('login.store'), - 'offer' => config('moonwell.legal.published') ? route('legal.offer') : null, - 'privacy' => config('moonwell.legal.published') ? route('legal.privacy') : null, + 'offer' => config('moonwell.legal.offer_published') ? route('legal.offer') : null, + 'privacy' => config('moonwell.legal.privacy_published') ? route('legal.privacy') : null, ], 'flash' => [ 'status' => $request->session()->get('status'), diff --git a/app/Http/Controllers/CabinetController.php b/app/Http/Controllers/CabinetController.php index 805061b..dd7e593 100644 --- a/app/Http/Controllers/CabinetController.php +++ b/app/Http/Controllers/CabinetController.php @@ -124,8 +124,8 @@ class CabinetController extends Controller 'client' => route('cabinet.client'), 'password' => route('cabinet.password.update'), 'deposit' => route('cabinet.balance.deposit'), - 'offer' => config('moonwell.legal.published') ? route('legal.offer') : null, - 'privacy' => config('moonwell.legal.published') ? route('legal.privacy') : null, + 'offer' => config('moonwell.legal.offer_published') ? route('legal.offer') : null, + 'privacy' => config('moonwell.legal.privacy_published') ? route('legal.privacy') : null, ]; } } diff --git a/app/Http/Controllers/Concerns/BuildsPortalProps.php b/app/Http/Controllers/Concerns/BuildsPortalProps.php index 52052a6..fead310 100644 --- a/app/Http/Controllers/Concerns/BuildsPortalProps.php +++ b/app/Http/Controllers/Concerns/BuildsPortalProps.php @@ -31,8 +31,8 @@ trait BuildsPortalProps 'cabinet' => route('cabinet.index'), 'admin' => route('admin.accounts.index'), 'logout' => route('logout'), - 'offer' => config('moonwell.legal.published') ? route('legal.offer') : null, - 'privacy' => config('moonwell.legal.published') ? route('legal.privacy') : null, + 'offer' => config('moonwell.legal.offer_published') ? route('legal.offer') : null, + 'privacy' => config('moonwell.legal.privacy_published') ? route('legal.privacy') : null, 'admin_accounts' => route('admin.accounts.index'), 'admin_balances' => route('admin.balances.index'), 'admin_shop' => route('admin.shop.index'), diff --git a/app/Http/Controllers/LandingController.php b/app/Http/Controllers/LandingController.php index b0ee90e..f2af0c8 100644 --- a/app/Http/Controllers/LandingController.php +++ b/app/Http/Controllers/LandingController.php @@ -82,9 +82,10 @@ class LandingController extends Controller ], 'registerEndpoint' => route('game-account.store'), 'legalUrls' => [ - 'published' => (bool) config('moonwell.legal.published'), - 'offer' => config('moonwell.legal.published') ? route('legal.offer') : null, - 'privacy' => config('moonwell.legal.published') ? route('legal.privacy') : null, + 'offer_published' => (bool) config('moonwell.legal.offer_published'), + 'privacy_published' => (bool) config('moonwell.legal.privacy_published'), + 'offer' => config('moonwell.legal.offer_published') ? route('legal.offer') : null, + 'privacy' => config('moonwell.legal.privacy_published') ? route('legal.privacy') : null, ], 'inviteRequired' => (bool) config('moonwell.registration.require_invite_code'), 'csrfToken' => csrf_token(), diff --git a/app/Http/Controllers/LegalController.php b/app/Http/Controllers/LegalController.php index 56d3a21..4efd61f 100644 --- a/app/Http/Controllers/LegalController.php +++ b/app/Http/Controllers/LegalController.php @@ -10,14 +10,14 @@ class LegalController extends Controller { public function offer(Request $request): Response { - abort_unless(config('moonwell.legal.published'), 404); + abort_unless(config('moonwell.legal.offer_published'), 404); return Inertia::render('Legal/Offer', $this->pageData($request)); } public function privacy(Request $request): Response { - abort_unless(config('moonwell.legal.published'), 404); + abort_unless(config('moonwell.legal.privacy_published'), 404); return Inertia::render('Legal/Privacy', $this->pageData($request)); } @@ -46,8 +46,8 @@ class LegalController extends Controller 'cabinet' => route('cabinet.index'), 'admin' => route('admin.accounts.index'), 'logout' => route('logout'), - 'offer' => config('moonwell.legal.published') ? route('legal.offer') : null, - 'privacy' => config('moonwell.legal.published') ? route('legal.privacy') : null, + 'offer' => config('moonwell.legal.offer_published') ? route('legal.offer') : null, + 'privacy' => config('moonwell.legal.privacy_published') ? route('legal.privacy') : null, ], 'legal' => [ 'operator_name' => config('moonwell.legal.operator_name'), diff --git a/config/moonwell.php b/config/moonwell.php index b5f577e..09681f2 100644 --- a/config/moonwell.php +++ b/config/moonwell.php @@ -20,10 +20,11 @@ return [ ], 'legal' => [ - 'published' => (bool) env('MOONWELL_LEGAL_PUBLISHED', false), + 'offer_published' => (bool) env('MOONWELL_OFFER_PUBLISHED', true), + 'privacy_published' => (bool) env('MOONWELL_PRIVACY_PUBLISHED', false), 'operator_name' => env('MOONWELL_LEGAL_OPERATOR', 'Администрация проекта MoonWell'), 'contact_email' => env('MOONWELL_LEGAL_EMAIL', 'support@moon-well.online'), - 'effective_date' => env('MOONWELL_LEGAL_EFFECTIVE_DATE', '25 июля 2026 года'), + 'effective_date' => env('MOONWELL_LEGAL_EFFECTIVE_DATE', '26 июля 2026 года'), ], 'client' => [ diff --git a/resources/css/moonwell.css b/resources/css/moonwell.css index dff3ec3..bd48638 100644 --- a/resources/css/moonwell.css +++ b/resources/css/moonwell.css @@ -2801,6 +2801,8 @@ body[data-particles="false"] #particles { display: none; } top: 110px; display: flex; flex-direction: column; + max-height: calc(100vh - 140px); + overflow-y: auto; padding: 18px 0; border-top: 1px solid var(--panel-border); border-bottom: 1px solid var(--panel-border); @@ -2832,6 +2834,15 @@ body[data-particles="false"] #particles { display: none; } color: var(--text-dim); } .legal-document { padding: clamp(30px, 5vw, 58px); } +.legal-intro { + margin-bottom: 42px; + padding-bottom: 28px; + border-bottom: 1px solid var(--panel-border); +} +.legal-intro p:last-child { + overflow-wrap: anywhere; + color: var(--moon); +} .legal-document section { scroll-margin-top: 100px; padding: 42px 0; diff --git a/resources/js/Components/LegalDocument.vue b/resources/js/Components/LegalDocument.vue index 84be0ae..2299550 100644 --- a/resources/js/Components/LegalDocument.vue +++ b/resources/js/Components/LegalDocument.vue @@ -4,6 +4,7 @@ defineProps({ title: { type: String, required: true }, description: { type: String, required: true }, effectiveDate: { type: String, required: true }, + intro: { type: Array, default: () => [] }, sections: { type: Array, required: true }, }); @@ -30,14 +31,28 @@ defineProps({ diff --git a/resources/js/Pages/Landing/Components/Footer.vue b/resources/js/Pages/Landing/Components/Footer.vue index a29336f..d1e2450 100644 --- a/resources/js/Pages/Landing/Components/Footer.vue +++ b/resources/js/Pages/Landing/Components/Footer.vue @@ -35,14 +35,18 @@ defineProps({

Приватный сервер World of Warcraft 3.3.5a с личным прогрессом, одиночными подземельями и режимом «Предатель». Играй бесплатно — покупки не дают боевого преимущества.

- + diff --git a/resources/js/Pages/Landing/Components/Join.vue b/resources/js/Pages/Landing/Components/Join.vue index 4fc5a37..f5c7eb3 100644 --- a/resources/js/Pages/Landing/Components/Join.vue +++ b/resources/js/Pages/Landing/Components/Join.vue @@ -160,9 +160,9 @@ function submit(event) { diff --git a/resources/js/Pages/Landing/Components/symbols.js b/resources/js/Pages/Landing/Components/symbols.js index 45efeec..a374e87 100644 --- a/resources/js/Pages/Landing/Components/symbols.js +++ b/resources/js/Pages/Landing/Components/symbols.js @@ -8,7 +8,7 @@ export const navLinks = [ export const features = [ ['I', 'Главная особенность', 'Личный прогресс', 'Заверши путь в Классике, чтобы открыть Запределье, затем одолей Иллидана и отправляйся в Нортренд. Продвигайся в своём темпе.', 'span-6', 'path'], ['II', '', 'Одиночные подземелья', 'Проходи подземелья самостоятельно или с отрядом до пяти игроков: боссы и механики подстраиваются под размер группы.', 'span-3', 'solo'], - ['III', 'В разработке', 'Режим «Предатель»', 'Создай персонажа Альянса на стороне Орды или персонажа Орды на стороне Альянса. Тебя ждут отдельные сюжеты, персонажи и репутации.', 'span-3', 'mask'], + ['III', 'В разработке ', 'Режим «Предатель»', 'Создай персонажа Альянса на стороне Орды или персонажа Орды на стороне Альянса. Тебя ждут отдельные сюжеты, персонажи и репутации.', 'span-3', 'mask'], ['IV', 'В разработке', 'Ликантропия', 'Заразись ликантропией, сопротивляйся ей или прими новую форму. Выбор определит твой путь.', 'span-4', 'wolf'], ['V', '', 'Мифик+ без предела', 'Уровень ключей не ограничен: сложность продолжает расти вместе с твоим прогрессом, а набор модификаторов меняется каждую неделю.', 'span-4', 'mythic'], ['VI', 'В разработке', 'Боевой пропуск · магазин наград', 'Выполняй ежедневные и еженедельные задания, получай награды за вход и открывай косметические предметы.', 'span-4', 'pass'], diff --git a/resources/js/Pages/Legal/Offer.vue b/resources/js/Pages/Legal/Offer.vue index b2c274c..746af65 100644 --- a/resources/js/Pages/Legal/Offer.vue +++ b/resources/js/Pages/Legal/Offer.vue @@ -1,109 +1,36 @@ diff --git a/resources/js/Pages/Legal/offerContent.js b/resources/js/Pages/Legal/offerContent.js new file mode 100644 index 0000000..38d3528 --- /dev/null +++ b/resources/js/Pages/Legal/offerContent.js @@ -0,0 +1,1270 @@ +export const offerSubtitle = "о заключении договора возмездного оказания цифровых услуг"; + +export const offerEffectiveDate = "26 июля 2026 года"; + +export const offerIntro = [ + "Настоящий документ является официальным публичным предложением физического лица Абушаева Ильяса Ряисовича, применяющего специальный налоговый режим «Налог на профессиональный доход», ИНН 643967812920, именуемого в дальнейшем «Исполнитель», заключить договор возмездного оказания цифровых услуг на изложенных ниже условиях.", + "Настоящий документ является публичной офертой в соответствии с пунктом 2 статьи 437 Гражданского кодекса Российской Федерации.", + "Физическое лицо, совершившее акцепт настоящей Оферты, именуется в дальнейшем «Пользователь».", + "Исполнитель и Пользователь совместно именуются «Стороны», а по отдельности — «Сторона».", + "Оферта размещена на сайте проекта MoonWell по адресу:", + "https://moon-well.online/" +]; + +export const offerSections = [ + { + "id": "section-1", + "title": "Термины и определения", + "blocks": [ + { + "type": "paragraph", + "text": "1.1. Сайт — интернет-ресурс проекта MoonWell, размещённый по адресу https://moon-well.online/, включая его страницы, Личный кабинет, Магазин и иные связанные разделы." + }, + { + "type": "paragraph", + "text": "1.2. Проект MoonWell, или Проект — неофициальный развлекательный игровой интернет-проект, предоставляющий Пользователям возможность взаимодействовать с игровым сервером и связанными с ним информационными и техническими сервисами." + }, + { + "type": "paragraph", + "text": "1.3. Пользователь — физическое лицо, зарегистрировавшее Учётную запись и использующее Сайт или сервисы Проекта." + }, + { + "type": "paragraph", + "text": "1.4. Учётная запись, или Аккаунт — совокупность данных, позволяющих идентифицировать Пользователя в информационной системе Проекта и учитывать доступные ему функции, игровые объекты, персонажей, цифровые услуги и Внутренний баланс." + }, + { + "type": "paragraph", + "text": "1.5. Личный кабинет — защищённый раздел Сайта, доступный Пользователю после авторизации." + }, + { + "type": "paragraph", + "text": "1.6. Магазин — раздел Сайта или Личного кабинета, в котором размещаются сведения о доступных цифровых услугах, их содержании, стоимости, ограничениях и порядке получения." + }, + { + "type": "paragraph", + "text": "1.7. Цифровая услуга, или Услуга — совершаемые Исполнителем по запросу Пользователя действия по технической активации, изменению или предоставлению функциональной возможности в Учётной записи либо в отношении игрового персонажа Пользователя." + }, + { + "type": "paragraph", + "text": "К цифровым услугам могут относиться:" + }, + { + "type": "list", + "items": [ + "предоставление доступа к косметическим элементам и визуальным возможностям;", + "изменение имени игрового персонажа;", + "изменение внешности или пола игрового персонажа;", + "изменение расы или фракции игрового персонажа;", + "перенос, восстановление или иное сервисное изменение игрового персонажа;", + "предоставление иных функций, прямо описанных в Магазине." + ] + }, + { + "type": "paragraph", + "text": "Конкретное содержание, стоимость, ограничения и срок оказания каждой Услуги указываются в Магазине до её активации." + }, + { + "type": "paragraph", + "text": "1.8. Слёзы Элуны — внутренние условные учётные единицы Проекта, используемые для отражения размера внесённой Пользователем предоплаты и последующей активации цифровых услуг." + }, + { + "type": "paragraph", + "text": "Слёзы Элуны:" + }, + { + "type": "list", + "items": [ + "не являются валютой Российской Федерации или иностранного государства;", + "не являются электронными денежными средствами;", + "не являются цифровой валютой или криптовалютой;", + "не являются ценными бумагами;", + "не являются цифровыми правами в значении статьи 141.1 Гражданского кодекса Российской Федерации;", + "не являются самостоятельным товаром;", + "не являются банковским вкладом или самостоятельным средством платежа;", + "не используются для оплаты товаров или услуг третьих лиц;", + "не предоставляют Пользователю корпоративных или исключительных прав;", + "не имеют самостоятельной стоимости за пределами Проекта;", + "не предназначены для свободного обращения на рынке." + ] + }, + { + "type": "paragraph", + "text": "1.9. Платные Слёзы Элуны — внутренние учётные единицы, начисленные в результате внесения Пользователем предоплаты за цифровые услуги Проекта." + }, + { + "type": "paragraph", + "text": "1.10. Бонусные Слёзы Элуны — внутренние учётные единицы, бесплатно начисленные Исполнителем в рамках акции, промокода, конкурса, компенсации, программы лояльности или иного мероприятия." + }, + { + "type": "paragraph", + "text": "Бонусные Слёзы Элуны не являются внесённой Пользователем предоплатой и не имеют денежного эквивалента." + }, + { + "type": "paragraph", + "text": "1.11. Внутренний баланс — отображаемое в Личном кабинете количество Платных и Бонусных Слёз Элуны." + }, + { + "type": "paragraph", + "text": "1.12. Активация Услуги — подтверждённое Пользователем списание установленного количества Слёз Элуны с Внутреннего баланса и направление Исполнителю запроса на оказание выбранной цифровой услуги." + }, + { + "type": "paragraph", + "text": "1.13. Заказ — сформированный Пользователем запрос на внесение предоплаты либо на активацию конкретной цифровой услуги." + }, + { + "type": "paragraph", + "text": "1.14. Правила Проекта — правила регистрации, поведения, использования Учётной записи и взаимодействия с игровым сервером, размещённые на Сайте или в Личном кабинете." + } + ] + }, + { + "id": "section-2", + "title": "Общие положения", + "blocks": [ + { + "type": "paragraph", + "text": "2.1. Настоящая Оферта регулирует отношения между Исполнителем и Пользователем, связанные с:" + }, + { + "type": "list", + "items": [ + "внесением предоплаты за цифровые услуги;", + "отражением предоплаты на Внутреннем балансе;", + "выбором и активацией цифровых услуг;", + "оказанием цифровых услуг;", + "возвратом неиспользованной предоплаты;", + "устранением недостатков цифровых услуг;", + "рассмотрением обращений Пользователей." + ] + }, + { + "type": "paragraph", + "text": "2.2. Бесплатная регистрация Учётной записи, бесплатный доступ к игровому серверу и обычный игровой процесс сами по себе не являются платными услугами по настоящей Оферте." + }, + { + "type": "paragraph", + "text": "2.3. Платёж Пользователя не является пожертвованием, благотворительным взносом или иным безвозмездным перечислением денежных средств." + }, + { + "type": "paragraph", + "text": "Денежные средства принимаются Исполнителем в качестве предоплаты за цифровые услуги Проекта." + }, + { + "type": "paragraph", + "text": "2.4. Акцептом настоящей Оферты признаётся совершение Пользователем следующих действий:" + }, + { + "type": "list", + "items": [ + "выбор пакета Внутреннего баланса или иной платной возможности;", + "указание необходимых данных Учётной записи;", + "подтверждение ознакомления и согласия с настоящей Офертой;", + "нажатие кнопки оплаты;", + "успешное совершение платежа." + ] + }, + { + "type": "paragraph", + "text": "2.5. Договор считается заключённым с момента получения Исполнителем подтверждения платёжного сервиса об успешной оплате." + }, + { + "type": "paragraph", + "text": "2.6. Совершение оплаты является полным и безоговорочным акцептом настоящей Оферты в соответствии со статьёй 438 Гражданского кодекса Российской Федерации." + }, + { + "type": "paragraph", + "text": "2.7. Акцептуя Оферту, Пользователь подтверждает, что:" + }, + { + "type": "list", + "items": [ + "ознакомился с текстом Оферты до оплаты;", + "понимает правовую природу Внутреннего баланса;", + "ознакомился со стоимостью и условиями внесения предоплаты;", + "получил необходимую информацию об Исполнителе;", + "предоставил достоверные сведения;", + "обладает необходимой дееспособностью либо действует с согласия законного представителя;", + "принимает условия Оферты полностью и без оговорок." + ] + }, + { + "type": "paragraph", + "text": "2.8. Настоящая Оферта не регулирует приобретение, установку или лицензирование программного обеспечения World of Warcraft и не предоставляет Пользователю каких-либо прав на программное обеспечение или интеллектуальную собственность третьих лиц." + } + ] + }, + { + "id": "section-3", + "title": "Предмет договора", + "blocks": [ + { + "type": "paragraph", + "text": "3.1. Пользователь вносит предоплату за цифровые услуги Проекта, а Исполнитель:" + }, + { + "type": "list", + "items": [ + "отражает размер внесённой предоплаты на Внутреннем балансе в виде Платных Слёз Элуны;", + "по последующим запросам Пользователя оказывает выбранные цифровые услуги;", + "списывает с Внутреннего баланса количество Слёз Элуны, указанное в описании соответствующей Услуги." + ] + }, + { + "type": "paragraph", + "text": "3.2. Начисление Платных Слёз Элуны является способом учёта внесённой предоплаты и само по себе не означает, что все предварительно оплаченные цифровые услуги уже оказаны." + }, + { + "type": "paragraph", + "text": "3.3. Конкретная цифровая услуга считается заказанной после того, как Пользователь:" + }, + { + "type": "list", + "items": [ + "выбрал Услугу в Магазине;", + "ознакомился с её описанием, стоимостью и ограничениями;", + "указал необходимые параметры;", + "подтвердил списание установленного количества Слёз Элуны." + ] + }, + { + "type": "paragraph", + "text": "3.4. Конкретное содержание Услуги определяется сведениями, отображаемыми в Магазине непосредственно перед её активацией." + }, + { + "type": "paragraph", + "text": "Такие сведения являются частью договора между Сторонами." + }, + { + "type": "paragraph", + "text": "3.5. Услуги оказываются дистанционно с использованием программно-технических средств Проекта." + }, + { + "type": "paragraph", + "text": "3.6. Исполнитель вправе привлекать третьих лиц для технического исполнения договора, включая платёжные сервисы, хостинг-провайдеров и поставщиков программной инфраструктуры." + }, + { + "type": "paragraph", + "text": "Привлечение третьих лиц не освобождает Исполнителя от ответственности перед Пользователем в случаях, предусмотренных законодательством Российской Федерации." + } + ] + }, + { + "id": "section-4", + "title": "Оформление Заказа и внесение предоплаты", + "blocks": [ + { + "type": "paragraph", + "text": "4.1. Для внесения предоплаты Пользователь:" + }, + { + "type": "list", + "items": [ + "авторизуется в Личном кабинете;", + "выбирает пакет Внутреннего баланса;", + "проверяет Учётную запись и иные параметры Заказа;", + "указывает адрес электронной почты;", + "подтверждает согласие с настоящей Офертой;", + "переходит к оплате." + ] + }, + { + "type": "paragraph", + "text": "4.2. До оплаты Пользователь обязан проверить правильность:" + }, + { + "type": "list", + "items": [ + "логина или идентификатора Учётной записи;", + "выбранного игрового мира;", + "адреса электронной почты;", + "количества начисляемых Слёз Элуны;", + "суммы платежа;", + "наличия и количества Бонусных Слёз Элуны, если они предоставляются." + ] + }, + { + "type": "paragraph", + "text": "4.3. Исполнитель не считается нарушившим обязательство в той части, в которой задержка или ошибочное отражение предоплаты непосредственно вызваны предоставлением Пользователем неверных или неполных данных." + }, + { + "type": "paragraph", + "text": "Настоящий пункт не освобождает Исполнителя от обязанности устранить ошибку, допущенную по его вине." + }, + { + "type": "paragraph", + "text": "4.4. Если предоплата была ошибочно внесена для другой Учётной записи, Пользователь должен незамедлительно обратиться к Исполнителю." + }, + { + "type": "paragraph", + "text": "Исполнитель по возможности переносит баланс на нужную Учётную запись, если одновременно соблюдаются следующие условия:" + }, + { + "type": "list", + "items": [ + "Слёзы Элуны ещё не были использованы;", + "перенос технически возможен;", + "Пользователь подтвердил принадлежность платежа и Учётной записи;", + "отсутствует спор о принадлежности платежа." + ] + }, + { + "type": "paragraph", + "text": "4.5. Пользователь не вправе совершать оплату с использованием банковской карты, электронного кошелька или иного платёжного средства без согласия его законного владельца." + } + ] + }, + { + "id": "section-5", + "title": "Дееспособность Пользователя", + "blocks": [ + { + "type": "paragraph", + "text": "5.1. Самостоятельно оплачивать Услуги вправе полностью дееспособное физическое лицо." + }, + { + "type": "paragraph", + "text": "5.2. Несовершеннолетний Пользователь вправе совершать оплату только в пределах своей дееспособности, установленной законодательством Российской Федерации, либо с согласия законного представителя." + }, + { + "type": "paragraph", + "text": "5.3. Совершая оплату, Пользователь подтверждает наличие права использовать выбранное платёжное средство." + }, + { + "type": "paragraph", + "text": "5.4. Законный представитель несовершеннолетнего вправе обратиться к Исполнителю по вопросу совершённого платежа, предоставив сведения, необходимые для идентификации платежа и подтверждения своих полномочий." + } + ] + }, + { + "id": "section-6", + "title": "Стоимость и порядок расчётов", + "blocks": [ + { + "type": "paragraph", + "text": "6.1. Стоимость предоплаты и количество начисляемых Слёз Элуны указываются в российских рублях и условных учётных единицах в Магазине до оплаты." + }, + { + "type": "paragraph", + "text": "6.2. Итоговая сумма платежа фиксируется в момент оформления Заказа и не может быть изменена Исполнителем после успешной оплаты." + }, + { + "type": "paragraph", + "text": "6.3. Стоимость конкретной цифровой услуги выражается в Слёзах Элуны и отображается Пользователю до её активации." + }, + { + "type": "paragraph", + "text": "6.4. Оплата производится в безналичном порядке через платёжный сервис Robokassa либо иной платёжный сервис, указанный на Сайте." + }, + { + "type": "paragraph", + "text": "6.5. Обязательство Пользователя по внесению предоплаты считается исполненным после получения Исполнителем подтверждения платёжного сервиса об успешной операции." + }, + { + "type": "paragraph", + "text": "6.6. Банк, платёжный сервис или иной поставщик платёжного средства может взимать с Пользователя собственную комиссию." + }, + { + "type": "paragraph", + "text": "Если такая комиссия взимается отдельно от суммы Заказа и не поступает Исполнителю, она не входит в размер внесённой предоплаты." + }, + { + "type": "paragraph", + "text": "6.7. Исполнитель применяет специальный налоговый режим «Налог на профессиональный доход»." + }, + { + "type": "paragraph", + "text": "6.8. При получении денежных средств Исполнитель формирует и передаёт Пользователю электронный чек в порядке и сроки, установленные законодательством Российской Федерации." + }, + { + "type": "paragraph", + "text": "6.9. Чек формируется на полную сумму, уплаченную Пользователем Исполнителю, без уменьшения на комиссию, удержанную платёжным сервисом с Исполнителя." + }, + { + "type": "paragraph", + "text": "6.10. Пользователь обязан сохранить подтверждение платежа до отражения предоплаты на Внутреннем балансе." + } + ] + }, + { + "id": "section-7", + "title": "Отражение предоплаты и оказание Услуг", + "blocks": [ + { + "type": "paragraph", + "text": "7.1. Платные Слёзы Элуны начисляются после получения Исполнителем подтверждения успешной оплаты." + }, + { + "type": "paragraph", + "text": "7.2. Обычно начисление производится автоматически в течение нескольких минут." + }, + { + "type": "paragraph", + "text": "Предельный срок отражения предоплаты на Внутреннем балансе составляет двадцать четыре часа с момента получения Исполнителем подтверждения об успешной оплате, если иной срок прямо не указан Пользователю до оплаты." + }, + { + "type": "paragraph", + "text": "Нарушение установленного срока влечёт последствия, предусмотренные законодательством Российской Федерации." + }, + { + "type": "paragraph", + "text": "Предоставление Исполнителем Бонусных Слёз Элуны или иной дополнительной компенсации не ограничивает права и требования Пользователя, предусмотренные законодательством." + }, + { + "type": "paragraph", + "text": "7.3. Если Платные Слёзы Элуны не были начислены в установленный срок, Пользователь вправе обратиться к Исполнителю по электронной почте." + }, + { + "type": "paragraph", + "text": "7.4. Для активации конкретной Услуги Пользователь:" + }, + { + "type": "list", + "items": [ + "выбирает Услугу в Магазине;", + "знакомится с её содержанием, стоимостью и ограничениями;", + "указывает персонажа или иные необходимые параметры;", + "подтверждает списание Слёз Элуны." + ] + }, + { + "type": "paragraph", + "text": "7.5. Услуга оказывается автоматически либо вручную в срок, указанный в её описании." + }, + { + "type": "paragraph", + "text": "Если отдельный срок не указан, Услуга должна быть оказана не позднее двадцати четырёх часов с момента её активации." + }, + { + "type": "paragraph", + "text": "7.6. Услуга считается оказанной в момент выполнения предусмотренного её описанием результата, в частности:" + }, + { + "type": "list", + "items": [ + "начисления или открытия косметического элемента;", + "изменения имени персонажа;", + "изменения внешности или пола персонажа;", + "изменения расы или фракции персонажа;", + "переноса или восстановления персонажа;", + "внесения иного выбранного изменения в информационную систему Проекта." + ] + }, + { + "type": "paragraph", + "text": "7.7. Факт внесения предоплаты, списания Слёз Элуны и оказания Услуги может подтверждаться:" + }, + { + "type": "list", + "items": [ + "историей Заказов;", + "историей операций Внутреннего баланса;", + "данными платёжного сервиса;", + "журналами информационной системы;", + "изменением данных игрового персонажа;", + "сообщением, направленным Пользователю;", + "иными относящимися к операции техническими записями Проекта." + ] + }, + { + "type": "paragraph", + "text": "7.8. Если Услуга не оказана, оказана с нарушением установленного срока, не соответствует описанию или имеет недостаток, Пользователь вправе предъявить требования, предусмотренные настоящей Офертой и законодательством Российской Федерации." + } + ] + }, + { + "id": "section-8", + "title": "Правила Внутреннего баланса", + "blocks": [ + { + "type": "paragraph", + "text": "8.1. Платные и Бонусные Слёзы Элуны учитываются отдельно." + }, + { + "type": "paragraph", + "text": "8.2. При активации цифровых услуг в первую очередь списываются Платные Слёзы Элуны, начисленные ранее, а затем Бонусные Слёзы Элуны, если условиями конкретной акции прямо не предусмотрен иной порядок." + }, + { + "type": "paragraph", + "text": "8.3. Платные Слёзы Элуны не имеют заранее установленного срока действия, пока:" + }, + { + "type": "list", + "items": [ + "существует соответствующая Учётная запись;", + "функционирует Проект;", + "Пользователь не потребовал возврата неиспользованной предоплаты;", + "обязательство не прекращено по основаниям, предусмотренным законодательством Российской Федерации." + ] + }, + { + "type": "paragraph", + "text": "8.4. Срок использования Бонусных Слёз Элуны может быть ограничен условиями конкретной акции." + }, + { + "type": "paragraph", + "text": "Информация о таком сроке должна быть доведена до Пользователя до получения Бонусных Слёз Элуны." + }, + { + "type": "paragraph", + "text": "8.5. Слёзы Элуны не могут быть проданы, подарены, переданы или обменены между Пользователями, если такая возможность прямо не предусмотрена функциональностью Проекта." + }, + { + "type": "paragraph", + "text": "8.6. Слёзы Элуны не подлежат обмену на наличные или безналичные денежные средства, кроме возврата неиспользованной предоплаты в порядке, установленном разделом 9 настоящей Оферты." + }, + { + "type": "paragraph", + "text": "8.7. Исполнитель не вправе произвольно уменьшать количество Платных Слёз Элуны." + }, + { + "type": "paragraph", + "text": "Списание Платных Слёз Элуны допускается только:" + }, + { + "type": "list", + "items": [ + "по подтверждённому запросу Пользователя на активацию Услуги;", + "при возврате соответствующего платежа Пользователю;", + "при отмене или возврате платежа банком либо платёжным сервисом;", + "при исправлении подтверждённой технической ошибки, включая двойное начисление или начисление, не подтверждённое фактически совершённым платежом;", + "в иных случаях, прямо предусмотренных законодательством Российской Федерации." + ] + }, + { + "type": "paragraph", + "text": "Наличие технической ошибки устанавливается на основании совокупности имеющихся сведений, включая данные платёжного сервиса, историю Заказов, историю операций Внутреннего баланса и журналы информационной системы." + }, + { + "type": "paragraph", + "text": "При корректировке баланса Исполнитель сообщает Пользователю основание и размер списания посредством уведомления в Личном кабинете или по электронной почте." + }, + { + "type": "paragraph", + "text": "Пользователь вправе оспорить такое списание, обратившись к Исполнителю в порядке раздела 19 настоящей Оферты." + }, + { + "type": "paragraph", + "text": "8.8. Исполнитель вправе изменять стоимость будущих цифровых услуг в Слёзах Элуны." + }, + { + "type": "paragraph", + "text": "Новая стоимость применяется только к активациям, подтверждённым после её публикации." + }, + { + "type": "paragraph", + "text": "8.9. Изменение стоимости цифровых услуг не уменьшает количество уже начисленных Платных Слёз Элуны." + }, + { + "type": "paragraph", + "text": "8.10. Если изменение перечня или стоимости услуг существенно лишает Пользователя возможности использовать неиспользованный Платный баланс по назначению, Пользователь вправе отказаться от неоказанной части договора и потребовать возврат в порядке раздела 9 настоящей Оферты." + } + ] + }, + { + "id": "section-9", + "title": "Отказ от договора и возврат денежных средств", + "blocks": [ + { + "type": "paragraph", + "text": "9.1. Пользователь вправе отказаться от исполнения договора оказания услуг в любое время при условии оплаты Исполнителю фактически понесённых расходов, связанных с исполнением обязательств по соответствующему договору." + }, + { + "type": "paragraph", + "text": "9.2. Неиспользованная часть Платного баланса признаётся предоплатой за ещё не оказанные цифровые услуги." + }, + { + "type": "paragraph", + "text": "9.3. При полном отказе до активации каких-либо Услуг Исполнитель возвращает внесённую предоплату за вычетом фактически понесённых и документально подтверждённых расходов, непосредственно связанных с исполнением соответствующего Заказа, если удержание таких расходов допускается законодательством Российской Федерации." + }, + { + "type": "paragraph", + "text": "9.4. При частичном использовании Внутреннего баланса возврату подлежит часть предоплаты, относящаяся к неиспользованным Платным Слёзам Элуны." + }, + { + "type": "paragraph", + "text": "Размер возвращаемой части предоплаты рассчитывается отдельно для соответствующего платежа по следующему принципу:" + }, + { + "type": "paragraph", + "text": "сумма соответствующего платежа × количество неиспользованных Платных Слёз Элуны из этого платежа ÷ общее количество Платных Слёз Элуны, начисленных за этот платёж." + }, + { + "type": "paragraph", + "text": "Бесплатно начисленные Бонусные Слёзы Элуны при расчёте размера возврата не учитываются." + }, + { + "type": "paragraph", + "text": "9.5. Надлежащим образом оказанная цифровая услуга не считается неоказанной частью договора." + }, + { + "type": "paragraph", + "text": "Это не ограничивает право Пользователя предъявить требования в случае:" + }, + { + "type": "list", + "items": [ + "недостатка Услуги;", + "несоответствия Услуги описанию;", + "нарушения срока оказания;", + "ошибочного оказания Услуги;", + "иных нарушений со стороны Исполнителя." + ] + }, + { + "type": "paragraph", + "text": "9.6. Пользователь вправе потребовать устранения недостатка, повторного оказания Услуги либо возврата соответствующей суммы, в частности, если:" + }, + { + "type": "list", + "items": [ + "денежные средства списаны, но предоплата не отражена на Внутреннем балансе;", + "начислено меньше Платных Слёз Элуны, чем предусмотрено оплаченным Заказом;", + "один платёж был ошибочно проведён несколько раз;", + "Слёзы Элуны списаны, но Услуга не оказана;", + "Услуга оказана не для той Учётной записи или персонажа по вине Исполнителя;", + "Услуга не соответствует её описанию;", + "Услуга имеет недостаток;", + "оказание Услуги объективно невозможно;", + "Проект окончательно прекращает работу, а Платный баланс остаётся неиспользованным." + ] + }, + { + "type": "paragraph", + "text": "9.7. Бонусные Слёзы Элуны не имеют денежного эквивалента и не подлежат денежной компенсации." + }, + { + "type": "paragraph", + "text": "9.8. При возврате платежа Бонусные Слёзы Элуны, начисленные в связи с соответствующим платежом, аннулируются." + }, + { + "type": "paragraph", + "text": "9.9. Для возврата или предъявления требования Пользователь направляет обращение по адресу электронной почты:" + }, + { + "type": "paragraph", + "text": "sindoring@yandex.ru" + }, + { + "type": "paragraph", + "text": "В обращении рекомендуется указать:" + }, + { + "type": "list", + "items": [ + "логин или идентификатор Учётной записи;", + "дату и сумму оплаты;", + "номер платежа или Заказа;", + "адрес электронной почты, использованный при оплате;", + "описание обстоятельств;", + "требование Пользователя;", + "подтверждение платежа при его наличии." + ] + }, + { + "type": "paragraph", + "text": "9.10. Требования, для которых статьёй 31 Закона Российской Федерации «О защите прав потребителей» установлен десятидневный срок, удовлетворяются в течение десяти календарных дней со дня предъявления соответствующего требования." + }, + { + "type": "paragraph", + "text": "9.11. Обращения о возврате неиспользованной предоплаты в связи с отказом от договора рассматриваются Исполнителем в течение десяти календарных дней со дня получения обращения, если законодательством Российской Федерации не установлен иной срок." + }, + { + "type": "paragraph", + "text": "9.12. Если предоставленных Пользователем сведений объективно недостаточно для идентификации платежа или Учётной записи, Исполнитель в течение трёх рабочих дней после получения обращения вправе запросить только те дополнительные сведения, которые необходимы для проверки требования." + }, + { + "type": "paragraph", + "text": "Для идентификации могут использоваться один или несколько следующих способов:" + }, + { + "type": "list", + "items": [ + "обращение из авторизованного Личного кабинета;", + "подтверждение посредством одноразового кода, направленного на адрес электронной почты, связанный с Учётной записью;", + "предоставление номера Заказа или платёжной операции;", + "предоставление даты, суммы и способа оплаты;", + "предоставление электронного подтверждения платежа;", + "предоставление иных сведений, непосредственно связанных с соответствующим Заказом." + ] + }, + { + "type": "paragraph", + "text": "Исполнитель не вправе требовать сведения и документы, не относящиеся к идентификации платежа, Учётной записи или заявленного требования." + }, + { + "type": "paragraph", + "text": "Отсутствие доступа к одному из способов подтверждения не является самостоятельным основанием для отказа, если принадлежность платежа и Учётной записи может быть достоверно установлена иным способом." + }, + { + "type": "paragraph", + "text": "Запрос дополнительных сведений не должен использоваться для необоснованного затягивания рассмотрения обращения." + }, + { + "type": "paragraph", + "text": "9.13. Возврат инициируется тем же способом, которым была совершена оплата, если иной способ не согласован Сторонами и допускается платёжным сервисом." + }, + { + "type": "paragraph", + "text": "9.14. Срок фактического зачисления денежных средств после инициирования возврата зависит от банка и платёжного сервиса." + }, + { + "type": "paragraph", + "text": "9.15. Пользователь не вправе получить возврат одной и той же суммы одновременно от Исполнителя и посредством оспаривания операции в банке или платёжной системе." + }, + { + "type": "paragraph", + "text": "9.16. Настоящий раздел не ограничивает иные права Пользователя, предусмотренные законодательством Российской Федерации." + } + ] + }, + { + "id": "section-10", + "title": "Права и обязанности Исполнителя", + "blocks": [ + { + "type": "paragraph", + "text": "10.1. Исполнитель обязан:" + }, + { + "type": "list", + "items": [ + "предоставить достоверную информацию о себе;", + "предоставить информацию о содержании, стоимости и условиях оказания Услуг;", + "отражать внесённую предоплату на Внутреннем балансе;", + "оказывать активированные Услуги в установленный срок;", + "формировать и передавать Пользователю чек;", + "вести учёт платежей и операций Внутреннего баланса;", + "рассматривать обращения Пользователей;", + "исправлять технические ошибки, допущенные по своей вине;", + "обеспечивать обработку персональных данных в соответствии с законодательством Российской Федерации;", + "соблюдать обязательные требования законодательства о защите прав потребителей." + ] + }, + { + "type": "paragraph", + "text": "10.2. Исполнитель вправе:" + }, + { + "type": "list", + "items": [ + "изменять перечень будущих Услуг;", + "изменять стоимость будущих активаций;", + "проводить профилактические и технические работы;", + "временно приостанавливать работу отдельных сервисов;", + "запрашивать сведения, необходимые для идентификации платежа;", + "проверять операции на предмет мошенничества или технической ошибки;", + "исправлять подтверждённые ошибочные и дублирующие начисления;", + "привлекать третьих лиц для исполнения договора;", + "применять меры, предусмотренные Правилами Проекта." + ] + }, + { + "type": "paragraph", + "text": "10.3. Исполнитель не вправе изменять условия уже активированной и оплаченной Услуги в одностороннем порядке, если такие изменения ухудшают положение Пользователя." + } + ] + }, + { + "id": "section-11", + "title": "Права и обязанности Пользователя", + "blocks": [ + { + "type": "paragraph", + "text": "11.1. Пользователь обязан:" + }, + { + "type": "list", + "items": [ + "предоставлять достоверные сведения;", + "проверять параметры Заказа до оплаты и активации Услуги;", + "соблюдать Правила Проекта;", + "обеспечивать сохранность логина, пароля и иных данных доступа;", + "не передавать Учётную запись третьим лицам;", + "использовать только законные платёжные средства;", + "не использовать ошибки, уязвимости или сбои Сайта, игрового сервера или платёжной системы;", + "незамедлительно сообщать об ошибочных или двойных начислениях;", + "не предоставлять банку, платёжному сервису или Исполнителю заведомо недостоверную информацию о платеже." + ] + }, + { + "type": "paragraph", + "text": "11.2. Пользователь вправе:" + }, + { + "type": "list", + "items": [ + "получить информацию об Исполнителе и Услуге до оплаты;", + "получить подтверждение внесения предоплаты;", + "получить электронный чек;", + "использовать Внутренний баланс для активации доступных Услуг;", + "получить заказанную Услугу;", + "обратиться за технической поддержкой;", + "потребовать устранения недостатка;", + "потребовать повторного оказания Услуги;", + "отказаться от неоказанной части договора;", + "потребовать возврат денежных средств при наличии оснований;", + "использовать иные способы защиты своих прав." + ] + } + ] + }, + { + "id": "section-12", + "title": "Учётная запись и Правила Проекта", + "blocks": [ + { + "type": "paragraph", + "text": "12.1. Пользователь несёт ответственность за сохранность данных доступа к Учётной записи." + }, + { + "type": "paragraph", + "text": "12.2. Действия, совершённые после корректной авторизации с использованием данных Учётной записи, предполагаются совершёнными Пользователем, пока не установлено иное." + }, + { + "type": "paragraph", + "text": "Данное положение не применяется, если неправомерный доступ возник вследствие уязвимости или нарушения требований безопасности на стороне Исполнителя." + }, + { + "type": "paragraph", + "text": "12.3. Исполнитель вправе временно ограничить или прекратить доступ к Учётной записи при существенном или неоднократном нарушении Правил Проекта." + }, + { + "type": "paragraph", + "text": "12.4. Блокировка Учётной записи сама по себе не означает автоматического изъятия или аннулирования неиспользованного Платного баланса." + }, + { + "type": "paragraph", + "text": "12.5. При блокировке Пользователь сохраняет право обратиться по вопросу:" + }, + { + "type": "list", + "items": [ + "неоказанных оплаченных Услуг;", + "неиспользованной предоплаты;", + "ошибочных списаний;", + "недостатков оказанных Услуг." + ] + }, + { + "type": "paragraph", + "text": "12.6. Стоимость цифровых услуг, надлежащим образом оказанных до блокировки Учётной записи, не признаётся неиспользованной предоплатой." + }, + { + "type": "paragraph", + "text": "12.7. Перед удалением Учётной записи по заявлению Пользователя Исполнитель информирует его о наличии неиспользованного Платного баланса и возможности обратиться по вопросу возврата." + } + ] + }, + { + "id": "section-13", + "title": "Работа Проекта и технические ограничения", + "blocks": [ + { + "type": "paragraph", + "text": "13.1. Исполнитель принимает разумные технические и организационные меры для поддержания работы Сайта и игрового сервера." + }, + { + "type": "paragraph", + "text": "13.2. Исполнитель не гарантирует абсолютную непрерывность работы Проекта и полное отсутствие технических ошибок." + }, + { + "type": "paragraph", + "text": "Настоящее положение не освобождает Исполнителя от исполнения обязательств и ответственности в случаях, предусмотренных законодательством Российской Федерации." + }, + { + "type": "paragraph", + "text": "13.3. Доступ к Проекту может временно ограничиваться в связи с:" + }, + { + "type": "list", + "items": [ + "профилактическими работами;", + "обновлением программного обеспечения;", + "устранением аварий;", + "сетевыми атаками;", + "сбоями каналов связи;", + "действиями хостинг-провайдеров;", + "обязательными требованиями государственных органов;", + "обстоятельствами непреодолимой силы." + ] + }, + { + "type": "paragraph", + "text": "13.4. При плановых работах Исполнитель по возможности заранее размещает уведомление на Сайте или иных официальных ресурсах Проекта." + }, + { + "type": "paragraph", + "text": "13.5. Временная недоступность бесплатной части Проекта сама по себе не означает недостаток ранее оказанной цифровой услуги." + }, + { + "type": "paragraph", + "text": "13.6. Если технический сбой повлёк утрату неоказанной оплаченной Услуги или неиспользованного Платного баланса, Исполнитель восстанавливает соответствующие данные либо возвращает стоимость неоказанной части договора." + }, + { + "type": "paragraph", + "text": "13.7. При окончательном прекращении работы Проекта Исполнитель размещает уведомление и предоставляет Пользователям разумный срок для обращения по вопросу неиспользованного Платного баланса." + } + ] + }, + { + "id": "section-14", + "title": "Ответственность Сторон", + "blocks": [ + { + "type": "paragraph", + "text": "14.1. За нарушение обязательств Стороны несут ответственность в соответствии с законодательством Российской Федерации и настоящей Офертой." + }, + { + "type": "paragraph", + "text": "14.2. Исполнитель отвечает за:" + }, + { + "type": "list", + "items": [ + "правильное отражение полученной предоплаты;", + "соответствие Услуги её описанию;", + "соблюдение установленного срока оказания Услуги;", + "устранение ошибок, допущенных по его вине;", + "сохранность учитываемого Платного баланса;", + "соблюдение обязательных прав Пользователя." + ] + }, + { + "type": "paragraph", + "text": "14.3. Исполнитель не несёт ответственности за нарушение обязательства только в той части, в которой докажет, что такое нарушение непосредственно возникло вследствие действий или бездействия Пользователя либо обстоятельств непреодолимой силы." + }, + { + "type": "paragraph", + "text": "К обстоятельствам, связанным с действиями или бездействием Пользователя, могут относиться:" + }, + { + "type": "list", + "items": [ + "указание неверной Учётной записи, игрового мира или персонажа;", + "передача Пользователем данных доступа третьему лицу;", + "использование Пользователем несовместимого или самостоятельно изменённого программного обеспечения;", + "неисправность устройства или соединения Пользователя, непосредственно препятствующая получению Услуги;", + "блокировка операции вследствие неправомерных действий Пользователя;", + "иное нарушение Пользователем своих обязанностей, находящееся в прямой причинной связи с невозможностью оказания Услуги." + ] + }, + { + "type": "paragraph", + "text": "14.4. Само по себе наличие обстоятельства, перечисленного в пункте 14.3, не освобождает Исполнителя от ответственности." + }, + { + "type": "paragraph", + "text": "Исполнитель должен подтвердить причинную связь между таким обстоятельством и нарушением обязательства." + }, + { + "type": "paragraph", + "text": "14.5. Положения пункта 14.3 не освобождают Исполнителя от ответственности за:" + }, + { + "type": "list", + "items": [ + "ошибки и неисправности на стороне Проекта;", + "несоответствие Услуги её описанию;", + "неправильное отражение полученной предоплаты;", + "ошибочное списание Внутреннего баланса;", + "нарушение сроков по причинам, находящимся под контролем Исполнителя;", + "предоставление Пользователю недостоверной или неполной информации;", + "иные действия или бездействие Исполнителя." + ] + }, + { + "type": "paragraph", + "text": "14.6. Условия настоящей Оферты не применяются в той части, в которой они ограничивают права Пользователя по сравнению с обязательными требованиями законодательства Российской Федерации." + }, + { + "type": "paragraph", + "text": "14.7. Если какое-либо условие Оферты будет признано ущемляющим права потребителя или недействительным, такое условие не применяется, а отношения Сторон регулируются законодательством Российской Федерации." + }, + { + "type": "paragraph", + "text": "Недействительность отдельного условия не влечёт недействительность остальных положений Оферты." + } + ] + }, + { + "id": "section-15", + "title": "Персональные данные", + "blocks": [ + { + "type": "paragraph", + "text": "15.1. Обработка персональных данных производится в соответствии с законодательством Российской Федерации и Политикой обработки персональных данных, размещённой на Сайте." + }, + { + "type": "paragraph", + "text": "15.2. В целях исполнения договора могут обрабатываться:" + }, + { + "type": "list", + "items": [ + "адрес электронной почты;", + "идентификатор Учётной записи;", + "IP-адрес;", + "технические сведения об устройстве и программном обеспечении;", + "история Заказов и платежей;", + "история операций Внутреннего баланса;", + "сведения об игровых персонажах;", + "данные обращений в поддержку;", + "идентификаторы платёжных операций." + ] + }, + { + "type": "paragraph", + "text": "15.3. Персональные данные обрабатываются для:" + }, + { + "type": "list", + "items": [ + "регистрации и обслуживания Учётной записи;", + "исполнения настоящего договора;", + "обработки платежей;", + "формирования и направления чеков;", + "оказания цифровых услуг;", + "рассмотрения обращений;", + "предотвращения мошенничества;", + "обеспечения безопасности Проекта;", + "исполнения обязанностей, установленных законодательством Российской Федерации." + ] + }, + { + "type": "paragraph", + "text": "15.4. Если реквизиты банковской карты вводятся на странице платёжного сервиса, такие реквизиты обрабатываются соответствующим платёжным сервисом и не передаются Исполнителю в полном объёме." + }, + { + "type": "paragraph", + "text": "15.5. Исполнитель вправе передавать платёжному сервису, хостинг-провайдеру и иным техническим исполнителям данные только в объёме, необходимом для выполнения соответствующей функции и при наличии законного основания." + }, + { + "type": "paragraph", + "text": "15.6. Политика обработки персональных данных размещается в открытом доступе на Сайте." + }, + { + "type": "paragraph", + "text": "Действующая гиперссылка на Политику размещается на страницах Сайта, посредством которых осуществляется сбор персональных данных, включая страницы регистрации, оформления оплаты и направления обращений." + }, + { + "type": "paragraph", + "text": "15.7. Пользователю предоставляется возможность ознакомиться с Политикой обработки персональных данных до передачи персональных данных, регистрации Учётной записи и совершения оплаты." + }, + { + "type": "paragraph", + "text": "Принятие настоящей Оферты не заменяет отдельного согласия на обработку персональных данных в случаях, когда получение такого согласия обязательно в соответствии с законодательством Российской Федерации." + }, + { + "type": "paragraph", + "text": "15.8. Сроки обработки и хранения персональных данных устанавливаются отдельно для каждой цели обработки и указываются в Политике обработки персональных данных." + }, + { + "type": "paragraph", + "text": "Персональные данные хранятся не дольше, чем этого требуют цели обработки, если иной срок не установлен законодательством Российской Федерации или договором." + }, + { + "type": "paragraph", + "text": "После достижения целей обработки либо утраты необходимости в их достижении персональные данные уничтожаются или обезличиваются, если дальнейшее хранение не требуется на ином законном основании." + }, + { + "type": "paragraph", + "text": "15.9. Пользователь вправе направить Исполнителю обращение по вопросам обработки персональных данных по адресу электронной почты, указанному в разделе 20 настоящей Оферты." + } + ] + }, + { + "id": "section-16", + "title": "Интеллектуальная собственность", + "blocks": [ + { + "type": "paragraph", + "text": "16.1. MoonWell является неофициальным игровым проектом и не является официальным сервером World of Warcraft." + }, + { + "type": "paragraph", + "text": "16.2. Исполнитель не заявляет о наличии аффилированности, партнёрства, одобрения или спонсорской поддержки со стороны Blizzard Entertainment, Microsoft Corporation или связанных с ними лиц." + }, + { + "type": "paragraph", + "text": "16.3. Наименования World of Warcraft, Warcraft, Blizzard, названия игровых дополнений, персонажей, территорий, предметов, изображения и иные связанные объекты могут принадлежать соответствующим правообладателям." + }, + { + "type": "paragraph", + "text": "16.4. Упоминание таких объектов используется для описания тематики Проекта и не означает передачу Пользователю исключительных прав." + }, + { + "type": "paragraph", + "text": "16.5. В рамках настоящей Оферты Пользователю не продаётся и не передаётся:" + }, + { + "type": "list", + "items": [ + "игровой клиент World of Warcraft;", + "лицензия на программное обеспечение Blizzard;", + "право собственности на объекты World of Warcraft;", + "право коммерческого использования объектов третьих лиц;", + "право требовать оказания услуг от Blizzard или иных третьих лиц." + ] + }, + { + "type": "paragraph", + "text": "16.6. Пользователь самостоятельно обеспечивает правомерность использования программного обеспечения, установленного на его устройстве." + }, + { + "type": "paragraph", + "text": "16.7. Положения настоящего раздела не являются заявлением о наличии у Исполнителя разрешения правообладателя на деятельность Проекта." + } + ] + }, + { + "id": "section-17", + "title": "Обстоятельства непреодолимой силы", + "blocks": [ + { + "type": "paragraph", + "text": "17.1. Сторона освобождается от ответственности за неисполнение обязательства, если докажет, что его исполнение стало невозможным вследствие чрезвычайных и непредотвратимых при данных условиях обстоятельств." + }, + { + "type": "paragraph", + "text": "17.2. К таким обстоятельствам могут относиться:" + }, + { + "type": "list", + "items": [ + "стихийные бедствия;", + "военные действия;", + "масштабные аварии инфраструктуры;", + "обязательные запреты государственных органов;", + "длительные сбои магистральных сетей связи;", + "иные обстоятельства, отвечающие предусмотренным законом признакам непреодолимой силы." + ] + }, + { + "type": "paragraph", + "text": "17.3. Отсутствие денежных средств, обычная техническая неисправность, отсутствие необходимого оборудования или нарушение обязательств контрагентом сами по себе не признаются непреодолимой силой." + }, + { + "type": "paragraph", + "text": "17.4. Сторона должна уведомить другую Сторону о наступлении таких обстоятельств в разумный срок." + }, + { + "type": "paragraph", + "text": "17.5. Если оказание оплаченной Услуги окончательно стало невозможным, Исполнитель возвращает стоимость неоказанной части договора." + } + ] + }, + { + "id": "section-18", + "title": "Изменение и срок действия Оферты", + "blocks": [ + { + "type": "paragraph", + "text": "18.1. Оферта вступает в силу с момента её размещения на Сайте и действует до её отзыва либо публикации новой редакции." + }, + { + "type": "paragraph", + "text": "18.2. Исполнитель вправе изменять Оферту путём размещения новой редакции на Сайте." + }, + { + "type": "paragraph", + "text": "18.3. Новая редакция применяется к платежам, совершённым после её публикации." + }, + { + "type": "paragraph", + "text": "18.4. К внесённой предоплате применяется редакция Оферты, действовавшая в момент оплаты, если более поздняя редакция не улучшает положение Пользователя." + }, + { + "type": "paragraph", + "text": "18.5. К конкретной цифровой услуге также применяются содержание, стоимость и условия, отображавшиеся Пользователю непосредственно перед её активацией." + }, + { + "type": "paragraph", + "text": "18.6. Исполнитель вправе хранить и публиковать архив предыдущих редакций Оферты." + }, + { + "type": "paragraph", + "text": "18.7. Отзыв Оферты не прекращает обязательства по ранее принятым платежам и активированным Услугам." + } + ] + }, + { + "id": "section-19", + "title": "Обращения и разрешение споров", + "blocks": [ + { + "type": "paragraph", + "text": "19.1. Пользователь может направить обращение, требование или претензию по электронной почте:" + }, + { + "type": "paragraph", + "text": "sindoring@yandex.ru" + }, + { + "type": "paragraph", + "text": "19.2. Исполнитель направляет ответ на обычное обращение технической поддержки в течение пяти рабочих дней со дня его получения." + }, + { + "type": "paragraph", + "text": "19.3. Если обращение содержит требование, для которого законодательством Российской Федерации установлен специальный срок, применяется срок, установленный законодательством." + }, + { + "type": "paragraph", + "text": "19.4. Стороны стремятся разрешать разногласия путём переговоров и обмена письменными обращениями." + }, + { + "type": "paragraph", + "text": "19.5. Направление претензии Исполнителю является рекомендуемым способом оперативного разрешения спора, но не ограничивает право потребителя обратиться в государственный орган или суд." + }, + { + "type": "paragraph", + "text": "19.6. Пользователь вправе предъявить иск о защите прав потребителей по правилам подсудности, установленным законодательством Российской Федерации." + }, + { + "type": "paragraph", + "text": "Условия настоящей Оферты не ограничивают право Пользователя на выбор предусмотренного законом места обращения в суд." + }, + { + "type": "paragraph", + "text": "19.7. К отношениям Сторон применяется законодательство Российской Федерации." + }, + { + "type": "paragraph", + "text": "19.8. Языком настоящей Оферты и взаимодействия Сторон является русский язык." + }, + { + "type": "paragraph", + "text": "19.9. Сообщения, направленные на указанный Пользователем адрес электронной почты, а также сообщения Пользователя, направленные с адреса, связанного с его Учётной записью, могут использоваться Сторонами в качестве подтверждения переписки и содержания обращений." + } + ] + }, + { + "id": "section-20", + "title": "Реквизиты Исполнителя", + "blocks": [ + { + "type": "paragraph", + "text": "Исполнитель: Абушаев Ильяс Ряисович" + }, + { + "type": "paragraph", + "text": "Статус: физическое лицо, применяющее специальный налоговый режим «Налог на профессиональный доход»" + }, + { + "type": "paragraph", + "text": "ИНН: 643967812920" + }, + { + "type": "paragraph", + "text": "Город ведения деятельности: Балаково" + }, + { + "type": "paragraph", + "text": "Сайт: https://moon-well.online/" + }, + { + "type": "paragraph", + "text": "Электронная почта: sindoring@yandex.ru" + } + ] + } +]; diff --git a/tests/Feature/InertiaPublicPagesFeatureTest.php b/tests/Feature/InertiaPublicPagesFeatureTest.php index 1c1f37a..3b9843c 100644 --- a/tests/Feature/InertiaPublicPagesFeatureTest.php +++ b/tests/Feature/InertiaPublicPagesFeatureTest.php @@ -19,31 +19,36 @@ class InertiaPublicPagesFeatureTest extends TestCase ); } - public function test_hidden_legal_pages_return_not_found(): void + public function test_offer_is_published_while_privacy_policy_stays_hidden(): void { - $this->get(route('legal.offer'))->assertNotFound(); - $this->get(route('legal.privacy'))->assertNotFound(); - } - - public function test_legal_pages_can_be_published_by_configuration(): void - { - config(['moonwell.legal.published' => true]); - $this->get(route('legal.offer')) ->assertOk() ->assertInertia(fn (Assert $page) => $page ->component('Legal/Offer', false) - ->where('legal.operator_name', config('moonwell.legal.operator_name')) - ->where('urls.privacy', route('legal.privacy')) + ->where('urls.offer', route('legal.offer')) + ->where('urls.privacy', null) ->etc() ); + $this->get(route('legal.privacy'))->assertNotFound(); + } + + public function test_legal_pages_can_be_controlled_independently(): void + { + config([ + 'moonwell.legal.offer_published' => false, + 'moonwell.legal.privacy_published' => true, + ]); + + $this->get(route('legal.offer'))->assertNotFound(); + $this->get(route('legal.privacy')) ->assertOk() ->assertInertia(fn (Assert $page) => $page ->component('Legal/Privacy', false) ->where('legal.contact_email', config('moonwell.legal.contact_email')) - ->where('urls.offer', route('legal.offer')) + ->where('urls.offer', null) + ->where('urls.privacy', route('legal.privacy')) ->etc() ); } diff --git a/tests/Feature/LandingPageTest.php b/tests/Feature/LandingPageTest.php index 1ae249a..3a7a6bb 100644 --- a/tests/Feature/LandingPageTest.php +++ b/tests/Feature/LandingPageTest.php @@ -17,8 +17,9 @@ class LandingPageTest extends TestCase $response->assertInertia(fn (Assert $page) => $page ->component('Landing/Main', false) ->where('realm.server_name', 'MoonWell') - ->where('legalUrls.published', false) - ->where('legalUrls.offer', null) + ->where('legalUrls.offer_published', true) + ->where('legalUrls.privacy_published', false) + ->where('legalUrls.offer', route('legal.offer')) ->where('legalUrls.privacy', null) ->etc() ); diff --git a/Публичная оферта MoonWell.docx b/Публичная оферта MoonWell.docx new file mode 100644 index 0000000000000000000000000000000000000000..20c00fb763ec25fa4d0aaa8ecf721a82bb81331a GIT binary patch literal 28001 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 RgZTD_eX9uLHT&z={{ws8#y