Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Flysystem Msgraph Laravel Package

shitware-ltd/flysystem-msgraph

A Flysystem v3 adapter for Microsoft Graph, letting Laravel and PHP apps read and write files on OneDrive and SharePoint through the same storage interface as local disks or S3, with Azure app credentials, configurable drive and folder roots, and support for common file operations.

Deep Wiki
Context7

Technical Evaluation

Architecture fit: This package is a Flysystem 3 adapter for Microsoft Graph, so its natural fit is Laravel’s Storage abstraction as a custom disk. That is attractive from a TPM perspective: product code can generally continue using Storage::disk(...), while SharePoint/OneDrive becomes the backing store. The large-file support via Graph upload sessions is the main differentiator versus a simplistic adapter, but SharePoint/OneDrive are not S3-compatible object stores. Teams expecting presigned URLs, object metadata, cheap high-QPS access, or simple bucket semantics will encounter semantic mismatch.

Integration feasibility: Moderate, contingent on proof of concept. A Laravel integration requires an Azure AD app registration, tenant consent, Graph permissions such as Files.ReadWrite.All or scoped site permissions, credential management, and resolution of site/drive IDs. The package metadata is thin: unknown repository, 19 stars, last release December 2023, score 0.525. That does not disqualify it, but it means feasibility must be proven in the target Laravel/PHP/Graph environment rather than assumed.

Technical risk: The primary risks are maintenance and supply-chain confidence, not the MIT license. Low adoption and an unknown repository increase the chance of undocumented behavior, limited test coverage, and slow fixes. Graph API and Microsoft identity platform changes can break auth or upload flows. Large-file upload sessions add operational edge cases: session expiry, chunk retries, throttling, partial uploads, and cleanup. Path mapping between Flysystem and SharePoint drive items, conflict handling, permissions inheritance, and deletion semantics need explicit validation. Graph throttling and tenant-level limits can make this unsuitable as a high-throughput primary blob store.

Key questions: Is the actual source repository available and auditable? Which Laravel, PHP, Flysystem, and Microsoft Graph SDK versions are supported? How does the adapter acquire and refresh tokens? Does it support site/drive resolution, shared drives, list/download/delete/rename, and metadata? What are the large-file threshold, chunk size, retry, and resume behaviors? How are 429 throttling and upload-session expiry handled? What Graph permissions are required, and can they be tenant-scoped? Is there test coverage, CI, and a maintainer commitment? What is the fallback if the package is abandoned: fork, internal adapter, or replacement?

Integration Approach

Stack fit: Treat the package as a storage adapter behind Laravel’s filesystem layer, not as a domain dependency. Configure it as a custom disk in filesystems.disks if the package provides a driver, or instantiate the Flysystem adapter with a Graph client if it does not. Keep application code behind Storage or a small internal file-service interface so the adapter can be replaced without rewriting product features. Store tenant, client, secret/certificate, site, and drive identifiers in environment/secret management, never in code.

Migration path: Start with a non-critical workload or a new feature rather than migrating primary document storage. Run a parallel pilot: upload/download/delete a representative file set, including files above the large-upload threshold, and compare checksums, path behavior, and permissions. If migrating from local/S3, use a backfill script and keep the old store read-only or dual-read until validation completes. Use a feature flag and rollback path. Do not make SharePoint the system of record until retention, permissions, and recovery behavior are confirmed with the Microsoft 365 tenant owners.

Compatibility: Confirm Flysystem 3 and the target Laravel version. Laravel 9+ uses Flysystem 3, but the package’s composer constraints and Graph SDK version still need verification against current PHP 8.2/8.3 and Laravel 10/11. Pin package and Graph SDK versions, and test auth library compatibility. Because the last release is from December 2023, run the proof of concept on the exact production runtime, not a generic PHP container.

Sequencing: First validate repository provenance, license, dependency tree, and security posture. Second, have the Azure/M365 admin create a least-privilege app registration and consent. Third, build a spike covering token refresh, small and large uploads, download, list, delete, throttling, and failure recovery. Fourth, wrap the adapter behind an internal interface and add observability. Fifth, integrate in staging with representative SharePoint site structure and permissions. Sixth, run load/error tests and a pilot with a limited user group. Seventh, promote to production with rollback, monitoring, and an owner for the adapter. If the spike fails, budget for a fork or a custom Graph adapter rather than forcing adoption.

Operational Impact

Maintenance: Expect to own more maintenance than a typical mature Laravel package. The low star count, unknown repository, and 2023 release date suggest limited community pressure to keep pace with Graph changes. Assign an internal owner, track Microsoft Graph and identity-platform deprecations, and budget for forking or vendoring if upstream stalls. MIT licensing reduces legal friction but does not create support capacity.

Support: There is no vendor SLA. Microsoft supports the Graph platform, not this adapter. Internal runbooks must cover Azure app registration, permission changes, secret/certificate rotation, site/drive ID changes, throttling responses, and upload-session cleanup. TPM should treat tenant-admin dependency as a first-class delivery dependency, not a developer-only setup task.

Scaling: This is best suited to document-oriented workloads, not high-throughput blob storage. Graph imposes throttling and SharePoint/OneDrive have quota, file-size, and upload-session constraints. High concurrency, many small files, or bulk migrations can trigger 429s and long tail latency. Use queues, bounded concurrency, exponential backoff, and idempotent retries. Validate tenant quotas and expected growth before committing.

Failure modes: Common failures include expired or misconfigured credentials, missing admin consent, revoked permissions, throttling, expired upload sessions, partial large-file uploads, path conflicts, moved/deleted sites or drives, and Graph API behavior changes. Package bugs may be difficult to diagnose without repository access. Design for idempotency, cleanup of orphaned upload sessions, checksum verification, and clear user-facing errors. Avoid storing secrets in logs or exposing Graph tokens to front-end clients.

Ramp-up: Laravel developers familiar with Storage can integrate the disk quickly, but SharePoint/Graph-specific knowledge is the real ramp-up: site vs drive IDs, permission models, upload sessions, throttling, and tenant administration. Plan for a short proof-of-concept, admin coordination, and an on-call runbook before production. TPM recommendation: proceed only as a gated pilot with a fork/replacement fallback; do not make it a strategic dependency without repository due diligence and demonstrated large-file reliability.

Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
coleus/frame
thtg88/journalism
filagora/filagora-ai-forums
rlacerda83/query-parser
socialdept/atp-orm
cboxdk/laravel-assistant-client
socialdept/atp-resolver
socialdept/tenant-domains
tautvydasr/blade-class-names
socialdept/color-scales
maherelgamil/controller
coleus/widgets
coleus/table
coleus/users
coleus/music
coleus/health
coleus/calendar
coleus/notes
coleus/support
coleus/settings