PHPackages                             smsh/ticketing-bridge - 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. [Authentication &amp; Authorization](/categories/authentication)
4. /
5. smsh/ticketing-bridge

ActiveSymfony-bundle[Authentication &amp; Authorization](/categories/authentication)

smsh/ticketing-bridge
=====================

SmartShanghai bridge for SolidSource ticketing external identity login.

1.0.0(2w ago)00proprietaryPHPPHP &gt;=8.4

Since May 21Pushed 6d agoCompare

[ Source](https://github.com/alexw27/smsh-ticketing-bridge)[ Packagist](https://packagist.org/packages/smsh/ticketing-bridge)[ RSS](/packages/smsh-ticketing-bridge/feed)WikiDiscussions main Synced 1w ago

READMEChangelogDependencies (6)Versions (2)Used By (0)

SmartShanghai Ticketing Bridge
==============================

[](#smartshanghai-ticketing-bridge)

Private Symfony bundle for plugging SmartShanghai into the SolidSource ticketing external identity system.

Package name:

```
"smsh/ticketing-bridge": "*"
```

What It Provides
----------------

[](#what-it-provides)

- Integration provider key: `smartshanghai`
- Admin integration provider: `SmartShanghai`
- External identity provider button for `/login` and `/register`
- Authentication handler for `/connect/smartshanghai/check`

Expected SmartShanghai Flow
---------------------------

[](#expected-smartshanghai-flow)

1. User clicks `Continue with SmartShanghai`.
2. The ticketing app redirects to the configured SmartShanghai `login_url`.
3. The bridge appends `callback_url=`.
4. SmartShanghai authenticates the user and redirects back with a short-lived RS256 JWT:

```
/connect/smartshanghai/check?jwt=

```

The callback also accepts `token=` or an `Authorization: Bearer ` header.

The JWT must be signed by SmartShanghai with its private key. Configure the matching public key in the ticketing app integration settings.

The JWT header must use:

```
{
  "alg": "RS256",
  "typ": "JWT"
}
```

The JWT payload should contain:

```
{
  "iss": "smartshanghai",
  "aud": "solidsource-ticketing",
  "sub": "123456",
  "iat": 1770000000,
  "exp": 1770000300,
  "jti": "one-time-token-id"
}
```

The external user id can be provided as either:

- `user_id`
- `sub`

The bridge verifies the signature, `iss`, `aud`, `exp`, and optional `nbf`, then calls the configured SmartShanghai API to verify that user.

Integration Settings
--------------------

[](#integration-settings)

Configure these under `System -> API / Integrations -> SmartShanghai`:

- `login_url`: SmartShanghai login URL.
- `api_base_url`: SmartShanghai API base URL.
- `api_token`: bearer token used by the ticketing app when calling SmartShanghai.
- `public_key`: SmartShanghai JWT public key in PEM format.
- `issuer`: expected JWT `iss`, defaults to `smartshanghai`.
- `audience`: expected JWT `aud`, defaults to `solidsource-ticketing`.
- `clock_tolerance_seconds`: allowed clock skew for `exp` / `nbf`, defaults to `60`.
- `verify_user_path`: optional path, defaults to `/ticketing/users/{user_id}`.

Verify User API Contract
------------------------

[](#verify-user-api-contract)

The bridge currently calls:

```
GET {api_base_url}{verify_user_path}?jwt=
Authorization: Bearer
X-Api-Key:

```

Example default URL:

```
GET https://www.smartshanghai.com/api2/ticketing/users/123?jwt=...

```

Expected successful response:

```
{
  "valid": true,
  "email": "user@example.com"
}
```

`email` is optional. The ticketing app can create a local user with only the linked external identity.

Any non-2xx response or `"valid": false` rejects login.

###  Health Score

41

—

FairBetter than 87% of packages

Maintenance98

Actively maintained with recent releases

Popularity0

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity51

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% 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

Unknown

Total

1

Last Release

19d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/d7aa033118a20fbbab7fd653b44c6c4c21997dcdff80f743e8c7d76804b1f620?d=identicon)[alexweng27](/maintainers/alexweng27)

---

Top Contributors

[![alexw27](https://avatars.githubusercontent.com/u/43231084?v=4)](https://github.com/alexw27 "alexw27 (2 commits)")

### Embed Badge

![Health badge](/badges/smsh-ticketing-bridge/health.svg)

```
[![Health](https://phpackages.com/badges/smsh-ticketing-bridge/health.svg)](https://phpackages.com/packages/smsh-ticketing-bridge)
```

###  Alternatives

[sulu/sulu

Core framework that implements the functionality of the Sulu content management system

1.3k1.4M195](/packages/sulu-sulu)[shopware/core

Shopware platform is the core for all Shopware ecommerce products.

585.4M506](/packages/shopware-core)[simplesamlphp/simplesamlphp

A PHP implementation of a SAML 2.0 service provider and identity provider.

1.1k12.8M209](/packages/simplesamlphp-simplesamlphp)[2lenet/crudit-bundle

The easy like Crud'it Bundle.

1715.6k12](/packages/2lenet-crudit-bundle)[contao/core-bundle

Contao Open Source CMS

1231.6M2.6k](/packages/contao-core-bundle)[web-auth/webauthn-framework

FIDO2/Webauthn library for PHP and Symfony Bundle.

51090.8k2](/packages/web-auth-webauthn-framework)

PHPackages © 2026

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