smsh / ticketing-bridge
SmartShanghai bridge for SolidSource ticketing external identity login.
Package info
github.com/alexw27/smsh-ticketing-bridge
Type:symfony-bundle
pkg:composer/smsh/ticketing-bridge
Requires
- php: >=8.4
- symfony/config: ^7.4 || ^8.0
- symfony/dependency-injection: ^7.4 || ^8.0
- symfony/framework-bundle: ^7.4 || ^8.0
- symfony/http-client-contracts: ^3.5
- symfony/routing: ^7.4 || ^8.0
- symfony/yaml: ^7.4 || ^8.0
This package is not auto-updated.
Last update: 2026-05-22 18:24:50 UTC
README
Private Symfony bundle for plugging SmartShanghai into the SolidSource ticketing external identity system.
Package name:
"smsh/ticketing-bridge": "*"
What It Provides
- Integration provider key:
smartshanghai - Admin integration provider:
SmartShanghai - External identity provider button for
/loginand/register - Authentication handler for
/connect/smartshanghai/check
Expected SmartShanghai Flow
- User clicks
Continue with SmartShanghai. - The ticketing app redirects to the configured SmartShanghai
login_url. - The bridge appends
callback_url=<absolute /connect/smartshanghai/check URL>. - SmartShanghai authenticates the user and redirects back with a JWT:
/connect/smartshanghai/check?jwt=<smartshanghai-jwt>
The callback also accepts token=<jwt> or an Authorization: Bearer <jwt> header.
The JWT payload should contain either:
user_idsub
The bridge then calls the configured SmartShanghai API to verify that user.
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.verify_user_path: optional path, defaults to/api/ticketing/users/{user_id}.
Verify User API Contract
The bridge currently calls:
GET {api_base_url}{verify_user_path}?jwt=<jwt>
Authorization: Bearer <api_token>
Example default URL:
GET https://www.smartshanghai.com/api/ticketing/users/123?jwt=...
Expected successful response:
{
"valid": true,
"email": "user@example.com"
}
email is optional, but the current ticketing app requires an email to create or link a user when no prior user_external_identity link exists.
Any non-2xx response or "valid": false rejects login.