Действия при развертывании проекта:
- Импортировать базу данных
- Создать файлы конфигурации
- Настроить Apache
Импорт базы данных производится с помощью команды
mysql -u username -p [Имя базы данных] < "./project_files/database_dump.sql"
Файлы конфигурации с паролями для SMTP и MySQL исключены из репозитория git.
Поэтому необходимо создать свою конфигурацию в папке ./src/Config/Secret/
.
Пример конфигурации можно найти в папке ./src/Config/SecretExample/
.
Конфигурационный файл вашего виртуального сервера должен выглядеть
примерно так (используется каталог по умолчанию — /var/www/html
):
<VirtualHost *:80>
DocumentRoot /var/www/html
ServerName cloud-storage.local
ServerAlias www.cloud-storage.local
ErrorLog "/var/log/apache2/cloud-storage.local-error.log"
CustomLog "/var/log/apache2/cloud-storage.local-access.log"
common
<Directory /var/www/html/>
Options +Indexes +Includes +FollowSymLinks +MultiViews
AllowOverride All
Require all granted
<IfModule mod_rewrite.c>
Options -MultiViews
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /index.php [QSA,L]
</IfModule>
</Directory>
</VirtualHost>
Убедитесь, что активирован apache_mod_rewrite
.
dob
, gender
могут быть null
. lastName
может быть пустой строкой.
gender
принимает значения "M" и "F"
parentId
в значении null
принимается как корневая директория.
GET: /users/list
- Получить список пользователей с безопасной информацией
GET: /users/get/{userId}
- Получить безопасную информацию конкретного
пользователя.
GET: /users/search/{email}
- Поиск пользователей по email.
Возвращают:
{
"id": 18,
"firstName": "Nick",
"lastName": "last_name",
"email": "[email protected]",
"dob": {
"date": "1997-06-25 00:00:00.000000",
"timezone_type": 3,
"timezone": "UTC"
},
"gender": "M"
}
PUT: /users/update
- Изменить информацию пользователя текущей сессии.
Принимает:
{
"firstName": "Nikolay",
"lastName": "",
"dob": "1997-06-25",
"gender": "M"
}
POST: /users/login
- Войти в аккаунт.
Принимает:
{
"email": "[email protected]",
"password": "password"
}
GET: /users/[email protected]
- Отправить токен
сброса пароля на почту.
Принимает: Query параметр email
POST: /users/reset_password
- Сбросить пароль.
Принимает:
{
"email": "[email protected]",
"password": "password",
"token": "P+axG5k9gStneqbLmH9K4e3u8DIv0Bdh6iPUDu4zFbxuyd7GjuUBWXPc/x8eTgb+Mh75WuTF41jlu5Qh"
}
POST: /users/register
- Зарегистрироваться.
Принимает:
{
"firstName": "Ivan",
"lastName": "",
"email":"[email protected]",
"password": "password",
"dob": "",
"gender": "M"
}
POST: /users/verify_email
- Подтвердить email.
Принимает:
{
"email": "[email protected]",
"token": "inuRtdsDIaACMkvca4z32ONxKL9QZ74jBiGaFwwgb0fMvcNdiK8+iWUUn1cMIbbPAOrprZyN8IfUU8Yx"
}
GET: /admin/list
- Получить список пользователей с полной информацией.
GET: /admin/get/{userId}
- Получить полную информацию конкретного
пользователя.
Возвращают:
{
"id": 13,
"firstName": "Nikolay",
"lastName": "last_name",
"email": "[email protected]",
"isAdmin": true,
"dob": {
"date": "1997-06-25 00:00:00.000000",
"timezone_type": 3,
"timezone": "UTC"
},
"gender": "M",
"isEmailVerified": true
}
PUT: /admin/update/{userId}
- Изменить данные пользователя.
Принимает:
{
"firstName": "Nikolay",
"lastName": "",
"email": "[email protected]",
"isAdmin": true,
"dob": "1997-06-25",
"gender": "M"
}
DELETE: /admin/delete/{userId}
- Удалить пользователя.
POST: /directories/add
- Добавить папку.
Принимает:
{
"name": "test",
"parentId": null
}
PUT: /directories/rename/{directoryId}
- Переименовать папку.
Принимает:
{
"name": "memphis unlimited"
}
GET: /directories/get
- Получить информацию о корневой папке.
GET: /directories/get/{directoryId}
- Получить информацию о конкретной
папке.
Возвращают:
{
"properties": {
"id": 41,
"name": "Directory name",
"userId": 13,
"parentId": null
},
"folders": [
{
"id": 46,
"name": "test",
"userId": 13,
"parentId": 41
}
],
"files": [
{
"id": 71,
"name": "night_city.jpg",
"userId": 13,
"folderId": 41,
"createdAt": {
"date": "2023-11-29 18:02:42.000000",
"timezone_type": 3,
"timezone": "UTC"
},
"updatedAt": {
"date": "2023-11-29 18:02:42.000000",
"timezone_type": 3,
"timezone": "UTC"
}
}
]
}
DELETE: /directories/delete/{directoryId}
- Удалить папку.
GET: /files/list
- Получить список файлов.
GET: /files/list-shared
- Получить список файлов других пользователей
к которым предоставлен доступ.
GET: /files/get/{fileId}
- Получить информацию о файле.
Возвращают:
{
"id": 71,
"name": "night_city.jpg",
"userId": 13,
"folderId": 41,
"createdAt": {
"date": "2023-11-29 18:02:42.000000",
"timezone_type": 3,
"timezone": "UTC"
},
"updatedAt": {
"date": "2023-11-29 18:02:42.000000",
"timezone_type": 3,
"timezone": "UTC"
}
}
GET: /files/download/{fileId}
- Скачать файл.
Возвращает файл.
POST: /files/add
- Добавить файл.
Принимает:
Два POST параметра folderId
и file
PUT: /files/rename/{fileId}
- Переименовать файл.
Принимает:
{
"name": "New name"
}
DELETE: /files/remove/{fileId}
- Удалить файл.
GET: /files/share/{fileId}
- Получить список пользователей которым
предоставлен доступ к файлу.
Возвращает:
[
{
"id": 15,
"userId": 17,
"fileId": 71
}
]
PUT: /files/share/{fileId}/{userId}
- Поделиться файлом.
DELETE: /files/share/{fileId}/{userId}
- Отменить доступ к файлу.
Файл с командами Postman для тестирования находится в папке
./project_files/
.
В файле конфига ./src/Config/config.env
можно поменять настройки
обработки внутренних ошибок сервера.
При DEV=true
сообщения исключений выводятся в теле ответа.
При DEBUG=true
исключения не выкидываются и выводятся в теле сообщения.
Также в конфиге можно поменять максимальный размер файла и доступный размер хранилища пользователя.