Skip to content

dunglas/solid-client-php

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

<?php use Dunglas\PhpSolidClient\SolidClientFactory; use Dunglas\PhpSolidClient\OidcClient; use Symfony\Component\HttpClient\HttpClient; $solidClientFactory = new SolidClientFactory(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 = new OidcClient($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

License

Code of conduct

Contributing

Stars

Watchers

Forks

Sponsor this project

 

Contributors 2

  •  
  •