11<?php
2- namespace Pdsinterop \PhpSolid \Routes ;
32
4- use Pdsinterop \PhpSolid \User ;
5- use Pdsinterop \PhpSolid \StorageServer ;
6- use Pdsinterop \PhpSolid \ClientRegistration ;
7- use Pdsinterop \PhpSolid \SolidNotifications ;
8- use Pdsinterop \PhpSolid \Util ;
9- use Pdsinterop \Solid \Auth \WAC ;
10- use Pdsinterop \Solid \Resources \Server as ResourceServer ;
11- use Laminas \Diactoros \ServerRequestFactory ;
12- use Laminas \Diactoros \Response ;
3+ namespace Pdsinterop \PhpSolid \Routes ;
134
14- class SolidStorage {
15- public static function respondToStorage () {
16- $ requestFactory = new ServerRequestFactory ();
17- $ rawRequest = $ requestFactory ->fromGlobals ($ _SERVER , $ _GET , $ _POST , $ _COOKIE , $ _FILES );
5+ use Laminas \Diactoros \ServerRequestFactory ;
6+ use Pdsinterop \PhpSolid \SolidStorageHandler ;
7+ use Pdsinterop \PhpSolid \StorageServer ;
188
19- try {
20- StorageServer::initializeStorage ();
21- $ filesystem = StorageServer::getFileSystem ();
22- } catch (\Exception $ e ) {
23- $ response = new Response ();
24- $ response = $ response ->withStatus (404 , "Not found " );
25- StorageServer::respond ($ response );
26- exit ();
27- }
9+ class SolidStorage
10+ {
11+ public static function respondToStorage ()
12+ {
13+ $ requestFactory = new ServerRequestFactory ();
14+ $ rawRequest = $ requestFactory ->fromGlobals ($ _SERVER , $ _GET , $ _POST , $ _COOKIE , $ _FILES );
2815
29- $ resourceServer = new ResourceServer ($ filesystem , new Response (), null );
30- $ solidNotifications = new SolidNotifications ();
31- $ resourceServer ->setNotifications ($ solidNotifications );
16+ $ handler = new SolidStorageHandler ();
17+ $ response = $ handler ->handle ($ rawRequest );
3218
33- $ wac = new WAC ($ filesystem );
34-
35- $ baseUrl = Util::getServerBaseUrl ();
36- $ resourceServer ->setBaseUrl ($ baseUrl );
37- $ wac ->setBaseUrl ($ baseUrl );
38-
39- try {
40- $ webId = StorageServer::getWebId ($ rawRequest );
41- } catch (\Exception $ e ) {
42- $ response = $ resourceServer ->getResponse ()
43- -> withStatus (400 , "Bad request " );
44- StorageServer::respond ($ response );
45- exit ();
46- }
47-
48- if (!isset ($ webId )) {
49- $ response = $ resourceServer ->getResponse ()
50- ->withStatus (409 , "Invalid token " );
51- StorageServer::respond ($ response );
52- exit ();
53- }
54-
55- $ origin = $ rawRequest ->getHeaderLine ("Origin " );
56-
57- // FIXME: Read allowed clients from the profile instead;
58-
59- $ ownerWebId = StorageServer::getOwnerWebId ();
60- $ owner = User::getUserByWebId ($ ownerWebId );
61-
62- $ allowedClients = $ owner ['allowedClients ' ] ?? [];
63- $ allowedOrigins = array_merge (
64- ($ owner ['allowedOrigins ' ] ?? []),
65- (TRUSTED_APPS ?? [])
66- );
67- $ allowedOrigins = array_unique ($ allowedOrigins );
68-
69- if (!isset ($ origin ) || ($ origin === "" )) {
70- $ allowedOrigins [] = "app://unset " ; // FIXME: this should not be here.
71- $ origin = "app://unset " ;
72- }
73-
74- if (!$ wac ->isAllowed ($ rawRequest , $ webId , $ origin , $ allowedOrigins )) {
75- $ response = new Response ();
76- $ response = $ response ->withStatus (403 , "Access denied! " );
77- StorageServer::respond ($ response );
78- exit ();
79- }
80-
81- $ response = $ resourceServer ->respondToRequest ($ rawRequest );
82- $ response = $ wac ->addWACHeaders ($ rawRequest , $ response , $ webId );
83- StorageServer::respond ($ response );
84- }
19+ StorageServer::respond ($ response );
8520 }
86-
21+ }
0 commit comments