Discourse SSO and API Helper for PHP

Installation

The package is registered at Packagist as vinkas/discourse-php and can be installed using composer:

composer require vinkas/discourse-php

Usage

$discourse = new Vinkas\Discourse\PHP\Client('discouse.example.com', true);  // set true if ssl enabled

API

$api = $discourse->api('API_KEY', 'API_USERNAME');
$api->topics()->create('TITLE', 'CONTENT', 'CATEGORY_SLUG')

SSO

$payload = $_GET['sso'];
$signature = $_GET['sig'];

$sso = $discourse->sso('SECRET', $payload, $signature);

if (!($sso->isValid())) {
    header("HTTP/1.1 403 Forbidden");
    echo("Bad SSO request");
    die();
}

$userParams = array(
    'external_id' => 'USER_ID',
    'email'     => 'EMAIL_ADDRESS',
    'username' => 'USERNAME',  // optional
    'name'     => 'FULL_NAME'  // optional
    // for more available fields https://meta.discourse.org/t/official-single-sign-on-for-discourse/13045
);

$url = $sso->getResponseUrl($userParams)
header('Location: ' . $url);
exit(0);
6 إعجابات

Since I committed in other task I didn’t tested the code well and unable to give detailed documentation with usage examples.

I will release next version soon with more options, documentation and examples.

إعجاب واحد (1)

I haven’t looked closely at this but it sounds like there might be some overlap with @michaeld’s PHP API client for Discourse:

https://github.com/communiteq/discourse-api-php

I already aware of this existing package. But I didn’t used it. I used famous GuzzleHttp (they used php native curl) and composer. Also in mine it have SSO option too.

After all I created this package because of I am also creating laravel package (which depends it) for easy implementation with laravel features like eloquent model. Yes few laravel packages also already exist for discourse. But I have something different in my mind for development :slight_smile:

إعجاب واحد (1)

Too bad you decided to create another, instead of just contributing to what already existed, and making it better.

Sorry @michaeld. Coding structure which I wanted and created is totally different from your existing package. That’s why I created it as new one.

In other words I created this package for my own purpose. Then I decided to open source it.

إعجاب واحد (1)

لأولئك الذين يجدون هذا الموضوع للتو (الآن هو مارس 2020… تحية من الحجر الصحي المنزلي لفيروس كورونا المستجد!) –

يبدو أن المكتبة التي أشار إليها @michaeld أعلاه مخصصة فقط للتواصل مع واجهة برمجة التطبيقات (API). وهذا لا علاقة له بتسجيل الدخول الموحد (SSO) على الإطلاق.

لقد جربت المكتبة التي شاركها @vinothkannans على GitHub، ولكن كما قال هو نفسه أعلاه، لم يقم بإجراء الكثير من الاختبارات، وفي الواقع، أجد أنها مليئة بالأخطاء وغير جاهزة للاستخدام الفعلي.

لقد وجدت هذه المكتبة وهي تعمل بشكل جيد معي:

9 إعجابات