Данный проект представляет собой систему облачного хранения, реализованную на PHP. Система позволяет пользователям загружать, скачивать и управлять своими файлами посредством REST API.
- Аутентификация пользователей — вход в систему и управление сеансами.
- Загрузка и скачивание файлов — быстрая и надёжная передача данных.
- Управление файлами, папками и пользователями — операции переименования, удаления и другие.
- Безопасное хранение данных — защита личной информации пользователей.
- Восстановление пароля — отправка инструкции для восстановления доступа на электронную почту.
- Клонирование репозитория:
git clone https://github.com/kemrash/cloud_storage.git
- Переход в каталог проекта:
cd cloud_storage - Установка зависимостей:
composer install
- Настройка веб-сервера:
Настройте ваш веб-сервер (например, XAMPP) для обслуживания каталога проекта. - Настройка базы данных и SMTP-сервера: Вы можете задать параметры базы данных, SMTP-сервера и учетные данные администратора двумя способами:
- Через веб-интерфейс: Перейдите на главную страницу проекта, откройте раздел "Установка" и заполните форму с актуальными параметрами.
- Через API:
Отправьте HTTP
POST-запрос на эндпоинт:POST /install
GET /users/list– Получить список пользователей с общедоступными данными.GET /users/get/{id}– Получить информацию о конкретном пользователе.PUT /users/update– Обновить данные пользователя.POST /users/login– Авторизовать пользователя.GET /users/logout– Завершить сеанс пользователя.GET /users/reset_password– Инициировать процедуру сброса пароля с отправкой email-сообщения со ссылкой на страницу восстановления (в ссылке передаются ID и токен).PATCH /users/reset_password– Сбросить пароль. При переходе по ссылке из письма (в целях демонстрации на эндпоинт api, а в итоге страницу сброса пароля) в теле запроса указывается новый пароль.GET /users/search/{email}– Поиск пользователя по email.GET /admin/users/list– Получить список пользователей (для администратора).POST /admin/users/create– Создать нового пользователя (администратор).GET /admin/users/get/{id}– Получить информацию о конкретном пользователе (администратор).DELETE /admin/users/delete/{id}– Удалить пользователя (администратор).PUT /admin/users/update/{id}– Обновить данные пользователя (администратор).GET /files/list– Получить список файлов.GET /files/get/{id}– Получить информацию о файле.POST /files/add– Добавить новый файл в указанную директорию. Файлы загружаются по чанкам с использованием Flow.js на стороне клиента.PATCH /files/rename– Переименовать файл.DELETE /files/remove/{id}– Удалить файл.GET /files/share/{id}– Получить список пользователей, с которыми файл расшарен.PUT /files/share/{id}/{user_id}– Добавить пользователя в список доступа к файлу.DELETE /files/share/{id}/{user_id}– Удалить пользователя из списка доступа к файлу.GET /files/download– Скачать файл.GET /directories/list– Получить список директорий.POST /directories/add– Добавить новую директорию.PATCH /directories/rename– Переименовать директорию.GET /directories/get/{id}– Получить информацию о директории.DELETE /directories/delete/{id}– Удалить директорию.GET /– Получить главную страницу.POST /install– Установить систему.
Ниже приведены примеры запросов, извлечённые из коллекции Postman:
curl -X GET "http://localhost/users/list"curl -X GET "http://localhost/users/get/1"curl -X POST "http://localhost/users/login" \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "email=example@mail.ru&password=12345"curl -X PUT "http://localhost/users/update" \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "id=1&email=example@mail.ru&password=13&role=admin&age=25&gender=male"curl -X GET "http://localhost/users/logout"curl -X GET "http://localhost/users/search/example@mail.ru"curl -G "http://localhost/users/reset_password" \
--data-urlencode "email=example@mail.ru"curl -X PATCH "http://localhost/users/reset_password?id=1&token=33a5cb46c1d5fea3722ab83649df52dce1a6092b18ef26ab3a26bbce5885bf1d" \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "password=123"curl -X GET "http://localhost/admin/users/list"curl -X POST "http://localhost/admin/users/create" \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "email=1@2.ru&password=12&role=user"curl -X GET "http://localhost/admin/users/get/2"curl -X PUT "http://localhost/admin/users/update/2" \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "email=1@3.ru&password=13&role=admin"curl -X DELETE "http://localhost/admin/users/delete/2"curl -X GET "http://localhost/files/list"curl -X GET "http://localhost/files/get/2"curl -X POST "http://localhost/files/add" \
-F "flowChunkNumber=1" \
-F "flowChunkSize=1048576" \
-F "flowCurrentChunkSize=1048576" \
-F "flowTotalSize=3145728" \
-F "flowIdentifier=examplefile-1587390012" \
-F "flowFilename=example.txt" \
-F "flowRelativePath=example.txt" \
-F "flowTotalChunks=3" \
-F "folderId=2" \
-F "file=@/path/to/your/chunk1"
curl -X PATCH "http://localhost/files/rename" \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "id=3&fileName=test rename.webp"curl -X DELETE "http://localhost/files/remove/1"curl -X GET "http://localhost/files/share/2"curl -X PUT "http://localhost/files/share/2/1"curl -X DELETE "http://localhost/files/share/2/1"curl -X GET "http://localhost/files/download?file=67af1498534ac3.06494234_7d07372b-ca4b-4bc9-b9fa-a93b8651a24f"curl -X GET "http://localhost/directories/list"curl -X POST "http://localhost/directories/add" \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "parentId=2&name=new folder"curl -X PATCH "http://localhost/directories/rename" \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "id=4&name=test rename"curl -X GET "http://localhost/directories/get/2"curl -X DELETE "http://localhost/directories/delete/3"curl -X POST "http://localhost/install" \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "dbHost=localhost&dbName=cloud_storage&dbUser=root&dbPassword=&smtpHost=mail.host.ru&smtpPort=465&smtpUser=example@mail.ru&smtpPassword=&smtpFrom=example@mail.ru&adminUser=example@mail.ru&adminPassword=12345"Так же пример запросов в качестве коллекции для Postman. По пути Templates/files/cloud_storage.postman_collection.json
Проект запускается в среде XAMPP + PHP 7.4 и выше + MySQL 5.7 и выше
