diff --git a/package-lock.json b/package-lock.json
index 5e29af6..6d47047 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -10,6 +10,7 @@
"dependencies": {
"@tailwindcss/postcss": "^4.1.17",
"@tanstack/react-query": "^5.90.11",
+ "@vkid/sdk": "^2.6.2",
"clsx": "^2.1.1",
"jose": "^6.1.2",
"next": "^16.0.7",
@@ -2542,6 +2543,15 @@
"win32"
]
},
+ "node_modules/@vkid/sdk": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/@vkid/sdk/-/sdk-2.6.2.tgz",
+ "integrity": "sha512-TCaGh6BvQNY8Atru0KJXdGuwm70y9WS2xBOLNripHjYMEcft0BMIiLKUvJ7pAeJOtk/15MvPaUIEmBS2Vt0NBg==",
+ "license": "MIT",
+ "dependencies": {
+ "crypto-js": "^4.1.1"
+ }
+ },
"node_modules/acorn": {
"version": "8.15.0",
"resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz",
@@ -3080,6 +3090,12 @@
"node": ">= 8"
}
},
+ "node_modules/crypto-js": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.2.0.tgz",
+ "integrity": "sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==",
+ "license": "MIT"
+ },
"node_modules/csstype": {
"version": "3.2.3",
"resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz",
diff --git a/package.json b/package.json
index d52f4d0..15747bf 100644
--- a/package.json
+++ b/package.json
@@ -11,6 +11,7 @@
"dependencies": {
"@tailwindcss/postcss": "^4.1.17",
"@tanstack/react-query": "^5.90.11",
+ "@vkid/sdk": "^2.6.2",
"clsx": "^2.1.1",
"jose": "^6.1.2",
"next": "^16.0.7",
diff --git a/src/app/lib/action.ts b/src/app/actions/action.ts
similarity index 91%
rename from src/app/lib/action.ts
rename to src/app/actions/action.ts
index 7541103..7bee890 100644
--- a/src/app/lib/action.ts
+++ b/src/app/actions/action.ts
@@ -1,6 +1,6 @@
'use server'
-import { getSessionData } from '@/app/lib/session';
-import { localDevelopmentUrl } from '@/app/lib/definitions';
+import { getSessionData } from '@/app/actions/session';
+import { localDevelopmentUrl } from '@/app/actions/definitions';
const API_BASE_URL = process.env.NODE_ENV === 'development'
? localDevelopmentUrl
diff --git a/src/app/actions/auth.ts b/src/app/actions/auth.ts
index 83d2fd7..221ae8b 100644
--- a/src/app/actions/auth.ts
+++ b/src/app/actions/auth.ts
@@ -1,7 +1,7 @@
'use server'
-import { SignupFormSchema, loginFormSchema, localDevelopmentUrl } from '@/app/lib/definitions';
-import { createSession, deleteSession, getSessionData } from '@/app/lib/session';
+import { SignupFormSchema, loginFormSchema, localDevelopmentUrl } from '@/app/actions/definitions';
+import { createSession, deleteSession, getSessionData } from '@/app/actions/session';
import { redirect } from 'next/navigation';
const API_BASE_URL = process.env.NODE_ENV === 'development'
diff --git a/src/app/lib/definitions.ts b/src/app/actions/definitions.ts
similarity index 81%
rename from src/app/lib/definitions.ts
rename to src/app/actions/definitions.ts
index 8c39fa0..885da0f 100644
--- a/src/app/lib/definitions.ts
+++ b/src/app/actions/definitions.ts
@@ -25,18 +25,22 @@ export const SignupFormSchema = z
email: z.email({ error: 'Пожалуйста, введите правильный адрес электронной почты.' }).trim(),
phone: z
.string()
- .min(12, { error: 'Пожалуйста, введите телефонный номер' }),
+ .min(12, { error: 'Пожалуйста, введите телефонный номер.' }),
password: z
.string()
.min(8, { error: 'Длина пароля должна быть не менее 8 символов.' })
.regex(/[a-zA-Z]/, { error: 'Пароль должен содержать как минимум 1 букву.' })
.regex(/[0-9]/, { error: 'Пароль должен содержать как минимум 1 цифру.' })
+ .refine((value) => !/[а-яёА-ЯЁ]/.test(value),
+ {
+ message: 'Пароль не должен содержать кириллицу.'
+ })
.trim(),
confirm_password: z
.string(),
agree: z
.string()
- .min(2, { error: 'Вы должны ознакомиться с условиями использования и политикой конфиденциальности' })
+ .min(2, { error: 'Пожалуйста, ознакомьтесь с условиями использования и политикой конфиденциальности.' })
})
.refine((data) => data.password === data.confirm_password, {
message: 'Повторите пароль',
diff --git a/src/app/lib/session.ts b/src/app/actions/session.ts
similarity index 100%
rename from src/app/lib/session.ts
rename to src/app/actions/session.ts
diff --git a/src/app/lib/sessions.ts b/src/app/actions/sessions.ts
similarity index 90%
rename from src/app/lib/sessions.ts
rename to src/app/actions/sessions.ts
index 5d374b0..aabab90 100644
--- a/src/app/lib/sessions.ts
+++ b/src/app/actions/sessions.ts
@@ -1,6 +1,6 @@
import 'server-only'
import { cookies } from 'next/headers'
-import { decrypt } from '@/app/lib/session'
+import { decrypt } from '@/app/actions/session'
export async function updateSession() {
const session = (await cookies()).get('session')?.value
diff --git a/src/app/pages/layout.tsx b/src/app/pages/layout.tsx
index 2d911f5..b9830f5 100644
--- a/src/app/pages/layout.tsx
+++ b/src/app/pages/layout.tsx
@@ -1,9 +1,9 @@
import NavLinks from '@/app/ui/nav-links'
-import styles from '@/app/page.module.scss'
+import styles from '@/app/styles/page.module.scss'
import HeaderPanel from '../ui/header/headerPanel';
import { getQueryClient } from '@/app/providers/getQueryClient';
import { HydrationBoundary, dehydrate } from '@tanstack/react-query';
-import { getUserData } from '@/app/lib/action';
+import { getUserData } from '@/app/actions/action';
export default async function Layout({ children }: { children: React.ReactNode }) {
const queryClient = getQueryClient();
@@ -19,7 +19,7 @@ export default async function Layout({ children }: { children: React.ReactNode }
-
+
{children}
diff --git a/src/app/pages/marking-audio/page.tsx b/src/app/pages/marking-audio/page.tsx
new file mode 100644
index 0000000..7ffa2a9
--- /dev/null
+++ b/src/app/pages/marking-audio/page.tsx
@@ -0,0 +1,14 @@
+import ProtectedFilesTable from '@/app/ui/marking-page/protected-files-table';
+import ProtectionSummary from '@/app/ui/marking-page/protection-summary';
+import TestSection from '@/app/ui/marking-page/test-section';
+
+export default function Page() {
+ return (
+
+
Защита аудио
+
+
+
+
+ )
+}
\ No newline at end of file
diff --git a/src/app/pages/marking-photo/page.tsx b/src/app/pages/marking-photo/page.tsx
index 9d10b86..ad4a0d0 100644
--- a/src/app/pages/marking-photo/page.tsx
+++ b/src/app/pages/marking-photo/page.tsx
@@ -1,14 +1,14 @@
import ProtectedFilesTable from '@/app/ui/marking-page/protected-files-table';
import ProtectionSummary from '@/app/ui/marking-page/protection-summary';
import TestSection from '@/app/ui/marking-page/test-section';
-import UploadSection from '@/app/ui/marking-page/upload-section';
+import UploadSectionImage from '@/app/ui/marking-page/upload-section-image';
export default function Page() {
return (
-
🛡️ Защита изображений
+
Защита изображений
-
+
diff --git a/src/app/pages/marking-video/page.tsx b/src/app/pages/marking-video/page.tsx
new file mode 100644
index 0000000..e8bf7be
--- /dev/null
+++ b/src/app/pages/marking-video/page.tsx
@@ -0,0 +1,14 @@
+import ProtectedFilesTable from '@/app/ui/marking-page/protected-files-table';
+import ProtectionSummary from '@/app/ui/marking-page/protection-summary';
+import TestSection from '@/app/ui/marking-page/test-section';
+
+export default function Page() {
+ return (
+