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

Datadog Orocrm Laravel Package

okvpn/datadog-orocrm

okvpn/datadog-orocrm provides Datadog monitoring integration for OroCRM applications. It adds configuration and instrumentation to forward application metrics, logs, and events to Datadog, so teams can track performance, errors, and usage in dashboards and alerts alongside their other services.

View on GitHub
Deep Wiki
Context7

Getting Started

  • Install the package with Composer and publish any shipped config/migrations (php artisan vendor:publish), then run migrations if artifacts are persisted.
  • Look here first: the package's routes/ file and its service provider. Release 0.2.1 adds a route that downloads an artifact without authorization — confirm exactly what URI it registers, what it binds (ID, UUID, token, filename), and which middleware stack it inherits.
  • Establish what "artifact" means in your app: a generated export, build output, report, or stored object. Identify the model/table and the filesystem disk behind it.
  • First use case: create one artifact through the normal authorized path, then request the new public download route with a plain unauthenticated HTTP client and confirm it returns the file you expect — and nothing else.

Implementation Patterns

  • Keep the authorized route as the default for dashboards and internal tooling. Reserve the unauthenticated route for hand-off scenarios: emailed links, webhook payloads, CI retrieval, and third-party consumers that cannot authenticate.
  • Do not expose sequential IDs on the public route. If the package offers a signed-URL or token helper, use it; otherwise wrap the route with Laravel's signed middleware in your own route definition.
  • If artifact identifiers are guessable, add a per-artifact opaque token column and resolve by token rather than primary key.
  • Scope the public route per environment. Prefer re-registering routes yourself (disable the package's route file via config or by not loading it) over editing vendor files.
  • For expiring links, generate with URL::temporarySignedRoute and set the lifetime deliberately per use case (minutes for CI, days for client downloads).
  • Log downloads: attach a small middleware (IP, artifact id, user agent, timestamp) or listen for a package download event if one is dispatched. Public, unauthenticated downloads are exactly what you want an audit trail for.
  • For private artifacts, stream through the controller (response()->download() / Storage::download()) rather than returning a public disk URL.

Gotchas and Tips

  • This release is security-sensitive by nature. An unauthenticated download route is only safe when the identifier is unguessable or the URL is signed. Verify with php artisan route:list --path=<segment> immediately after upgrading and inspect the middleware column.
  • Do not assume the route ships disabled. If there is no config flag gating it, it is live on upgrade. Decide explicitly whether you want it.
  • Public-disk artifacts bypass the route entirely — anyone with the storage URL skips whatever checks the route performs. Keep artifacts on a private disk and serve them through the controller.
  • Cached routes and config will hide the new route or its settings. Run php artisan route:clear and php artisan config:clear after upgrading, and redeploy if you cache routes in CI.
  • Test unauthenticated access with curl or a fresh HTTP client, not your logged-in browser — a session cookie can make an auth bug look like a pass.
  • Signed URLs expire and will 403; if a customer reports "link stopped working," check the signature lifetime before checking permissions.
  • If you override the route, preserve Content-Type and Content-Disposition headers or browser downloads will misbehave (wrong filename, inline rendering instead of download).
  • Watch for path traversal if the route accepts a filename parameter — validate against a known artifact record rather than joining user input onto a disk path.
  • Extension point: if the package dispatches an event or exposes a policy/guard hook around downloads, prefer hooking there over forking the controller; it keeps future upgrades cheap.
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.
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
coleus/apps
seampact/laravel
emmyconceptng/laravel-ng-postcode
jjsquady/round-robin