PHPackages                             solar-investments/support - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. solar-investments/support

ActiveLibrary

solar-investments/support
=========================

Support package for Solar Investments

v4.6.0(9mo ago)013.8k↓42.1%MITPHPPHP &gt;=8.2

Since Aug 13Pushed 9mo agoCompare

[ Source](https://github.com/Solar-Investments/support)[ Packagist](https://packagist.org/packages/solar-investments/support)[ RSS](/packages/solar-investments-support/feed)WikiDiscussions 4.x Synced 1mo ago

READMEChangelog (10)Dependencies (7)Versions (26)Used By (0)

Solar Investments Support
=========================

[](#solar-investments-support)

[![Packagist](https://camo.githubusercontent.com/1ad0aff3e90ff64ab1d9c6d25557ac53590f3cff40f320521471a968dbc1b9f0/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f736f6c61722d696e766573746d656e74732f737570706f7274)](https://packagist.org/packages/solar-investments/support)[![Tests](https://camo.githubusercontent.com/191124e37edc11b322b5b6e3856a63db8a377a2d865c75820cb71fb42001ce5d/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f616374696f6e732f776f726b666c6f772f7374617475732f536f6c61722d496e766573746d656e74732f737570706f72742f746573742e796d6c)](https://camo.githubusercontent.com/191124e37edc11b322b5b6e3856a63db8a377a2d865c75820cb71fb42001ce5d/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f616374696f6e732f776f726b666c6f772f7374617475732f536f6c61722d496e766573746d656e74732f737570706f72742f746573742e796d6c)[![Dependencies](https://camo.githubusercontent.com/880bf6f625ecdf8be67f9db947a4acae2af64b3d6fbc384e2fceef672ec966e7/68747470733a2f2f696d672e736869656c64732e696f2f6c6962726172696573696f2f6769746875622f536f6c61722d496e766573746d656e74732f737570706f7274)](https://camo.githubusercontent.com/880bf6f625ecdf8be67f9db947a4acae2af64b3d6fbc384e2fceef672ec966e7/68747470733a2f2f696d672e736869656c64732e696f2f6c6962726172696573696f2f6769746875622f536f6c61722d496e766573746d656e74732f737570706f7274)

Support package for Solar Investments projects.

---

- [Installation](#installation)
- [Middleware](#middleware)
    - [Enable Secure Pagination Links](#enable-secure-pagination-links)
    - [Force Root URL](#force-root-url)
    - [Hide From Robots On Origin](#hide-from-robots-on-origin)
    - [Lower Path Casing](#lower-path-casing)
    - [Redirect Consumer Validation Requests](#redirect-consumer-validation-requests)
    - [Remove Trailing Slash](#remove-trailing-slash)
    - [Require VPN](#require-vpn)
    - [Set Fastly Surrogate Key](#set-fastly-surrogate-key)
- [Service Providers](#service-providers)
    - [HelioServiceProvider](#helioserviceprovider)
- [URLs](#urls)
- [Testing Traits](#testing-traits)

---

Installation
------------

[](#installation)

```
composer require solar-investments/support
```

Middleware
----------

[](#middleware)

You can [register](https://laravel.com/docs/11.x/middleware#registering-middleware) any of the following middleware:

- `SolarInvestments\Middleware\EnableSecurePaginationLinks`
- `SolarInvestments\Middleware\ForceRootUrl`
- `SolarInvestments\Middleware\HideFromRobotsOnOrigin`
- `SolarInvestments\Middleware\LowerPathCasing`
- `SolarInvestments\Middleware\RedirectConsumerValidationRequests`
- `SolarInvestments\Middleware\RemoveTrailingSlash`
- `SolarInvestments\Middleware\RequireVpn`
- `SolarInvestments\Middleware\SetFastlySurrogateKey`

### Enable Secure Pagination Links

[](#enable-secure-pagination-links)

This middleware fixes an issue where the `next` and `prev` links in the pagination response are generated using `http` instead of `https`.

### Force Root URL

[](#force-root-url)

This middleware forces the root URL based on the incoming request.

For example, if the request is made from the origin server (`origin.example.com`), the middleware will adjust the application’s root URL accordingly.

It defaults to the `APP_URL` environment variable unless the request host differs, allowing URLs to dynamically adjust between public and origin URLs.

### Hide From Robots On Origin

[](#hide-from-robots-on-origin)

This middleware adds the `X-Robots-Tag` header to the response with the value `none` (same as `noindex, nofollow`) to prevent search engines from indexing the page. This is only done when the site is accessed directly on the origin server, e.g. `http://origin.example.com` instead of `http://www.example.com`.

### Lower Path Casing

[](#lower-path-casing)

> If [Statamic](https://statamic.dev) is installed, control panel paths are not converted to lowercase.

This middleware converts the path of the request to lowercase.

### Redirect Consumer Validation Requests

[](#redirect-consumer-validation-requests)

This middleware redirects requests for `/consumer-validation/v2/*` to a matching path on `www.fixr.com`.

Request URLRedirects To`/consumer-validation/v2/abc123?campaign=xyz``https://www.fixr.com/consumer-validation/v2/abc123?campaign=xyz`This is used in marketing emails to ensure that tracking links match the sender domain but ultimately redirect to a centralized validation handler.

### Remove Trailing Slash

[](#remove-trailing-slash)

This middleware removes the trailing slash from the path of the request.

### Require VPN

[](#require-vpn)

This middleware restricts access to the application to specific IP addresses. This is useful when you want to restrict access to the application to only users on a VPN (or anywhere really).

To use the `RequireVpn` middleware, publish the configuration file:

```
php artisan vendor:publish --tag=vpn-config
```

By default, this middleware is "disabled" and all IP addresses are allowed.

To restrict access from specific IP addresses, set the `VPN_IP_ADDRESSES` environment variable in your `.env` file, e.g.:

```
VPN_IP_ADDRESSES=192.168.1.192,10.0.0.1/8
```

Alternatively, you can specify the IP addresses in the `config/vpn.php` file.

### Set Fastly Surrogate Key

[](#set-fastly-surrogate-key)

This middleware adds the `Surrogate-Key` header to the response with the configured value, allowing you to purge the cache for specific pages.

To use the `SetFastlySurrogateKey` middleware, publish the configuration file:

```
php artisan vendor:publish --tag=fastly-config
```

Then, set the `surrogate_keys` in the `config/fastly.php` file, e.g.:

```
return [

    'surrogate_keys' => [

        [
            /*
             * The key to use for requests that match the specified paths.
             *
             * The default key will be prepended to this value.
             */
            'key' => 'meals',

            /*
             * List of paths that should use the specified key.
             *
             * A path is a match if it starts with any of the specified paths.
             *
             * Note: Paths are case-insensitive. The forward slash is optional.
             */
            'paths' => [
                'breakfast',
                'lunch',
                'dinner',
            ],
        ],

    ],

    // ...

];
```

Service Providers
-----------------

[](#service-providers)

### HelioServiceProvider

[](#helioserviceprovider)

This provider conditionally bootstraps Helio-specific configuration.

It listens for Laravel's internal bootstrap events and applies environment-aware configuration such as:

#### Logging

[](#logging)

Replaces the default log channel with a `stderr` Monolog driver using `GoogleCloudLoggingFormatter` and dynamic log levels (`debug` in non-production, `warning` in production).

#### Statamic

[](#statamic)

If Statamic is installed, it injects environment-aware `git` commit commands for Statamic's content publishing pipeline. This includes metadata like the current environment, project, and git user/email.

URLs
----

[](#urls)

When the application is **not** running locally, the `UrlServiceProvider` forces the `https` scheme for all URLs generated by Laravel.

Testing Traits
--------------

[](#testing-traits)

### SkipTestWhenRunningCI

[](#skiptestwhenrunningci)

This trait can be used to skip tests when running in a CI environment.

```
use SolarInvestments\Testing\SkipTestWhenRunningCI;

class ExampleTest extends TestCase
{
    use SkipTestWhenRunningCI;

    public function test_example()
    {
        // ...
    }
}
```

###  Health Score

42

—

FairBetter than 90% of packages

Maintenance57

Moderate activity, may be stable

Popularity26

Limited adoption so far

Community8

Small or concentrated contributor base

Maturity62

Established project with proven stability

 Bus Factor1

Top contributor holds 50% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~15 days

Recently: every ~2 days

Total

24

Last Release

284d ago

Major Versions

v1.4.0 → v2.0.02024-08-22

1.x-dev → v2.1.02024-09-25

2.x-dev → v3.0.02024-10-25

v3.2.2 → v4.0.02025-07-21

v3.3.0 → v4.2.02025-07-23

PHP version history (2 changes)v1.0.0PHP &gt;=8.3

v1.2.0PHP &gt;=8.2

### Community

Maintainers

![](https://www.gravatar.com/avatar/7a872f35a1c641cb1beceee342b7ce158c88f994843d27c90a7d41c69c61cca1?d=identicon)[fixr-kyle](/maintainers/fixr-kyle)

---

Top Contributors

[![fixr-kyle](https://avatars.githubusercontent.com/u/175430843?v=4)](https://github.com/fixr-kyle "fixr-kyle (56 commits)")[![fixr-kyle-admin](https://avatars.githubusercontent.com/u/270675064?v=4)](https://github.com/fixr-kyle-admin "fixr-kyle-admin (56 commits)")

###  Code Quality

Static AnalysisPHPStan

Code StyleLaravel Pint

### Embed Badge

![Health badge](/badges/solar-investments-support/health.svg)

```
[![Health](https://phpackages.com/badges/solar-investments-support/health.svg)](https://phpackages.com/packages/solar-investments-support)
```

###  Alternatives

[irazasyed/telegram-bot-sdk

The Unofficial Telegram Bot API PHP SDK

3.3k4.5M84](/packages/irazasyed-telegram-bot-sdk)[laravel/reverb

Laravel Reverb provides a real-time WebSocket communication backend for Laravel applications.

1.6k9.4M48](/packages/laravel-reverb)[stechstudio/laravel-zipstream

A fast and simple streaming zip file downloader for Laravel.

4633.7M3](/packages/stechstudio-laravel-zipstream)[mailerlite/laravel-elasticsearch

An easy way to use the official PHP ElasticSearch client in your Laravel applications.

934529.3k2](/packages/mailerlite-laravel-elasticsearch)[php-heroku-client/php-heroku-client

A PHP client for the Heroku Platform API

24404.8k4](/packages/php-heroku-client-php-heroku-client)[aedart/athenaeum

Athenaeum is a mono repository; a collection of various PHP packages

245.2k](/packages/aedart-athenaeum)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
