Backend Integration
Getting started is easy. The first step is installing the Frontegg SDK on your backend application.
npm i @frontegg/client
pip install frontegg
composer install frontegg/php-sdk
And copy the following code to your application's backend main entry point:
import { frontegg, FronteggPermissions } from '@frontegg/client'
...
...
...
app.use('/frontegg', frontegg({
clientId: 'YOUR-CLIENT-ID',
apiKey: 'YOUR_API_KEY',
contextResolver: async (req) => {
const userId = 'the-logged-in-user-id';
const tenantId = 'the-logged-in-tenant-id';
return {
userId,
tenantId,
permissions: FronteggPermissions.All,
}
}
}))
from flask import Flask
from frontegg import FronteggContext
from frontegg.flask import Frontegg
app = Flask('example')
app.config['FRONTEGG_CLIENT_ID'] = 'your client id'
app.config['FRONTEGG_API_KEY'] = 'your api key'
app.config['FRONTEGG_CONTEXT_RESOLVER'] = lambda request: FronteggContext('the-logged-in-user-id', 'the-logged-in-tenant-id')
frontegg = Frontegg(app)
<?php
require_once './vendor/autoload.php';
require_once './src/Frontegg/autoload.php';
...
$clientId = 'YOUR_CLIENT_ID';
$apikey = 'YOUR_API_KEY';
$config = [
'clientId' => $clientId,
'clientSecret' => $apikey,
'apiBaseUrl' => 'https://api.frontegg.com/',
'contextResolver' => function(RequestInterface $request) {
return [
'tenantId' => 'MY-TENANT-ID', // Should be extracted from the request context
'userId' => 'MY-USER-ID', // Should be extracted from the request context
'permissions' => [],
];
},
'disableCors' => false,
];
$frontegg = new Frontegg($config);
/**
* Setup routing rule for "/frontegg" URIs.
* Can be a part of middleware f.e. in Laravel.
*/
if (isset($_SERVER['REQUEST_URI']) && strpos($_SERVER['REQUEST_URI'], '/frontegg') === 0) {
$response = handleFronteggUri($request);
}
...
function handleFronteggUri(RequestInterface $request)
{
$response = $frontegg->forward($request);
return $response->getBody();
}
The Frontegg middleware shown above is provided by Frontegg and is a mandatory install. This code allows your product to maintain its current security and authentication methods, while integrating with Frontegg, without compromising on the identity of your tenants and users.
Updated 5 months ago