route handler for account/main
This commit is contained in:
@@ -36,7 +36,7 @@ class UserDataView(ViewSet):
|
|||||||
status=status.HTTP_404_NOT_FOUND
|
status=status.HTTP_404_NOT_FOUND
|
||||||
)
|
)
|
||||||
|
|
||||||
class AccountActions(ViewSet):
|
class AccountActionsView(ViewSet):
|
||||||
permission_classes = [IsAuthenticated]
|
permission_classes = [IsAuthenticated]
|
||||||
|
|
||||||
@action(detail=False, methods=['patch'])
|
@action(detail=False, methods=['patch'])
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ LoginViewSet,
|
|||||||
LogoutView,
|
LogoutView,
|
||||||
RefreshTokenView)
|
RefreshTokenView)
|
||||||
|
|
||||||
from api.account.client.views import UserDataView
|
from api.account.client.views import UserDataView, AccountActionsView
|
||||||
|
|
||||||
urlpatterns = [
|
urlpatterns = [
|
||||||
path("v1/faq/", FAQView.as_view(), name='faqMain'),
|
path("v1/faq/", FAQView.as_view(), name='faqMain'),
|
||||||
@@ -21,4 +21,6 @@ urlpatterns = [
|
|||||||
path("v1/logout", LogoutView.as_view(), name="logout"),
|
path("v1/logout", LogoutView.as_view(), name="logout"),
|
||||||
|
|
||||||
path ("v1/user/", UserDataView.as_view({'get': 'user_data'}), name="user"),
|
path ("v1/user/", UserDataView.as_view({'get': 'user_data'}), name="user"),
|
||||||
|
|
||||||
|
path("v1/account/change_main_data/", AccountActionsView.as_view({'patch':'change_data_main_tab'}), name='change_data_main_tab')
|
||||||
]
|
]
|
||||||
@@ -14,10 +14,12 @@ const validationRules = {
|
|||||||
lastName: { required: false },
|
lastName: { required: false },
|
||||||
phone_number: { required: true },
|
phone_number: { required: true },
|
||||||
email: { required: true },
|
email: { required: true },
|
||||||
|
country: { required: false },
|
||||||
|
city: { required: false },
|
||||||
}
|
}
|
||||||
|
|
||||||
const AccountPage = () => {
|
const AccountPage = () => {
|
||||||
const { user } = useUserStore()
|
const { user, setUser } = useUserStore()
|
||||||
|
|
||||||
const { values, handleChange, handleSubmit } = useForm(
|
const { values, handleChange, handleSubmit } = useForm(
|
||||||
{
|
{
|
||||||
@@ -31,10 +33,30 @@ const AccountPage = () => {
|
|||||||
validationRules,
|
validationRules,
|
||||||
async (values) => {
|
async (values) => {
|
||||||
try {
|
try {
|
||||||
// await updateMainTab(values)
|
const response = await fetch('/api/account/main', {
|
||||||
|
method: 'PATCH',
|
||||||
|
headers: {
|
||||||
|
'Content-Type': 'application/json',
|
||||||
|
},
|
||||||
|
body: JSON.stringify(values),
|
||||||
|
})
|
||||||
|
|
||||||
|
if (!response.ok) {
|
||||||
|
const error = await response.json()
|
||||||
|
throw new Error(error.error || 'Ошибка при обновлении данных')
|
||||||
|
}
|
||||||
|
|
||||||
|
const result = await response.json()
|
||||||
|
setUser(result.user)
|
||||||
showToast({ type: 'success', message: 'Данные успешно обновлены!' })
|
showToast({ type: 'success', message: 'Данные успешно обновлены!' })
|
||||||
} catch {
|
} catch (error) {
|
||||||
showToast({ type: 'error', message: 'Ой, что то пошло не так..' })
|
showToast({
|
||||||
|
type: 'error',
|
||||||
|
message:
|
||||||
|
error instanceof Error
|
||||||
|
? error.message
|
||||||
|
: 'Ой, что то пошло не так..',
|
||||||
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|||||||
324
frontend/app/(urls)/publichnaya-oferta/page.tsx
Normal file
324
frontend/app/(urls)/publichnaya-oferta/page.tsx
Normal file
@@ -0,0 +1,324 @@
|
|||||||
|
import React from 'react'
|
||||||
|
|
||||||
|
const PublicOffer = () => {
|
||||||
|
return (
|
||||||
|
<div className="max-w-4xl mx-auto px-4 py-8">
|
||||||
|
<h1 className="text-3xl font-bold mb-8">Публичная оферта</h1>
|
||||||
|
|
||||||
|
<section className="mb-8">
|
||||||
|
<h2 className="text-2xl font-semibold mb-4">1. ОБЩИЕ ПОЛОЖЕНИЯ</h2>
|
||||||
|
<div className="space-y-4">
|
||||||
|
<p className="text-gray-700">
|
||||||
|
1.1. Настоящий Публичный договор (далее – Оферта, договор)
|
||||||
|
представляет собой официальное предложение Интернет-сервиса
|
||||||
|
tripwb.com (далее — Компания) на оказание Информационных услуг
|
||||||
|
дееспособным физическим лицам (далее – Пользователь) по попутной
|
||||||
|
доставке посылок, либо совместной автомобильной поездке, через
|
||||||
|
вебсайт tripwb.com регулирует порядок использования Сайта и
|
||||||
|
взаимоотношения, возникающие при использовании Сайта и Сервисов
|
||||||
|
Пользователями. Компания не гарантирует доступность Сайта и Сервисов
|
||||||
|
круглосуточно. Компания имеет право в любой момент отказать любому
|
||||||
|
Пользователю, в использовании Сервисов при нарушении договора.
|
||||||
|
</p>
|
||||||
|
<p className="text-gray-700">
|
||||||
|
1.2. Принятие (акцепт) данной Оферты означает полное и
|
||||||
|
безоговорочное принятие Пользователем всех условий без каких-либо
|
||||||
|
исключений и/или ограничений и приравнивается в соответствии со
|
||||||
|
статьей 395 Гражданского Кодекса Республики Казахстан настоящее
|
||||||
|
Пользовательское соглашение признается офертой. Соглашение,
|
||||||
|
заключаемое в форме оферты, предусмотрено Гражданским Кодексом
|
||||||
|
Республики Казахстан, не требует двустороннего подписания и
|
||||||
|
действительно в электронном виде.
|
||||||
|
</p>
|
||||||
|
<p className="text-gray-700">
|
||||||
|
1.3. Данная Оферта считается заключенной (акцептированной) с момента
|
||||||
|
принятия Пользователем условий Сервиса путем заполнения учетной
|
||||||
|
записи на Сайте Компании.
|
||||||
|
</p>
|
||||||
|
<p className="text-gray-700">
|
||||||
|
1.4. Компания и Пользователь предоставляют взаимные гарантии своей
|
||||||
|
право и дееспособности, необходимые для заключения и исполнения
|
||||||
|
настоящей Оферты.
|
||||||
|
</p>
|
||||||
|
<p className="text-gray-700">
|
||||||
|
1.5. Пользователи не согласные с данной Офертой или с отдельными ее
|
||||||
|
пунктами, вправе отказаться от использования сайта
|
||||||
|
https://tripwb.com (далее — «Сайт»).
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section className="mb-8">
|
||||||
|
<h2 className="text-2xl font-semibold mb-4">2. Используемые Термины</h2>
|
||||||
|
<div className="space-y-4">
|
||||||
|
<div className="grid grid-cols-1 md:grid-cols-2 gap-4">
|
||||||
|
<div className="bg-gray-50 p-4 rounded-lg">
|
||||||
|
<p className="font-semibold">«Компания»</p>
|
||||||
|
<p className="text-gray-700">tripwb.com</p>
|
||||||
|
</div>
|
||||||
|
<div className="bg-gray-50 p-4 rounded-lg">
|
||||||
|
<p className="font-semibold">«Администрация Сайта»</p>
|
||||||
|
<p className="text-gray-700">
|
||||||
|
уполномоченные сотрудники Компании, а также иные лица,
|
||||||
|
уполномоченные на управление Сайтом и предоставление Сервисов
|
||||||
|
Пользователям при использовании Сайта в соответствии с настоящим
|
||||||
|
Соглашением
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<div className="bg-gray-50 p-4 rounded-lg">
|
||||||
|
<p className="font-semibold">«Сайт»</p>
|
||||||
|
<p className="text-gray-700">
|
||||||
|
Интернет-Сервис по попутной доставке посылок, а также совместных
|
||||||
|
автомобильных поездок, доступный на вебсайте tripwb.com
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<div className="bg-gray-50 p-4 rounded-lg">
|
||||||
|
<p className="font-semibold">«Аккаунт»</p>
|
||||||
|
<p className="text-gray-700">
|
||||||
|
учетная запись, создание которой является обязательным условием
|
||||||
|
регистрации на Сайте для получения доступа к использованию
|
||||||
|
Сервисов Сайта
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section className="mb-8">
|
||||||
|
<h2 className="text-2xl font-semibold mb-4">3. Основные положения</h2>
|
||||||
|
<div className="space-y-4">
|
||||||
|
<p className="text-gray-700">
|
||||||
|
3.1. Компанией разработана платформа для оказания информационных
|
||||||
|
услуг по попутной доставке посылок и совместных автомобильных
|
||||||
|
поездках, доступная на вебсайте по адресу tripwb.com. Целью данной
|
||||||
|
платформы является предоставление Перевозчиками, следующим в
|
||||||
|
определенном направлении, возможности установления связи с
|
||||||
|
Отправителем, которым необходимо передать посылку, груз, либо
|
||||||
|
осуществить поездку в том же направлении, для уменьшения собственных
|
||||||
|
расходов.
|
||||||
|
</p>
|
||||||
|
<p className="text-gray-700">
|
||||||
|
3.2. Нажимая «Войти через Google» или через «Логин» и «Пароль».
|
||||||
|
Пользователь соглашается, принимает, и обязуется безоговорочно
|
||||||
|
следовать всем его условиям, также, Пользователь вправе отказаться
|
||||||
|
от использования Сайта tripwb.com.
|
||||||
|
</p>
|
||||||
|
<p className="text-gray-700">
|
||||||
|
3.3. Компания оставляет за собой право изменять условия Соглашения и
|
||||||
|
всех его неотъемлемых частей без согласования с Пользователем с
|
||||||
|
уведомлением последнего посредством размещения на Сайте новой
|
||||||
|
редакции Соглашения.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<div className="mt-8 text-sm text-gray-500">
|
||||||
|
<p>Последнее обновление: 20.05.2025</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div className="mt-16 border-t-2 pt-8">
|
||||||
|
<h1 className="text-3xl font-bold mb-8">Жария шарт (Оферта)</h1>
|
||||||
|
|
||||||
|
<section className="mb-8">
|
||||||
|
<h2 className="text-2xl font-semibold mb-4">1. ЖАЛПЫ ЕРЕЖЕЛЕР</h2>
|
||||||
|
<div className="space-y-4">
|
||||||
|
<p className="text-gray-700">
|
||||||
|
1.1. Осы Жария шарт (бұдан әрі – Оферта, шарт) іс-әрекетке
|
||||||
|
қабілетті жеке тұлғаларға (бұдан әрі — Пайдаланушы) сәлемдемелерді
|
||||||
|
ілеспе жеткізу не бірлескен автомобиль сапары бойынша ақпараттық
|
||||||
|
қызметтер көрсетуге tripwb.com Интернет – сервистің (бұдан
|
||||||
|
әрі-Компания) ресми ұсынысын білдіреді, tripwb.com веб-сайт арқылы
|
||||||
|
Сайтты пайдалану тәртібін және Пайдаланушылар Сайтты және
|
||||||
|
Сервистерді пайдаланған кезде туындайтын қатынастарды реттейді.
|
||||||
|
Компания Сайт пен Сервистердің тәулік бойы қолжетімділігіне
|
||||||
|
кепілдік бермейді. Компания кез келген уақытта кез келген
|
||||||
|
Пайдаланушыға https://tripwb.com/ru/info_page/publichnaya-oferta/
|
||||||
|
Шартты бұзған кезде Сервистерді пайдаланудан бас тартуға құқылы.
|
||||||
|
</p>
|
||||||
|
<p className="text-gray-700">
|
||||||
|
1.2. Осы Офертаны қабылдау (акцепт) Пайдаланушының қандай да бір
|
||||||
|
ерекшеліктерсіз және/немесе шектеулерсіз барлық шарттарды толық
|
||||||
|
және сөзсіз қабылдауын білдіреді және Қазақстан Республикасы
|
||||||
|
Азаматтық Кодексінің 395-бабына сәйкес теңестіріледі осы
|
||||||
|
Пайдаланушы келісімі оферта деп танылады. Оферта нысанында
|
||||||
|
жасалатын Келісім Қазақстан Республикасының Азаматтық кодексінде
|
||||||
|
көзделген, екіжақты қол қоюды талап етпейді және электрондық түрде
|
||||||
|
жарамды.
|
||||||
|
</p>
|
||||||
|
<p className="text-gray-700">
|
||||||
|
1.3. Бұл Оферта Пайдаланушы Компания Сайтындағы тіркеу жазбасын
|
||||||
|
толтыру арқылы Сервис шарттарын қабылдаған сәттен бастап жасалған
|
||||||
|
(акцептелген) болып есептеледі.
|
||||||
|
</p>
|
||||||
|
<p className="text-gray-700">
|
||||||
|
1.4. Компания мен Пайдаланушы осы Офертаны жасасу және орындау
|
||||||
|
үшін қажетті өз құқығы мен әрекет қабілеттілігіне өзара
|
||||||
|
кепілдіктер береді.
|
||||||
|
</p>
|
||||||
|
<p className="text-gray-700">
|
||||||
|
1.5. Осы Офертамен немесе оның жекелеген тармақтарымен келіспеген
|
||||||
|
пайдаланушылар https://tripwb.com (бұдан әрі - "Сайт") Сайтты
|
||||||
|
пайдаланудан бас тартуға құқылы.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section className="mb-8">
|
||||||
|
<h2 className="text-2xl font-semibold mb-4">
|
||||||
|
2. Қолданылатын Терминдер
|
||||||
|
</h2>
|
||||||
|
<div className="space-y-4">
|
||||||
|
<div className="grid grid-cols-1 md:grid-cols-2 gap-4">
|
||||||
|
<div className="bg-gray-50 p-4 rounded-lg">
|
||||||
|
<p className="font-semibold">«Компания»</p>
|
||||||
|
<p className="text-gray-700">tripwb.com</p>
|
||||||
|
</div>
|
||||||
|
<div className="bg-gray-50 p-4 rounded-lg">
|
||||||
|
<p className="font-semibold">«Сайт Әкімшілігі»</p>
|
||||||
|
<p className="text-gray-700">
|
||||||
|
Компанияның уәкілетті қызметкерлері, сондай-ақ осы Келісімге
|
||||||
|
сәйкес Сайтты пайдалану кезінде Пайдаланушыларға Сайтты
|
||||||
|
басқаруға және Сервистерді ұсынуға уәкілеттік берілген өзге де
|
||||||
|
тұлғалар, сондай-ақ Сайтқа барлық тиісті айрықша мүліктік
|
||||||
|
құқықтары, оның ішінде Сайттың домендік атауына және оны
|
||||||
|
әкімшілендіруді жүзеге асыратын құқығы бар тұлғалар.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<div className="bg-gray-50 p-4 rounded-lg">
|
||||||
|
<p className="font-semibold">«Сайт»</p>
|
||||||
|
<p className="text-gray-700">
|
||||||
|
Сәлемдемелерді, сондай-ақ tripwb.com вебсайтта қолжетімді
|
||||||
|
бірлескен автомобиль сапарларын ілеспе жеткізу жөніндегі
|
||||||
|
Интернет-Сервис.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<div className="bg-gray-50 p-4 rounded-lg">
|
||||||
|
<p className="font-semibold">«Аккаунт»</p>
|
||||||
|
<p className="text-gray-700">
|
||||||
|
тіркеу жазбасы, оны құру Сайттың Сервистерін пайдалануға қол
|
||||||
|
жеткізу үшін Сайтта тіркелудің міндетті шарты болып табылады.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section className="mb-8">
|
||||||
|
<h2 className="text-2xl font-semibold mb-4">3. Негізгі ережелер</h2>
|
||||||
|
<div className="space-y-4">
|
||||||
|
<p className="text-gray-700">
|
||||||
|
3.1. Компания сәлемдемелерді ілеспе жеткізу және бірлескен
|
||||||
|
автомобиль сапарлары бойынша ақпараттық қызметтер көрсету үшін
|
||||||
|
tripwb.com вебсайтта қолжетімді платформа әзірледі. Бұл
|
||||||
|
платформаның мақсаты белгілі бір бағытта жүретін
|
||||||
|
Тасымалдаушылардың сілтемені, жүкті беруі немесе өз шығындарын
|
||||||
|
азайту үшін сол бағытта жүруді жүзеге асыруы қажет Жөнелтушімен
|
||||||
|
байланыс орнату мүмкіндігін ұсынуы болып табылады.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section className="mb-8">
|
||||||
|
<h2 className="text-2xl font-semibold mb-4">
|
||||||
|
4. Пайдаланушыны тіркеу
|
||||||
|
</h2>
|
||||||
|
<div className="space-y-4">
|
||||||
|
<p className="text-gray-700">
|
||||||
|
4.1. Сайтты 18 жасқа толған жеке тұлғалар пайдалана алады.
|
||||||
|
Кәмелетке толмағандарға Сайтта тіркелуге қатаң тыйым салынады.
|
||||||
|
Платформаға қол жеткізе отырып, оның Сервистерін қолдана отырып
|
||||||
|
және Аккаунтты тіркей отырып, Пайдаланушылар кәмелетке толған және
|
||||||
|
толық қабілетті адамдар екендігін растайды және кепілдік береді.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section className="mb-8">
|
||||||
|
<h2 className="text-2xl font-semibold mb-4">
|
||||||
|
5. Сайт Сервистері бойынша жалпы ережелер
|
||||||
|
</h2>
|
||||||
|
<div className="space-y-4">
|
||||||
|
<p className="text-gray-700">
|
||||||
|
5.1. Әкімшілік кез-келген Пайдаланушы Сайтта орналастырмас бұрын
|
||||||
|
кез-келген түрдегі контентті қарауға міндетті емес.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section className="mb-8">
|
||||||
|
<h2 className="text-2xl font-semibold mb-4">
|
||||||
|
6. Сервистерді пайдалану
|
||||||
|
</h2>
|
||||||
|
<div className="space-y-4">
|
||||||
|
<p className="text-gray-700">
|
||||||
|
6.1. Хабарландыруларды жариялау. Төмендегі шарттар орындалған
|
||||||
|
жағдайда, Сіз Пайдаланушы ретінде Тасымалдаушы (Тасымалдау) және
|
||||||
|
Жөнелтуші (Тапсырыс) ретінде хабарландырулар жасай және жариялай
|
||||||
|
аласыз.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section className="mb-8">
|
||||||
|
<h2 className="text-2xl font-semibold mb-4">
|
||||||
|
7. Дауларды қарау ережелері
|
||||||
|
</h2>
|
||||||
|
<div className="space-y-4">
|
||||||
|
<p className="text-gray-700">
|
||||||
|
Осы дауларды қарау қағидалары (бұдан әрі - Қағидалар) "TWB" онлайн
|
||||||
|
– сервисін пайдалану туралы келісімнің (бұдан әрі - Келісім)
|
||||||
|
ажырамас бөлігі болып табылады және Пайдаланушылар арасындағы
|
||||||
|
дауларды шешу тәртібін белгілейді.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section className="mb-8">
|
||||||
|
<h2 className="text-2xl font-semibold mb-4">
|
||||||
|
8. Хабарландыруларды жою себептері
|
||||||
|
</h2>
|
||||||
|
<div className="space-y-4">
|
||||||
|
<p className="text-gray-700">
|
||||||
|
Пайдаланушының хабарландыруын Компания Пайдаланушының осы
|
||||||
|
Келісімнің талаптарын бұзуы себебінен, сондай-ақ мынадай себептер
|
||||||
|
бойынша жоюы мүмкін.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section className="mb-8">
|
||||||
|
<h2 className="text-2xl font-semibold mb-4">
|
||||||
|
9. Компанияның жауапкершілігін шектеу
|
||||||
|
</h2>
|
||||||
|
<div className="space-y-4">
|
||||||
|
<p className="text-gray-700">
|
||||||
|
Сайттың Сервистерін пайдалана отырып, Пайдаланушы Сайтты және оның
|
||||||
|
Сервистерді өз тәуекелімен және "сол қалпында" пайдаланатындығына
|
||||||
|
келісімін растайды.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section className="mb-8">
|
||||||
|
<h2 className="text-2xl font-semibold mb-4">
|
||||||
|
10. Хабарламалар Сервисі
|
||||||
|
</h2>
|
||||||
|
<div className="space-y-4">
|
||||||
|
<p className="text-gray-700">
|
||||||
|
Мәміле жасалғаннан кейін Пайдаланушыға Пайдаланушылар арасында
|
||||||
|
мәміле бойынша міндеттемелерді орындау үшін қажетті қосымша
|
||||||
|
ақпаратпен алмасуға мүмкіндік беретін хабар алмасу қызметіне қол
|
||||||
|
жетімділік беріледі.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<div className="mt-8 text-sm text-gray-500">
|
||||||
|
<p>Соңғы жаңарту: 20.05.2025</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
export default PublicOffer
|
||||||
@@ -1,5 +1,49 @@
|
|||||||
import { NextRequest } from 'next/server'
|
import { NextRequest } from 'next/server'
|
||||||
|
import { getServerSession } from 'next-auth'
|
||||||
|
import { authOptions } from '@/app/api/auth/[...nextauth]/route'
|
||||||
|
|
||||||
export async function PUT(req: NextRequest) {
|
export async function PATCH(req: NextRequest) {
|
||||||
// обновляем данные в аккаунте
|
try {
|
||||||
|
const session = await getServerSession(authOptions)
|
||||||
|
|
||||||
|
if (!session) {
|
||||||
|
return new Response(JSON.stringify({ error: 'Unauthorized' }), {
|
||||||
|
status: 401,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
const data = await req.json()
|
||||||
|
const { firstName, lastName, email, phone_number, country, city } = data
|
||||||
|
|
||||||
|
const response = await fetch(
|
||||||
|
`${process.env.NEXT_PUBLIC_API_URL}/account/change_main_data/`,
|
||||||
|
{
|
||||||
|
method: 'PATCH',
|
||||||
|
headers: {
|
||||||
|
'Content-Type': 'application/json',
|
||||||
|
Authorization: `Bearer ${session.accessToken}`,
|
||||||
|
},
|
||||||
|
body: JSON.stringify({
|
||||||
|
firstName,
|
||||||
|
lastName,
|
||||||
|
email,
|
||||||
|
phone_number,
|
||||||
|
country,
|
||||||
|
city,
|
||||||
|
}),
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
if (!response.ok) {
|
||||||
|
const error = await response.json()
|
||||||
|
return new Response(JSON.stringify(error), { status: response.status })
|
||||||
|
}
|
||||||
|
|
||||||
|
const result = await response.json()
|
||||||
|
return new Response(JSON.stringify(result), { status: 200 })
|
||||||
|
} catch (error) {
|
||||||
|
return new Response(JSON.stringify({ error: 'Internal Server Error' }), {
|
||||||
|
status: 500,
|
||||||
|
})
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -42,7 +42,7 @@ interface GoogleToken extends JWT {
|
|||||||
error?: string
|
error?: string
|
||||||
}
|
}
|
||||||
|
|
||||||
const authOptions: NextAuthOptions = {
|
export const authOptions: NextAuthOptions = {
|
||||||
providers: [
|
providers: [
|
||||||
//google login flow
|
//google login flow
|
||||||
// GoogleProvider({
|
// GoogleProvider({
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ const Footer = () => {
|
|||||||
<EmailHandler />
|
<EmailHandler />
|
||||||
<div className="flex gap-4 justify-center md:justify-start">
|
<div className="flex gap-4 justify-center md:justify-start">
|
||||||
<a
|
<a
|
||||||
href="https://instagram.com"
|
href="https://instagram.com/tripwb_com"
|
||||||
target="_blank"
|
target="_blank"
|
||||||
rel="noopener noreferrer"
|
rel="noopener noreferrer"
|
||||||
>
|
>
|
||||||
@@ -41,7 +41,7 @@ const Footer = () => {
|
|||||||
/>
|
/>
|
||||||
</a>
|
</a>
|
||||||
<a
|
<a
|
||||||
href="https://telegram.com"
|
href="https://t.me/tripWB"
|
||||||
target="_blank"
|
target="_blank"
|
||||||
rel="noopener noreferrer"
|
rel="noopener noreferrer"
|
||||||
>
|
>
|
||||||
@@ -51,7 +51,7 @@ const Footer = () => {
|
|||||||
/>
|
/>
|
||||||
</a>
|
</a>
|
||||||
<a
|
<a
|
||||||
href="https://vk.com"
|
href="https://vk.com/club226251027"
|
||||||
target="_blank"
|
target="_blank"
|
||||||
rel="noopener noreferrer"
|
rel="noopener noreferrer"
|
||||||
>
|
>
|
||||||
@@ -61,7 +61,7 @@ const Footer = () => {
|
|||||||
/>
|
/>
|
||||||
</a>
|
</a>
|
||||||
<a
|
<a
|
||||||
href="https://facebook.com"
|
href="https://www.facebook.com/share/p/tckdLFiyXm9r2925/?mibextid=WC7FNe"
|
||||||
target="_blank"
|
target="_blank"
|
||||||
rel="noopener noreferrer"
|
rel="noopener noreferrer"
|
||||||
>
|
>
|
||||||
@@ -71,7 +71,7 @@ const Footer = () => {
|
|||||||
/>
|
/>
|
||||||
</a>
|
</a>
|
||||||
<a
|
<a
|
||||||
href="https://tiktok.com"
|
href="https://www.tiktok.com/@tripwithbonus?_t=8qHingfQWNq"
|
||||||
target="_blank"
|
target="_blank"
|
||||||
rel="noopener noreferrer"
|
rel="noopener noreferrer"
|
||||||
>
|
>
|
||||||
@@ -81,7 +81,7 @@ const Footer = () => {
|
|||||||
/>
|
/>
|
||||||
</a>
|
</a>
|
||||||
<a
|
<a
|
||||||
href="https://youtube.com"
|
href="https://youtube.com/@tripwb?si=oiNZrtiOqx6OePJv"
|
||||||
target="_blank"
|
target="_blank"
|
||||||
rel="noopener noreferrer"
|
rel="noopener noreferrer"
|
||||||
>
|
>
|
||||||
@@ -236,7 +236,7 @@ const Footer = () => {
|
|||||||
<div className="flex flex-col justify-between md:flex-row px-6 py-4 md:py-8 w-[95%] mx-auto text-center md:text-left">
|
<div className="flex flex-col justify-between md:flex-row px-6 py-4 md:py-8 w-[95%] mx-auto text-center md:text-left">
|
||||||
<div>Copyright © {new Date().getFullYear()}. Все права защищены.</div>
|
<div>Copyright © {new Date().getFullYear()}. Все права защищены.</div>
|
||||||
<div className="flex flex-col md:flex-row py-4 md:py-0 md:space-x-5 items-center md:items-start">
|
<div className="flex flex-col md:flex-row py-4 md:py-0 md:space-x-5 items-center md:items-start">
|
||||||
<Link href="/" className="hover:text-orange">
|
<Link href="/publichnaya-oferta" className="hover:text-orange">
|
||||||
Публичная оферта
|
Публичная оферта
|
||||||
</Link>
|
</Link>
|
||||||
<Link href="/" className="hover:text-orange">
|
<Link href="/" className="hover:text-orange">
|
||||||
|
|||||||
Reference in New Issue
Block a user