1+ <?php
2+ require_once (__DIR__ . "/../../config.php " );
3+ require_once (__DIR__ . "/../../vendor/autoload.php " );
4+
5+ use Pdsinterop \PhpSolid \Middleware ;
6+ use Pdsinterop \PhpSolid \Server ;
7+ use Pdsinterop \PhpSolid \User ;
8+
9+ $ request = explode ("? " , $ _SERVER ['REQUEST_URI ' ], 2 )[0 ];
10+ $ method = $ _SERVER ['REQUEST_METHOD ' ];
11+
12+ Middleware::cors ();
13+
14+ switch ($ method ) {
15+ case "GET " :
16+ switch ($ request ) {
17+ case "/ " :
18+ $ serverName = $ _SERVER ['SERVER_NAME ' ];
19+ [$ idPart , $ rest ] = explode (". " , $ serverName , 2 );
20+ $ userId = preg_replace ("/^id-/ " , "" , $ idPart );
21+
22+ $ user = User::getUserById ($ userId );
23+ if (!isset ($ user ['storage ' ])) {
24+ $ user ['storage ' ] = "https://storage- " . $ userId . ". " . BASEDOMAIN ;
25+ }
26+ if (!isset ($ user ['issuer ' ])) {
27+ $ user ['issuer ' ] = BASEURL ;
28+ }
29+
30+ $ profile = <<<"EOF"
31+ @prefix : <#>.
32+ @prefix acl: <http://www.w3.org/ns/auth/acl#>.
33+ @prefix foaf: <http://xmlns.com/foaf/0.1/>.
34+ @prefix ldp: <http://www.w3.org/ns/ldp#>.
35+ @prefix schema: <http://schema.org/>.
36+ @prefix solid: <http://www.w3.org/ns/solid/terms#>.
37+ @prefix space: <http://www.w3.org/ns/pim/space#>.
38+ @prefix vcard: <http://www.w3.org/2006/vcard/ns#>.
39+ @prefix pro: <./>.
40+ @prefix inbox: < {$ user ['storage ' ]}/inbox/>.
41+
42+ <> a foaf:PersonalProfileDocument; foaf:maker :me; foaf:primaryTopic :me.
43+
44+ :me
45+ a schema:Person, foaf:Person;
46+ ldp:inbox inbox:;
47+ space:preferencesFile </storage/settings/prefs.ttl>;
48+ space:storage < {$ user ['storage ' ]}>;
49+ solid:account < {$ user ['storage ' ]}>;
50+ solid:oidcIssuer < {$ user ['issuer ' ]}>;
51+ solid:privateTypeIndex < {$ user ['storage ' ]}/settings/privateTypeIndex.ttl>;
52+ solid:publicTypeIndex < {$ user ['storage ' ]}/settings/publicTypeIndex.ttl>.
53+ EOF ;
54+ header ('Content-Type: text/turtle ' );
55+ echo $ profile ;
56+ break ;
57+ }
58+ break ;
59+ case "OPTIONS " :
60+ break ;
61+ case "POST " :
62+ case "PUT " :
63+ default :
64+ header ($ _SERVER ['SERVER_PROTOCOL ' ] . " 405 Method not allowed " );
65+ break ;
66+ }
67+
0 commit comments