Skip to content

Repository files navigation

Solid Client PHP

Re-decentralizing the web

Solid (derived from "social linked data") is a proposed set of conventions and tools for building decentralized Web applications based on Linked Data principles.

This repository contains a PHP library for accessing data and managing permissions on data stored in a Solid Pod It also a contains a Symfony bundle to easily build Solid applications with the Symfony and API Platform frameworks.

Take a look at the presentation of this library at the SymfonyLive Paris 2022 conference.

Install

composer require dunglas/solid-client-php

If you use Symfony or API Platform, the bundle and the corresponding recipe will be installed automatically.

Example

<?phpuseDunglas\PhpSolidClient\SolidClientFactory;
useDunglas\PhpSolidClient\OidcClient;
useSymfony\Component\HttpClient\HttpClient;
$solidClientFactory = newSolidClientFactory(HttpClient::create());
// Create an anonymous Solid client$anonymousSolidClient = $solidClientFactory->create();
// Fetch the WebID profile of a user$profile = $anonymousSolidClient->getProfile('https://example.com/your/webid');
// Fetch the OIDC issuer for a user$oidcIssuer = $anonymousSolidClient->getOidcIssuer('https://example.com/your/webid');
// Create a Solid OIDC client for this user$oidcClient = newOidcClient($oidcIssuer);
// Register the OIDC client dynamically$oidcClient->register();
// Authenticate the user$oidcClient->authenticate();
// At this point you may want to save $oidcClient in the session// The user will be redirected to the OIDC server to log in// Create a Solid client generating DPoP access tokens for the logged-in user$loggedSolidClient = $solidClientFactory->create($oidcClient);
// Create a new container$containerResponse = $loggedSolidClient->createContainer('https://mypod.example.com', 'blog');
$container = $containerResponse->getContent();
// Post a new note$apiPlatformResponse = $loggedSolidClient->post('https://mypod.example.com/blog', 'api-platform-conference', <<<TTL@prefix as: <http://www.w3.org/ns/activitystreams#>.<> a as:Note; as:content "Going to API Platform Conference".TTL
);
$apiPlatformCon = $apiPlatformResponse->getContent();
// Fetch an existing note$symfonyLiveResponse = $loggedSolidClient->get('https://mypod.example.com/blog/symfony-live');
$symfonyLive = $symfonyLiveResponse->getContent();
// Logout$oidcClient->signOut($oidcClient->getIdToken());

Features

  • Standalone PHP library
  • Symfony Bundle
    • OAuth/OIDC authenticator
    • Solid client as a service

Authentication

Identity

Reading and Writing Resources

Not Implemented Yet

About

PHP library for accessing data and managing permissions on data stored in a Solid Pod

Topics

Resources

Code of conduct

Contributing

Stars

73 stars

Watchers

4 watching

Forks

Releases

Sponsor this project

Used by

Contributors

Languages