Skip to content

Enhancement: Enable Local / AWS S3 Storage Selection via Admin UI (S3 Code Already Exists but Commented) #1

Description

@TadreebLMS

Current Behavior

  • The project already contains AWS S3 integration code, but it is currently commented in the codebase.
  • Storage configuration is controlled only via .env:
    FILESYSTEM_DISK=local or s3
  • Admins must manually edit .env and code to enable S3.
  • No UI exists to manage storage provider selection.

Problem

  • S3 functionality exists but is not usable from the system.
  • Requires developer/server access to enable S3.
  • Not scalable or user-friendly for administrators.
  • Risk of errors when uncommenting code or editing .env.

Steps to reproduce :
Open the application: http://test.tadreeblms.com/
Login using admin credentials:
Username: testadmin@tadreeblms.com
Password: 123456

Proposed Enhancement

1) Activate S3 Support in Codebase

  • Refactor existing commented S3 code into configurable logic.
  • Ensure both Local and S3 storage drivers are supported dynamically.

2) Add Storage Settings UI in Admin Panel

Menu Path:
Settings -> Storage Settings

3) Storage Provider Selection

[Storage Type Dropdown]

  • Local Storage
  • AWS S3 Storage

4) Configuration Fields

If Local Storage selected:

  • FILESYSTEM_DISK=local

If AWS S3 selected:

  • FILESYSTEM_DISK=s3

AWS_ACCESS_KEY_ID=
AWS_SECRET_ACCESS_KEY=
AWS_DEFAULT_REGION=
AWS_BUCKET=
AWS_URL=
AWS_ENDPOINT=
AWS_ROOT=

5) Functional Requirements

[Save Storage Settings]

  • Update values in .env file.
  • Enable or disable S3 logic dynamically (no commented code).
  • Clear and reload configuration cache:
    • php artisan config:clear
    • php artisan config:cache
  • Validate required fields based on selected storage type.

[Test Storage Connection]

  • Input: "Test Connection" button
  • For S3:
    • Validate AWS credentials and bucket access.
    • Show success or error message.
  • For Local:
    • Validate write permissions in local storage.

6) File Handling Logic

  • New uploads should use the selected storage provider.
  • Existing files should remain accessible.
  • Storage disk should be resolved dynamically from configuration.

7) Security Requirements

  • Only Admin users can access Storage Settings.
  • Mask AWS Secret Key in UI.
  • Prevent exposing credentials in frontend or logs.

8) UX / UI Requirements

  • Clean layout with sections:
    • Storage Provider Selection
    • Configuration Details
    • Test Connection
  • Show warnings when switching storage providers.

Expected Outcome

  • S3 integration becomes configurable instead of commented code.
  • Admins can switch between Local and S3 without code changes.
  • Cleaner architecture and enterprise-ready storage management.

Priority

High

Future Enhancements (Optional)

  • File migration tool (Local ↔ S3).
  • Support multiple storage profiles.
  • Support additional providers (Azure, GCP).
  • Storage usage monitoring dashboard.

Metadata

Metadata

Assignees

Labels

enhancementNew feature or request

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions