Developer Integration

Add "Login with UmmahPass" to your website and give your users access to the Muslim digital ecosystem.

Quick Start

1. Request OAuth Credentials

Contact us to get your OAuth client credentials:

Request Credentials

Include 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:

☪️ Login with UmmahPass Example button style

OAuth 2.0 Flow

1

Redirect to UmmahPass

Send user to authorization URL with your client_id and redirect_uri

2

User Authorizes

User logs in (or is already logged in) and authorizes your app

3

Receive Auth Code

User is redirected back to your site with an authorization code

4

Exchange for Token

Your server exchanges the code for an access token

5

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
idintegerUnique UmmahPass user ID
namestringUser's display name
emailstringUser's email address
is_probooleanPro membership status
is_verified_muslimbooleanVerified Muslim status
points_balanceintegerCurrent UmmahPoints balance
points_multiplierfloatPoints earning rate (0.5 or 1.0)
referral_codestringUser's referral code

Platform Integration Guides

📝

WordPress

Use the miniOrange OAuth plugin for easy integration.

  1. Install "OAuth Single Sign On" by miniOrange
  2. Add UmmahPass as a custom OAuth provider
  3. Enter the OAuth endpoints and credentials
  4. Map user fields (email, name)
Get Plugin →
🔧

Laravel

Use Laravel Socialite with a custom provider.

  1. Install socialiteproviders/manager
  2. Create custom UmmahPass provider
  3. Add credentials to config/services.php
  4. Handle callback and create users
View Code Example →
🐘

PHP (Generic)

Use league/oauth2-client for any PHP project.

  1. Install league/oauth2-client via Composer
  2. Create GenericProvider with UmmahPass URLs
  3. Handle authorization and token exchange
  4. Fetch and store user data
View Code Example →
🟢

Node.js

Use Passport.js with OAuth2 strategy.

  1. Install passport-oauth2
  2. Configure strategy with UmmahPass URLs
  3. Handle callback and session
  4. Store user in database
View Code Example →

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