Skip to content

LubsanGarmaev98/CloudStorage

Repository files navigation

Cloud Storage Api

Этот проект реализован с помощью: PHP 8.1, фреймворк Laravel, СУБД PostgreSQL, CRON.

Описание:

Это облачное хранилище файлов. Для начала необходимо зарегистрироваться и пройти аутентификацию, чтобы получить JWT токен. Пользователь имеет ограниченное хранилище в 100 Мб. При загрузке файлов используйте полученный токен. Файл можно загрузить, указать срок хранения, удалить. Создание новых директорий и загрузки в них файлов также поддерживается. Генерация уникальной публичной ссылки на файл/p>

Функционал сервиса:

    • Регистрация пользователя, аутентификация и выдача JWT токена

    • Возможность редактировать данные пользователя

    • Пользователь имеет объем диска в 100 Мб

    • Загружать файлы в облачное хранилище, редактировать наименование загруженного файла, а также удалять файл

    • Файл не должен превышать размер в 20 Мб, а также же не допускаются к загрузке файлы с форматом '.php'

    • Возможность просматривать список файлов, скачивать файлы

    • Получать размер всех файлов внутри определенной директории (папки)

    • Получить размер всех файлов на диске пользователя

    • Генерация уникальной публичной ссылки на файл

    • Реализована возможность при загрузке указывать срок хранения файла, после которого он сам удаляется

    • Создание и удаление папок, файлы можно создавать внутри директории

API:

    • POST /api/signup - Регистрация пользователя

    • POST /api/login - Аутентификация пользователя, выдается JWT токен

    • POST /api/logout - Выйти из системы

    • PUT /api/users - Редактирование пользователя

    • DELETE /api/users- Удаление пользователя

    • POST /api/files - Загрузка файла в облачное хранилище

    • PUT /api/files/{id} - Переименовать файл

    • DELETE /api/files/{id} - Удалить файл

    • GET /api/files/{id} - Скачать файл

    • POST /api/folders - Создание папки

    • GET /api/folders - Получить список папок

    • DELETE /api/folders/{id} - Удалить папку

    • GET /api/folders - Получить размер файлов внутри директории

    • GET /api/users/current-files-size - Получить размер всех файлов на диске пользователя

    • GET /api/files/{id}/public-link - Сгенерировать уникальную публичную ссылку

Инструкция по запросам:

  1. Зарегистрйтесь:
  • POST /api/signup
  1. Войдите в аккаунт, выдается JWT токен:
  • POST /api/login
  1. Загрузите файл в облачное хранилище, даллее во всех запросах Autorization(Baerer Token) вставьте JWT токен:
  • POST /api/files
  1. Получить файлы пользователя:
  • GET /api/files
  1. Скачать файл пользователя:
  • GET /api/files/{id}
  1. Создание папки:
  • POST /api/folders
  1. Загрузка файла в указанную директорию по id:
  • POST /api/files
  1. Получить размер файлов внутри директории:
  • GET /api/folders/{id}
  1. Получить размер всех файлов на диске пользователя:
  • GET /api/users/current-files-size
  1. Сгенерировать уникальную публичную ссылку на файл:
  • GET /api/files/{id}/public-link

Чтобы запустить проект, выполните следующие шаги:

  1. Создайте контейнеры:

sail build

  1. Запустите их:

sail up -d

  1. Проверьте созданные docker-контейнеры:

sail ps

  1. Зайдите в контейнер php-fpm:

sail bash

  1. Создайте таблицы:

sail artisan migrate

  1. Настройка файла Cron, необходимо добавить следующую команду

* * * * * cd /var/www/html && php artisan schedule:run >> /dev/null 2>&1

  1. Возможно понадобиться перезапустить крон:

service cron restart

  1. Далее можно пользоваться роутами.

  2. Готово 😊

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages