Skip to content

Commit 6402e29

Browse files
committed
cleanup user profile route file
1 parent 9428099 commit 6402e29

File tree

2 files changed

+53
-43
lines changed

2 files changed

+53
-43
lines changed

lib/Api/SolidUserProfile.php

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
<?php
2+
namespace Pdsinterop\PhpSolid\Api;
3+
4+
use Pdsinterop\PhpSolid\User;
5+
6+
class SolidUserProfile {
7+
public static function respondToProfile() {
8+
$serverName = $_SERVER['SERVER_NAME'];
9+
[$idPart, $rest] = explode(".", $serverName, 2);
10+
$userId = preg_replace("/^id-/", "", $idPart);
11+
12+
$user = User::getUserById($userId);
13+
if (!isset($user['storage']) || !$user['storage']) {
14+
$user['storage'] = "https://storage-" . $userId . "." . BASEDOMAIN . "/";
15+
}
16+
if (is_array($user['storage'])) { // empty array is already handled
17+
$user['storage'] = array_values($user['storage'])[0]; // FIXME: Handle multiple storage pods
18+
}
19+
if (!isset($user['issuer'])) {
20+
$user['issuer'] = BASEURL;
21+
}
22+
23+
$profile = <<<"EOF"
24+
@prefix : <#>.
25+
@prefix acl: <http://www.w3.org/ns/auth/acl#>.
26+
@prefix foaf: <http://xmlns.com/foaf/0.1/>.
27+
@prefix ldp: <http://www.w3.org/ns/ldp#>.
28+
@prefix schema: <http://schema.org/>.
29+
@prefix solid: <http://www.w3.org/ns/solid/terms#>.
30+
@prefix space: <http://www.w3.org/ns/pim/space#>.
31+
@prefix vcard: <http://www.w3.org/2006/vcard/ns#>.
32+
@prefix pro: <./>.
33+
@prefix inbox: <{$user['storage']}inbox/>.
34+
35+
<> a foaf:PersonalProfileDocument; foaf:maker :me; foaf:primaryTopic :me.
36+
37+
:me
38+
a schema:Person, foaf:Person;
39+
ldp:inbox inbox:;
40+
space:preferencesFile <{$user['storage']}settings/prefs.ttl>;
41+
space:storage <{$user['storage']}>;
42+
solid:account <{$user['storage']}>;
43+
solid:oidcIssuer <{$user['issuer']}>;
44+
solid:privateTypeIndex <{$user['storage']}settings/privateTypeIndex.ttl>;
45+
solid:publicTypeIndex <{$user['storage']}settings/publicTypeIndex.ttl>.
46+
EOF;
47+
header('Content-Type: text/turtle');
48+
echo $profile;
49+
}
50+
}
51+

www/user/profile.php

Lines changed: 2 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,7 @@
66
require_once(__DIR__ . "/../../vendor/autoload.php");
77

88
use Pdsinterop\PhpSolid\Middleware;
9-
use Pdsinterop\PhpSolid\Server;
10-
use Pdsinterop\PhpSolid\User;
9+
use Pdsinterop\PhpSolid\Api\SolidUserProfile;
1110

1211
$request = explode("?", $_SERVER['REQUEST_URI'], 2)[0];
1312
$method = $_SERVER['REQUEST_METHOD'];
@@ -18,47 +17,7 @@
1817
case "GET":
1918
switch ($request) {
2019
case "/":
21-
$serverName = $_SERVER['SERVER_NAME'];
22-
[$idPart, $rest] = explode(".", $serverName, 2);
23-
$userId = preg_replace("/^id-/", "", $idPart);
24-
25-
$user = User::getUserById($userId);
26-
if (!isset($user['storage']) || !$user['storage']) {
27-
$user['storage'] = "https://storage-" . $userId . "." . BASEDOMAIN . "/";
28-
}
29-
if (is_array($user['storage'])) { // empty array is already handled
30-
$user['storage'] = array_values($user['storage'])[0]; // FIXME: Handle multiple storage pods
31-
}
32-
if (!isset($user['issuer'])) {
33-
$user['issuer'] = BASEURL;
34-
}
35-
36-
$profile = <<<"EOF"
37-
@prefix : <#>.
38-
@prefix acl: <http://www.w3.org/ns/auth/acl#>.
39-
@prefix foaf: <http://xmlns.com/foaf/0.1/>.
40-
@prefix ldp: <http://www.w3.org/ns/ldp#>.
41-
@prefix schema: <http://schema.org/>.
42-
@prefix solid: <http://www.w3.org/ns/solid/terms#>.
43-
@prefix space: <http://www.w3.org/ns/pim/space#>.
44-
@prefix vcard: <http://www.w3.org/2006/vcard/ns#>.
45-
@prefix pro: <./>.
46-
@prefix inbox: <{$user['storage']}inbox/>.
47-
48-
<> a foaf:PersonalProfileDocument; foaf:maker :me; foaf:primaryTopic :me.
49-
50-
:me
51-
a schema:Person, foaf:Person;
52-
ldp:inbox inbox:;
53-
space:preferencesFile <{$user['storage']}settings/prefs.ttl>;
54-
space:storage <{$user['storage']}>;
55-
solid:account <{$user['storage']}>;
56-
solid:oidcIssuer <{$user['issuer']}>;
57-
solid:privateTypeIndex <{$user['storage']}settings/privateTypeIndex.ttl>;
58-
solid:publicTypeIndex <{$user['storage']}settings/publicTypeIndex.ttl>.
59-
EOF;
60-
header('Content-Type: text/turtle');
61-
echo $profile;
20+
SolidUserProfile::respondToProfile();
6221
break;
6322
}
6423
break;

0 commit comments

Comments
 (0)