Quick Start
1. Request OAuth Credentials
Contact us to get your OAuth client credentials:
Request CredentialsInclude your website URL, platform (WordPress, Laravel, etc.), and redirect URI.
2. Configure OAuth Endpoints
| Setting | Value |
|---|---|
| Authorization URL | https://ummahpass.io/oauth/authorize |
| Token URL | https://ummahpass.io/oauth/token |
| User Info URL | https://ummahpass.io/api/user |
| Scopes | profile points membership |
3. Add Login Button
Add a "Login with UmmahPass" button to your login page:
OAuth 2.0 Flow
Redirect to UmmahPass
Send user to authorization URL with your client_id and redirect_uri
User Authorizes
User logs in (or is already logged in) and authorizes your app
Receive Auth Code
User is redirected back to your site with an authorization code
Exchange for Token
Your server exchanges the code for an access token
Fetch User Data
Use the access token to get user information from /api/user
User Data Response
When you call GET /api/user with a valid access token, you'll receive:
{
"id": 123,
"name": "Ahmed Hassan",
"email": "ahmed@example.com",
"is_pro": true,
"is_verified_muslim": true,
"points_balance": 5000,
"points_multiplier": 1.0,
"referral_code": "AHMED123",
"created_at": "2025-01-01T00:00:00.000000Z"
}
Field Descriptions
| Field | Type | Description |
|---|---|---|
| id | integer | Unique UmmahPass user ID |
| name | string | User's display name |
| string | User's email address | |
| is_pro | boolean | Pro membership status |
| is_verified_muslim | boolean | Verified Muslim status |
| points_balance | integer | Current UmmahPoints balance |
| points_multiplier | float | Points earning rate (0.5 or 1.0) |
| referral_code | string | User's referral code |
Platform Integration Guides
WordPress
Use the miniOrange OAuth plugin for easy integration.
- Install "OAuth Single Sign On" by miniOrange
- Add UmmahPass as a custom OAuth provider
- Enter the OAuth endpoints and credentials
- Map user fields (email, name)
Laravel
Use Laravel Socialite with a custom provider.
- Install socialiteproviders/manager
- Create custom UmmahPass provider
- Add credentials to config/services.php
- Handle callback and create users
PHP (Generic)
Use league/oauth2-client for any PHP project.
- Install league/oauth2-client via Composer
- Create GenericProvider with UmmahPass URLs
- Handle authorization and token exchange
- Fetch and store user data
Node.js
Use Passport.js with OAuth2 strategy.
- Install passport-oauth2
- Configure strategy with UmmahPass URLs
- Handle callback and session
- Store user in database
Code Examples
Laravel Controller Example
<?php
namespace App\Http\Controllers\Auth;
use Illuminate\Support\Facades\Http;
use App\Models\User;
class UmmahPassController
{
public function redirect()
{
$query = http_build_query([
'client_id' => config('services.ummahpass.client_id'),
'redirect_uri' => config('services.ummahpass.redirect'),
'response_type' => 'code',
'scope' => 'profile points membership',
'state' => csrf_token(),
]);
return redirect('https://ummahpass.io/oauth/authorize?' . $query);
}
public function callback(Request $request)
{
// Exchange code for token
$response = Http::post('https://ummahpass.io/oauth/token', [
'grant_type' => 'authorization_code',
'client_id' => config('services.ummahpass.client_id'),
'client_secret' => config('services.ummahpass.client_secret'),
'redirect_uri' => config('services.ummahpass.redirect'),
'code' => $request->code,
]);
$token = $response->json('access_token');
// Fetch user data
$userData = Http::withToken($token)
->get('https://ummahpass.io/api/user')
->json();
// Find or create user
$user = User::updateOrCreate(
['email' => $userData['email']],
[
'name' => $userData['name'],
'ummahpass_id' => $userData['id'],
]
);
auth()->login($user);
return redirect('/dashboard');
}
}
PHP (Generic) Example
<?php
require 'vendor/autoload.php';
$provider = new League\OAuth2\Client\Provider\GenericProvider([
'clientId' => 'YOUR_CLIENT_ID',
'clientSecret' => 'YOUR_CLIENT_SECRET',
'redirectUri' => 'https://yoursite.com/callback',
'urlAuthorize' => 'https://ummahpass.io/oauth/authorize',
'urlAccessToken' => 'https://ummahpass.io/oauth/token',
'urlResourceOwnerDetails' => 'https://ummahpass.io/api/user',
'scopes' => 'profile points membership',
]);
// Redirect to authorization
if (!isset($_GET['code'])) {
$authUrl = $provider->getAuthorizationUrl();
$_SESSION['oauth2state'] = $provider->getState();
header('Location: ' . $authUrl);
exit;
}
// Handle callback
$token = $provider->getAccessToken('authorization_code', [
'code' => $_GET['code']
]);
$user = $provider->getResourceOwner($token);
$userData = $user->toArray();
// $userData contains: id, name, email, is_pro, etc.
Node.js (Express + Passport) Example
const passport = require('passport');
const OAuth2Strategy = require('passport-oauth2');
passport.use('ummahpass', new OAuth2Strategy({
authorizationURL: 'https://ummahpass.io/oauth/authorize',
tokenURL: 'https://ummahpass.io/oauth/token',
clientID: process.env.UMMAHPASS_CLIENT_ID,
clientSecret: process.env.UMMAHPASS_CLIENT_SECRET,
callbackURL: 'https://yoursite.com/auth/ummahpass/callback',
scope: 'profile points membership'
}, async (accessToken, refreshToken, profile, done) => {
// Fetch user data
const response = await fetch('https://ummahpass.io/api/user', {
headers: { 'Authorization': `Bearer ${accessToken}` }
});
const userData = await response.json();
// Find or create user in your database
const user = await User.findOrCreate({
email: userData.email,
name: userData.name,
ummahpassId: userData.id
});
done(null, user);
}));
// Routes
app.get('/auth/ummahpass', passport.authenticate('ummahpass'));
app.get('/auth/ummahpass/callback',
passport.authenticate('ummahpass', { failureRedirect: '/login' }),
(req, res) => res.redirect('/dashboard')
);
Benefits of Integration
Single Sign-On
Users log in once and access all Ummah ecosystem sites
Verified Users
Know which users are verified Muslims
Points Integration
Award UmmahPoints for user activities
Need Help?
Our team is here to help you integrate UmmahPass into your platform.
Contact Support