- Python 3.10+
- PostgreSQL
- DBeaver (опционально)
- Создать БД PostgreSQL:
my_cloud - Настроить подключение в
config/settings.py(DATABASES) - Устанвить зависимости:
pip install django psycopg[binary]
- Создать и рименить миграции:
python manage.py makemigrationspython manage.py migrate
- Запуск сервера:
python manage.py runserver
Файлы загружаются в папку storage_data/ по .env.
Каждому пользователю автоматически создаётся собственная директория (на основе username + UUID).
Проверятся активная сессия.
Для POST/PATCH/DELETE требуется CSRF-токен
(cookie csrftoken, заголовок X-CSRFToken).
GET /api/auth/csrf/
Печёт cookie csrftoken для POST/PATCH/DELETE.
POST /api/files/upload/
Формат: multipart/form-data
Поля:
file— файлcomment— строка (опционально) Ответ: JSON с информацией о файле.
Доступ к чужим файлам через параметр user_id зависит от уровня:
admin → файлы usersenior_admin → файлы user и adminsuperuser → любые файлыGET/api/files/[?<user_id>]
Ответ: JSON-массив файлов пользователя.
Доступ к чужим файлам аналогично получению списка.
DELETE /api/files/<id>/
Файл удаляется:
- из файлового хранилища
- из базы данных Ответ: JSON { detail: "File deleted" }.
Доступ к чужим файлам аналогично получению списка.
PATCH /api/files/<id>/rename/
Формат: application/json
Ответ: JSON { id: 3, original_name: "new_name.txt" }
GET /api/files/<id>/download/
Доступ к чужим файлам аналогично получению списка.
Включить:
Доступ к чужим файлам аналогично получению списка.
POST /api/files/<id>/share/
Т.к. это действие по смыслу, а не просто UPDSTE
Выключить:
Доступ к чужим файлам аналогично получению списка.
POST /api/files/<id>/share/disable/
Т.к. это действие по смыслу, а не просто UPDSTE
Скачать по спецссылке:
Активная сессия НЕ проверяется.
GET /share/<uuid>/
Доступ к чужим файлам аналогично получению списка.
PATCH /api/files/<id>/comment/
Формат: application/json
Ответ: JSON { "comment": "New comment" }
Для удаления комментария:
{ "comment": null } | { "comment": "" }
POST /api/auth/register/
Формат: application/json
Поля:
username— строка (4..20, латиница/цифры, первый символ — буква)full_name— строкаemail— строка (формат email, не уникален)password— строка (>=6, 1 заглавная, 1 цифра, 1 спецсимвол) При регистрации автоматически генерируется относительный путь для папки пользователя и она создается в хранилище на диске.
Ответ: JSON с данными пользователя.
Ошибки: 400 JSON сerrorsс раскладкой по полям.
POST /api/auth/login/
Создаёт серверную сессию пользователя.
Тело запроса: { "username": "user0001", "password": "Pass#1" }
Ответ:
{ "detail": "Login successful", "user": { "id": 2, "username": "user0001", "full_name": "Test User", "email": "[email protected]", "is_admin": false, "is_superuser": false, "is_staff": false, "level": "user", "rank": 3 } }
GET /api/auth/logout/
Завершает текущую сессию.
Ответ: { "detail": "Logout successful" }
Проверятся активная сессия.
Для POST/PATCH/DELETE требуется CSRF-токен
(cookie csrftoken, заголовок X-CSRFToken).
GET /api/auth/csrf/
Печёт cookie csrftoken для POST/PATCH/DELETE.
GET /api/admin/users/
Доступ:
admin → видит user (+ себя)senior_admin → видит user + admin (+ себя)superuser → видит всехОтвет: JSON-массив пользователей, включаетlevelиrank.
DELETE /api/admin/users/<id>/
Доступ по иерархии ролей (user → 403).
Опционально: удалить файлы и папку пользователя — ?delete_files=1
Ответ: JSON { detail: "User deleted", files_deleted: true|false }
Запрет на удаление последнего superuser.
PATCH /api/admin/users/<id>/level/
Формат: application/json
Тело запроса:
{ "level": "user" | "admin" | "senior_admin" | "superuser" }
Права:
- senior_admin → user, admin
- superuser → все
Поднимать до / опускать со своего уровня имеет право только superuser.
Запрет на изменение роли последнего superuser.
- Django project
- PostgreSQL DB connection
- apps: users, storage
- AbstractUser
- Storage of File's set (STORAGE_ROOT)
- File upload API
- File list API
- File delete API
- Add CSRF-auth
- File rename API
- Share link API
- Download with auth API
- File comment API
- Storage REST API
- User registration API with validation
- Users/Auth REST API
- Add admin users list API
- Admin users level API
- Admin users delete API
- Admin Users Management API
- Users/Auth logout API