solid-server 5.6.9-beta
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.acl +10 -0
- package/.github/workflows/ci.yml +47 -0
- package/.nvmrc +1 -0
- package/.snyk +35 -0
- package/.well-known/.acl +15 -0
- package/CHANGELOG.md +198 -0
- package/CONTRIBUTING.md +139 -0
- package/CONTRIBUTORS.md +36 -0
- package/Dockerfile +22 -0
- package/LICENSE.md +23 -0
- package/README.md +453 -0
- package/bin/lib/cli-utils.js +85 -0
- package/bin/lib/cli.js +39 -0
- package/bin/lib/init.js +94 -0
- package/bin/lib/invalidUsernames.js +148 -0
- package/bin/lib/migrateLegacyResources.js +69 -0
- package/bin/lib/options.js +399 -0
- package/bin/lib/start.js +148 -0
- package/bin/lib/updateIndex.js +56 -0
- package/bin/solid +3 -0
- package/bin/solid-test +12 -0
- package/bin/solid.js +3 -0
- package/common/css/solid.css +58 -0
- package/common/fonts/glyphicons-halflings-regular.eot +0 -0
- package/common/fonts/glyphicons-halflings-regular.svg +288 -0
- package/common/fonts/glyphicons-halflings-regular.ttf +0 -0
- package/common/fonts/glyphicons-halflings-regular.woff +0 -0
- package/common/fonts/glyphicons-halflings-regular.woff2 +0 -0
- package/common/img/.gitkeep +0 -0
- package/common/js/auth-buttons.js +65 -0
- package/common/js/solid.js +454 -0
- package/common/well-known/security.txt +2 -0
- package/config/defaults.js +25 -0
- package/config/usernames-blacklist.json +4 -0
- package/config.json-default +22 -0
- package/default-templates/emails/delete-account.js +49 -0
- package/default-templates/emails/invalid-username.js +30 -0
- package/default-templates/emails/reset-password.js +49 -0
- package/default-templates/emails/welcome.js +39 -0
- package/default-templates/new-account/.acl +26 -0
- package/default-templates/new-account/.meta +5 -0
- package/default-templates/new-account/.meta.acl +25 -0
- package/default-templates/new-account/.well-known/.acl +19 -0
- package/default-templates/new-account/favicon.ico +0 -0
- package/default-templates/new-account/favicon.ico.acl +26 -0
- package/default-templates/new-account/inbox/.acl +26 -0
- package/default-templates/new-account/private/.acl +10 -0
- package/default-templates/new-account/profile/.acl +19 -0
- package/default-templates/new-account/profile/card$.ttl +25 -0
- package/default-templates/new-account/public/.acl +19 -0
- package/default-templates/new-account/robots.txt +3 -0
- package/default-templates/new-account/robots.txt.acl +26 -0
- package/default-templates/new-account/settings/.acl +20 -0
- package/default-templates/new-account/settings/prefs.ttl +15 -0
- package/default-templates/new-account/settings/privateTypeIndex.ttl +4 -0
- package/default-templates/new-account/settings/publicTypeIndex.ttl +4 -0
- package/default-templates/new-account/settings/publicTypeIndex.ttl.acl +25 -0
- package/default-templates/new-account/settings/serverSide.ttl.acl +13 -0
- package/default-templates/new-account/settings/serverSide.ttl.inactive +12 -0
- package/default-templates/server/.acl +10 -0
- package/default-templates/server/.well-known/.acl +15 -0
- package/default-templates/server/favicon.ico +0 -0
- package/default-templates/server/favicon.ico.acl +15 -0
- package/default-templates/server/index.html +55 -0
- package/default-templates/server/robots.txt +3 -0
- package/default-templates/server/robots.txt.acl +15 -0
- package/default-views/account/account-deleted.hbs +17 -0
- package/default-views/account/delete-confirm.hbs +51 -0
- package/default-views/account/delete-link-sent.hbs +17 -0
- package/default-views/account/delete.hbs +51 -0
- package/default-views/account/invalid-username.hbs +22 -0
- package/default-views/account/register-disabled.hbs +6 -0
- package/default-views/account/register-form.hbs +132 -0
- package/default-views/account/register.hbs +24 -0
- package/default-views/auth/auth-hidden-fields.hbs +8 -0
- package/default-views/auth/change-password.hbs +58 -0
- package/default-views/auth/goodbye.hbs +23 -0
- package/default-views/auth/login-required.hbs +34 -0
- package/default-views/auth/login-tls.hbs +11 -0
- package/default-views/auth/login-username-password.hbs +28 -0
- package/default-views/auth/login.hbs +55 -0
- package/default-views/auth/no-permission.hbs +29 -0
- package/default-views/auth/password-changed.hbs +27 -0
- package/default-views/auth/reset-link-sent.hbs +21 -0
- package/default-views/auth/reset-password.hbs +52 -0
- package/default-views/auth/sharing.hbs +49 -0
- package/default-views/shared/create-account.hbs +8 -0
- package/default-views/shared/error.hbs +5 -0
- package/docs/how-to-delete-your-account.md +56 -0
- package/docs/login-and-grant-access-to-application.md +32 -0
- package/examples/custom-error-handling.js +31 -0
- package/examples/ldp-with-webid.js +12 -0
- package/examples/simple-express-app.js +20 -0
- package/examples/simple-ldp-server.js +8 -0
- package/favicon.ico +0 -0
- package/favicon.ico.acl +15 -0
- package/index.html +48 -0
- package/index.js +3 -0
- package/lib/acl-checker.js +274 -0
- package/lib/api/accounts/user-accounts.js +88 -0
- package/lib/api/authn/force-user.js +21 -0
- package/lib/api/authn/index.js +5 -0
- package/lib/api/authn/webid-oidc.js +202 -0
- package/lib/api/authn/webid-tls.js +69 -0
- package/lib/api/index.js +6 -0
- package/lib/capability-discovery.js +54 -0
- package/lib/common/fs-utils.js +43 -0
- package/lib/common/template-utils.js +50 -0
- package/lib/common/user-utils.js +28 -0
- package/lib/create-app.js +322 -0
- package/lib/create-server.js +107 -0
- package/lib/debug.js +17 -0
- package/lib/handlers/allow.js +82 -0
- package/lib/handlers/auth-proxy.js +63 -0
- package/lib/handlers/copy.js +39 -0
- package/lib/handlers/cors-proxy.js +95 -0
- package/lib/handlers/delete.js +23 -0
- package/lib/handlers/error-pages.js +212 -0
- package/lib/handlers/get.js +219 -0
- package/lib/handlers/index.js +42 -0
- package/lib/handlers/options.js +33 -0
- package/lib/handlers/patch/n3-patch-parser.js +49 -0
- package/lib/handlers/patch/sparql-update-parser.js +16 -0
- package/lib/handlers/patch.js +203 -0
- package/lib/handlers/post.js +99 -0
- package/lib/handlers/put.js +56 -0
- package/lib/handlers/restrict-to-top-domain.js +13 -0
- package/lib/header.js +136 -0
- package/lib/http-error.js +34 -0
- package/lib/ldp-container.js +161 -0
- package/lib/ldp-copy.js +73 -0
- package/lib/ldp-middleware.js +32 -0
- package/lib/ldp.js +620 -0
- package/lib/lock.js +10 -0
- package/lib/metadata.js +10 -0
- package/lib/models/account-manager.js +603 -0
- package/lib/models/account-template.js +152 -0
- package/lib/models/authenticator.js +333 -0
- package/lib/models/oidc-manager.js +53 -0
- package/lib/models/solid-host.js +131 -0
- package/lib/models/user-account.js +112 -0
- package/lib/models/webid-tls-certificate.js +184 -0
- package/lib/payment-pointer-discovery.js +83 -0
- package/lib/requests/add-cert-request.js +138 -0
- package/lib/requests/auth-request.js +234 -0
- package/lib/requests/create-account-request.js +468 -0
- package/lib/requests/delete-account-confirm-request.js +170 -0
- package/lib/requests/delete-account-request.js +144 -0
- package/lib/requests/login-request.js +205 -0
- package/lib/requests/password-change-request.js +201 -0
- package/lib/requests/password-reset-email-request.js +199 -0
- package/lib/requests/sharing-request.js +259 -0
- package/lib/resource-mapper.js +198 -0
- package/lib/server-config.js +167 -0
- package/lib/services/blacklist-service.js +33 -0
- package/lib/services/email-service.js +162 -0
- package/lib/services/token-service.js +47 -0
- package/lib/utils.js +254 -0
- package/lib/webid/index.js +13 -0
- package/lib/webid/lib/get.js +27 -0
- package/lib/webid/lib/parse.js +12 -0
- package/lib/webid/tls/index.js +185 -0
- package/package.json +172 -0
- package/renovate.json +5 -0
- package/robots.txt +3 -0
- package/robots.txt.acl +15 -0
- package/static/account-recovery.html +78 -0
- package/static/popup-redirect.html +1 -0
- package/static/signup.html +108 -0
- package/static/signup.html.acl +14 -0
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
<div class="row">
|
|
2
|
+
<div class="col-md-6">
|
|
3
|
+
<div class="panel panel-default">
|
|
4
|
+
<div class="panel-body">
|
|
5
|
+
<form method="post" action="/api/accounts/new" id="RegisterForm">
|
|
6
|
+
{{> shared/error}}
|
|
7
|
+
|
|
8
|
+
<div class="form-group">
|
|
9
|
+
<label class="control-label" for="username">Username*</label>
|
|
10
|
+
<input type="text" class="form-control" name="username" id="username" placeholder="alice"
|
|
11
|
+
required value="{{username}}"/>
|
|
12
|
+
|
|
13
|
+
{{#if multiuser}}
|
|
14
|
+
<p>Your username should be a lower-case word with only
|
|
15
|
+
letters a-z and numbers 0-9 and without periods.</p>
|
|
16
|
+
<p>Your public Solid POD URL will be:
|
|
17
|
+
<tt>https://<span class="editable-username">alice</span>.<script type="text/javascript">
|
|
18
|
+
document.write(window.location.host)
|
|
19
|
+
</script></tt></p>
|
|
20
|
+
<p>Your public Solid WebID will be:
|
|
21
|
+
<tt>https://<span class="editable-username">alice</span>.<script type="text/javascript">
|
|
22
|
+
document.write(window.location.host)
|
|
23
|
+
</script>/profile/card#me</tt></p>
|
|
24
|
+
|
|
25
|
+
<p>Your <em>POD URL</em> is like the homepage for your Solid
|
|
26
|
+
pod. By default, it is readable by the public, but you can
|
|
27
|
+
always change that if you like by changing the access
|
|
28
|
+
control.</p>
|
|
29
|
+
|
|
30
|
+
<p>Your <em>Solid WebID</em> is your globally unique name
|
|
31
|
+
that you can use to identify and authenticate yourself with
|
|
32
|
+
other PODs across the world.</p>
|
|
33
|
+
{{/if}}
|
|
34
|
+
|
|
35
|
+
</div>
|
|
36
|
+
|
|
37
|
+
<div class="form-group has-feedback">
|
|
38
|
+
<label class="control-label" for="password">Password*</label>
|
|
39
|
+
<input type="password" class="form-control control-progress{{#if disablePasswordStrengthCheck}} disable-password-strength-check{{/if}}" name="password" id="password" required/>
|
|
40
|
+
<span class="glyphicon glyphicon-remove form-control-feedback hidden" aria-hidden="true"></span>
|
|
41
|
+
<div class="progress">
|
|
42
|
+
<div class="progress-bar" role="progressbar" aria-valuenow="0" aria-valuemin="0" aria-valuemax="4"></div>
|
|
43
|
+
</div>
|
|
44
|
+
<div class="help-block"></div>
|
|
45
|
+
</div>
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
<div class="form-group has-feedback">
|
|
49
|
+
<label class="control-label" for="repeat_password">Repeat password*</label>
|
|
50
|
+
<input type="password" class="form-control" name="repeat_password" id="repeat_password" required/>
|
|
51
|
+
<span class="glyphicon glyphicon-remove form-control-feedback hidden"></span>
|
|
52
|
+
</div>
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
<div class="form-group">
|
|
56
|
+
<label class="control-label" for="name">Name*</label>
|
|
57
|
+
<input type="text" class="form-control" name="name" id="name" required value="{{name}}"/>
|
|
58
|
+
</div>
|
|
59
|
+
|
|
60
|
+
<div class="form-group">
|
|
61
|
+
<label class="control-label" for="email">Email*</label>
|
|
62
|
+
<input type="email" class="form-control" name="email" id="email" value="{{email}}"/>
|
|
63
|
+
<span class="help-block">Your email will only be used for account recovery</span>
|
|
64
|
+
</div>
|
|
65
|
+
|
|
66
|
+
{{#if enforceToc}}
|
|
67
|
+
{{#if tocUri}}
|
|
68
|
+
<div class="checkbox">
|
|
69
|
+
<label>
|
|
70
|
+
<input type="checkbox" name="acceptToc" value="true" {{#if acceptToc}}checked{{/if}}>
|
|
71
|
+
I agree to the <a href="{{tocUri}}" target="_blank">Terms & Conditions</a> of this service
|
|
72
|
+
</label>
|
|
73
|
+
</div>
|
|
74
|
+
{{/if}}
|
|
75
|
+
{{/if}}
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
<button type="submit" class="btn btn-primary" id="register">Register</button>
|
|
79
|
+
|
|
80
|
+
<input type="hidden" name="returnToUrl" value="{{returnToUrl}}"/>
|
|
81
|
+
{{> auth/auth-hidden-fields}}
|
|
82
|
+
|
|
83
|
+
</form>
|
|
84
|
+
</div>
|
|
85
|
+
</div>
|
|
86
|
+
</div>
|
|
87
|
+
|
|
88
|
+
<div class="col-md-6">
|
|
89
|
+
<div class="panel panel-default panel-already-registered">
|
|
90
|
+
<div class="panel-body">
|
|
91
|
+
<h2>Already have an account?</h2>
|
|
92
|
+
<p>
|
|
93
|
+
<a class="btn btn-lg btn-success" href="{{{loginUrl}}}">
|
|
94
|
+
Please Log In
|
|
95
|
+
</a>
|
|
96
|
+
</p>
|
|
97
|
+
</div>
|
|
98
|
+
</div>
|
|
99
|
+
</div>
|
|
100
|
+
</div>
|
|
101
|
+
|
|
102
|
+
<script src="/common/js/owasp-password-strength-test.js" defer></script>
|
|
103
|
+
<script src="/common/js/text-encoder-lite.min.js" defer></script>
|
|
104
|
+
<script src="/common/js/solid.js" defer></script>
|
|
105
|
+
|
|
106
|
+
<script>
|
|
107
|
+
var username = document.getElementById('username');
|
|
108
|
+
username.onkeyup = function() {
|
|
109
|
+
var list = document.getElementsByClassName('editable-username');
|
|
110
|
+
for (let item of list) {
|
|
111
|
+
item.innerHTML = username.value.toLowerCase()
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
window.addEventListener('DOMContentLoaded', function () {
|
|
116
|
+
var connect = document.getElementById('ConnectExternalWebId')
|
|
117
|
+
var container = document.getElementById('ExternalWebId')
|
|
118
|
+
container.classList.toggle('hidden', !connect.checked)
|
|
119
|
+
connect.addEventListener('change', function () {
|
|
120
|
+
container.classList.toggle('hidden', !connect.checked)
|
|
121
|
+
})
|
|
122
|
+
|
|
123
|
+
var form = document.getElementById('RegisterForm')
|
|
124
|
+
var externalWebIdField = document.getElementById('externalWebId')
|
|
125
|
+
form.addEventListener('submit', function () {
|
|
126
|
+
if (!connect.checked) {
|
|
127
|
+
externalWebIdField.value = ''
|
|
128
|
+
}
|
|
129
|
+
})
|
|
130
|
+
})
|
|
131
|
+
</script>
|
|
132
|
+
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
<!doctype html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8">
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
6
|
+
<title>Register</title>
|
|
7
|
+
<link rel="stylesheet" href="/common/css/bootstrap.min.css">
|
|
8
|
+
<link rel="stylesheet" href="/common/css/solid.css">
|
|
9
|
+
</head>
|
|
10
|
+
<body>
|
|
11
|
+
<div class="container">
|
|
12
|
+
|
|
13
|
+
<div class="page-header">
|
|
14
|
+
<h1>Register</h1>
|
|
15
|
+
</div>
|
|
16
|
+
|
|
17
|
+
{{#if registerDisabled}}
|
|
18
|
+
{{> account/register-disabled}}
|
|
19
|
+
{{else}}
|
|
20
|
+
{{> account/register-form}}
|
|
21
|
+
{{/if}}
|
|
22
|
+
</div>
|
|
23
|
+
</body>
|
|
24
|
+
</html>
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
<input type="hidden" name="response_type" id="response_type" value="{{response_type}}" />
|
|
2
|
+
<input type="hidden" name="display" id="display" value="{{display}}" />
|
|
3
|
+
<input type="hidden" name="scope" id="scope" value="{{scope}}" />
|
|
4
|
+
<input type="hidden" name="client_id" id="client_id" value="{{client_id}}" />
|
|
5
|
+
<input type="hidden" name="redirect_uri" id="redirect_uri" value="{{redirect_uri}}" />
|
|
6
|
+
<input type="hidden" name="state" id="state" value="{{state}}" />
|
|
7
|
+
<input type="hidden" name="nonce" id="nonce" value="{{nonce}}" />
|
|
8
|
+
<input type="hidden" name="request" id="request" value="{{request}}" />
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
<!doctype html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8">
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
6
|
+
<title>Change Password</title>
|
|
7
|
+
<link rel="stylesheet" href="/common/css/bootstrap.min.css">
|
|
8
|
+
<link rel="stylesheet" href="/common/css/solid.css">
|
|
9
|
+
</head>
|
|
10
|
+
<body>
|
|
11
|
+
<div class="container">
|
|
12
|
+
|
|
13
|
+
<div class="page-header">
|
|
14
|
+
<h1>Change Password</h1>
|
|
15
|
+
</div>
|
|
16
|
+
|
|
17
|
+
{{#if validToken}}
|
|
18
|
+
<form method="post" action="/account/password/change">
|
|
19
|
+
{{> shared/error}}
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
<div class="form-group has-feedback">
|
|
23
|
+
<label class="control-label" for="password">New Password*</label>
|
|
24
|
+
<input type="password" class="form-control control-progress" name="newPassword" id="password" required/>
|
|
25
|
+
<span class="glyphicon glyphicon-remove form-control-feedback hidden" aria-hidden="true"></span>
|
|
26
|
+
<div class="progress">
|
|
27
|
+
<div class="progress-bar" role="progressbar" aria-valuenow="0" aria-valuemin="0" aria-valuemax="4"></div>
|
|
28
|
+
</div>
|
|
29
|
+
<div class="help-block"></div>
|
|
30
|
+
</div>
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
<div class="form-group has-feedback">
|
|
34
|
+
<label class="control-label" for="repeat_password">Repeat password*</label>
|
|
35
|
+
<input type="password" class="form-control" name="repeat_password" id="repeat_password" required/>
|
|
36
|
+
<span class="glyphicon glyphicon-remove form-control-feedback hidden"></span>
|
|
37
|
+
</div>
|
|
38
|
+
|
|
39
|
+
<button type="submit" class="btn btn-primary">Change Password</button>
|
|
40
|
+
<input type="hidden" name="returnToUrl" value="{{{returnToUrl}}}"/>
|
|
41
|
+
<input type="hidden" name="token" value="{{token}}"/>
|
|
42
|
+
|
|
43
|
+
</form>
|
|
44
|
+
|
|
45
|
+
<script src="/common/js/owasp-password-strength-test.js" defer></script>
|
|
46
|
+
<script src="/common/js/text-encoder-lite.min.js" defer></script>
|
|
47
|
+
<script src="/common/js/solid.js" defer></script>
|
|
48
|
+
|
|
49
|
+
{{else}}
|
|
50
|
+
|
|
51
|
+
<a class="btn btn-primary" href="/account/password/reset{{#if returnToUrl}}?returnToUrl={{{returnToUrl}}}{{/if}}">
|
|
52
|
+
Email password reset link
|
|
53
|
+
</a>
|
|
54
|
+
|
|
55
|
+
{{/if}}
|
|
56
|
+
</div>
|
|
57
|
+
</body>
|
|
58
|
+
</html>
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
<!doctype html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8">
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
6
|
+
<title>Logged Out</title>
|
|
7
|
+
<link rel="stylesheet" href="/common/css/bootstrap.min.css">
|
|
8
|
+
<link rel="stylesheet" href="/common/css/solid.css">
|
|
9
|
+
</head>
|
|
10
|
+
<body>
|
|
11
|
+
<div class="container">
|
|
12
|
+
<div class="page-title">
|
|
13
|
+
<h1>Logout</h1>
|
|
14
|
+
</div>
|
|
15
|
+
|
|
16
|
+
<div class="alert alert-success">
|
|
17
|
+
<p>You have successfully logged out.</p>
|
|
18
|
+
</div>
|
|
19
|
+
|
|
20
|
+
<a href="/login" class="btn btn-primary">Login Again</a>
|
|
21
|
+
</div>
|
|
22
|
+
</body>
|
|
23
|
+
</html>
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
<!doctype html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8">
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
6
|
+
<title>Log in</title>
|
|
7
|
+
<link rel="stylesheet" href="/common/css/bootstrap.min.css">
|
|
8
|
+
<link rel="stylesheet" href="/common/css/solid.css">
|
|
9
|
+
</head>
|
|
10
|
+
<body>
|
|
11
|
+
<div class="container">
|
|
12
|
+
<div class="page-header">
|
|
13
|
+
<div class="pull-right">
|
|
14
|
+
<button id="register" type="button" class="btn btn-primary">Register</button>
|
|
15
|
+
<button id="login" type="button" class="btn btn-success">Log in</button>
|
|
16
|
+
<button id="logout" type="button" class="hidden btn btn-danger">Log out</button>
|
|
17
|
+
</div>
|
|
18
|
+
<h1>Log in to access this resource</h1>
|
|
19
|
+
</div>
|
|
20
|
+
|
|
21
|
+
<div class="alert alert-danger">
|
|
22
|
+
<p>
|
|
23
|
+
The resource you are trying to access
|
|
24
|
+
(<code>{{currentUrl}}</code>)
|
|
25
|
+
requires you to log in.
|
|
26
|
+
</p>
|
|
27
|
+
</div>
|
|
28
|
+
|
|
29
|
+
</div>
|
|
30
|
+
</div>
|
|
31
|
+
<script src="/common/js/solid-auth-client.bundle.js"></script>
|
|
32
|
+
<script src="/common/js/auth-buttons.js"></script>
|
|
33
|
+
</body>
|
|
34
|
+
</html>
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
<div class="panel panel-default panel-login-tls">
|
|
2
|
+
<div class="panel-body">
|
|
3
|
+
<form method="post" action="{{tlsUrl}}">
|
|
4
|
+
<button type="submit" class="btn btn-lg btn-primary" id="login-tls">
|
|
5
|
+
Log in with Certificate (WebId-TLS)
|
|
6
|
+
</button>
|
|
7
|
+
|
|
8
|
+
{{> auth/auth-hidden-fields}}
|
|
9
|
+
</form>
|
|
10
|
+
</div>
|
|
11
|
+
</div>
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
<div class="panel panel-default">
|
|
2
|
+
<div class="panel-body">
|
|
3
|
+
<form method="post" action="/login/password" class="form-horizontal login-up-form">
|
|
4
|
+
<div class="form-group">
|
|
5
|
+
<label class="col-xs-3 control-label" for="username">Username</label>
|
|
6
|
+
<div class="col-xs-9">
|
|
7
|
+
<input type="text" class="form-control" name="username" id="username" placeholder="Username"/>
|
|
8
|
+
</div>
|
|
9
|
+
</div>
|
|
10
|
+
|
|
11
|
+
<div class="form-group">
|
|
12
|
+
<label class="col-xs-3 control-label" for="password">Password</label>
|
|
13
|
+
<div class="col-xs-9">
|
|
14
|
+
<input type="password" class="form-control" name="password" id="password" placeholder="Password"/>
|
|
15
|
+
<div class="pull-right">
|
|
16
|
+
<a href="/account/password/reset{{#if returnToUrl}}?returnToUrl={{{returnToUrl}}}{{/if}}">
|
|
17
|
+
Forgot password?
|
|
18
|
+
</a>
|
|
19
|
+
</div>
|
|
20
|
+
</div>
|
|
21
|
+
</div>
|
|
22
|
+
|
|
23
|
+
<button type="submit" class="btn btn-primary" id="login">Log In</button>
|
|
24
|
+
|
|
25
|
+
{{> auth/auth-hidden-fields}}
|
|
26
|
+
</form>
|
|
27
|
+
</div>
|
|
28
|
+
</div>
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
<!doctype html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8">
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
6
|
+
<title>Login</title>
|
|
7
|
+
<link rel="stylesheet" href="/common/css/bootstrap.min.css">
|
|
8
|
+
<link rel="stylesheet" href="/common/css/solid.css">
|
|
9
|
+
<meta name="apple-mobile-web-app-capable" content="yes">
|
|
10
|
+
<meta name="apple-mobile-web-app-status-bar-style" content="default">
|
|
11
|
+
</head>
|
|
12
|
+
<body>
|
|
13
|
+
<div class="container-fluid">
|
|
14
|
+
<div class="page-header hidden-xs hidden-sm">
|
|
15
|
+
<h1>Login</h1>
|
|
16
|
+
</div>
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
{{> shared/error}}
|
|
20
|
+
|
|
21
|
+
<div class="row visible-xs-inline visible-lg-block visible-md-block visible-sm-block">
|
|
22
|
+
<div class="col-md-6">
|
|
23
|
+
{{#if enablePassword}}
|
|
24
|
+
<h4 class="visible-xs visible-sm xs-header">Login</h4>
|
|
25
|
+
{{> auth/login-username-password}}
|
|
26
|
+
{{/if}}
|
|
27
|
+
<div class="visible-md visible-lg">
|
|
28
|
+
{{> shared/create-account }}
|
|
29
|
+
</div>
|
|
30
|
+
</div>
|
|
31
|
+
|
|
32
|
+
<div class="col-md-6">
|
|
33
|
+
{{#if enableTls}}
|
|
34
|
+
{{> auth/login-tls}}
|
|
35
|
+
{{/if}}
|
|
36
|
+
<div class="visible-xs visible-sm">
|
|
37
|
+
{{> shared/create-account }}
|
|
38
|
+
</div>
|
|
39
|
+
</div>
|
|
40
|
+
</div>
|
|
41
|
+
</div>
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
<script>
|
|
45
|
+
// Send return URL from localStorage to server through hidden redirect_uri field
|
|
46
|
+
var returnToUrl = localStorage.getItem('returnToUrl')
|
|
47
|
+
if (returnToUrl) {
|
|
48
|
+
for (let redirect of document.getElementsByName('redirect_uri')) {
|
|
49
|
+
redirect.value = returnToUrl
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
localStorage.removeItem('returnToUrl')
|
|
53
|
+
</script>
|
|
54
|
+
</body>
|
|
55
|
+
</html>
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
<!doctype html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8">
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
6
|
+
<title>No permission</title>
|
|
7
|
+
<link rel="stylesheet" href="/common/css/bootstrap.min.css">
|
|
8
|
+
<link rel="stylesheet" href="/common/css/solid.css">
|
|
9
|
+
</head>
|
|
10
|
+
<body>
|
|
11
|
+
<div class="container">
|
|
12
|
+
<div class="page-header">
|
|
13
|
+
<h1>No permission to access this resource</h1>
|
|
14
|
+
</div>
|
|
15
|
+
<div class="alert alert-danger">
|
|
16
|
+
<p>
|
|
17
|
+
You are currently logged in as <code>{{webId}}</code>,
|
|
18
|
+
but do not have permission to access <code>{{currentUrl}}</code>.
|
|
19
|
+
</p>
|
|
20
|
+
<p>
|
|
21
|
+
<button id="logout" type="button" class="btn btn-danger">Log out</button>
|
|
22
|
+
</p>
|
|
23
|
+
</div>
|
|
24
|
+
</div>
|
|
25
|
+
</div>
|
|
26
|
+
<script src="/common/js/solid-auth-client.bundle.js"></script>
|
|
27
|
+
<script src="/common/js/auth-buttons.js"></script>
|
|
28
|
+
</body>
|
|
29
|
+
</html>
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
<!doctype html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8">
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
6
|
+
<title>Password Changed</title>
|
|
7
|
+
<link rel="stylesheet" href="/common/css/bootstrap.min.css">
|
|
8
|
+
<link rel="stylesheet" href="/common/css/solid.css">
|
|
9
|
+
</head>
|
|
10
|
+
<body>
|
|
11
|
+
<div class="container">
|
|
12
|
+
<div class="page-header">
|
|
13
|
+
<h1>Password Changed</h1>
|
|
14
|
+
</div>
|
|
15
|
+
|
|
16
|
+
<div class="alert alert-success">
|
|
17
|
+
<p>Your password has been changed.</p>
|
|
18
|
+
</div>
|
|
19
|
+
|
|
20
|
+
<p>
|
|
21
|
+
<a class="btn btn-default" href="/login{{#if returnToUrl}}?returnToUrl={{{returnToUrl}}}{{/if}}">
|
|
22
|
+
Log in
|
|
23
|
+
</a>
|
|
24
|
+
</p>
|
|
25
|
+
</div>
|
|
26
|
+
</body>
|
|
27
|
+
</html>
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
<!doctype html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8">
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
6
|
+
<title>Reset Link Sent</title>
|
|
7
|
+
<link rel="stylesheet" href="/common/css/bootstrap.min.css">
|
|
8
|
+
<link rel="stylesheet" href="/common/css/solid.css">
|
|
9
|
+
</head>
|
|
10
|
+
<body>
|
|
11
|
+
<div class="container">
|
|
12
|
+
<div class="page-header">
|
|
13
|
+
<h1>Reset Link Sent</h1>
|
|
14
|
+
</div>
|
|
15
|
+
|
|
16
|
+
<div class="alert alert-success">
|
|
17
|
+
<p>A Reset Password link has been sent to your email.</p>
|
|
18
|
+
</div>
|
|
19
|
+
</div>
|
|
20
|
+
</body>
|
|
21
|
+
</html>
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
<!doctype html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8">
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
6
|
+
<title>Reset Password</title>
|
|
7
|
+
<link rel="stylesheet" href="/common/css/bootstrap.min.css">
|
|
8
|
+
<link rel="stylesheet" href="/common/css/solid.css">
|
|
9
|
+
</head>
|
|
10
|
+
<body>
|
|
11
|
+
<div class="container">
|
|
12
|
+
|
|
13
|
+
<div class="page-header">
|
|
14
|
+
<h1>Reset Password</h1>
|
|
15
|
+
</div>
|
|
16
|
+
|
|
17
|
+
<div class="panel panel-default">
|
|
18
|
+
<div class="panel-body">
|
|
19
|
+
<form method="post" action="/account/password/reset">
|
|
20
|
+
{{> shared/error}}
|
|
21
|
+
|
|
22
|
+
<div class="form-group">
|
|
23
|
+
{{#if multiuser}}
|
|
24
|
+
<p>Please enter your account name. A password reset link will be
|
|
25
|
+
emailed to the address you provided during account registration.</p>
|
|
26
|
+
|
|
27
|
+
<label class="control-label" for="username">Account Name:</label>
|
|
28
|
+
<input type="text" class="form-control" name="username" id="username"
|
|
29
|
+
placeholder="alice"/>
|
|
30
|
+
{{else}}
|
|
31
|
+
<p>A password reset link will be
|
|
32
|
+
emailed to the address you provided during account registration.</p>
|
|
33
|
+
{{/if}}
|
|
34
|
+
|
|
35
|
+
</div>
|
|
36
|
+
|
|
37
|
+
<button type="submit" class="btn btn-primary">Send Reset Link</button>
|
|
38
|
+
<input type="hidden" name="returnToUrl" value="{{{returnToUrl}}}"/>
|
|
39
|
+
</form>
|
|
40
|
+
</div>
|
|
41
|
+
</div>
|
|
42
|
+
|
|
43
|
+
<div class="panel panel-default">
|
|
44
|
+
<div class="panel-body">
|
|
45
|
+
New to Solid? <a href="/register{{#if returnToUrl}}?returnToUrl={{{returnToUrl}}}{{/if}}">Create an
|
|
46
|
+
account</a>
|
|
47
|
+
</div>
|
|
48
|
+
</div>
|
|
49
|
+
|
|
50
|
+
</div>
|
|
51
|
+
</body>
|
|
52
|
+
</html>
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
<!doctype html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8">
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
6
|
+
<title>{{title}}</title>
|
|
7
|
+
<!-- Bootstrap CSS and Theme for demo purposes -->
|
|
8
|
+
<link rel="stylesheet" href="/common/css/bootstrap.min.css">
|
|
9
|
+
<link rel="stylesheet" href="/common/css/solid.css">
|
|
10
|
+
</head>
|
|
11
|
+
<body>
|
|
12
|
+
<div class="container title">
|
|
13
|
+
<h1>Authorize {{app_origin}} to access your Pod?</h1>
|
|
14
|
+
<p>Solid allows you to precisely choose what other people and apps can read and write in a Pod. This version of the authorization user interface (node-solid-server V5.1) only supports the toggle of global access permissions to all of the data in your Pod.</p>
|
|
15
|
+
<p><strong>If you don’t want to set these permissions at a global level, uncheck all of the boxes below, then click authorize.</strong> This will add the application origin to your authorization list, without granting it permission to any of your data yet. You will then need to manage those permissions yourself by setting them explicitly in the places you want this application to access.</p>
|
|
16
|
+
<div class="panel panel-default">
|
|
17
|
+
<div class="panel-body">
|
|
18
|
+
<div class="page-title">
|
|
19
|
+
<p>By clicking Authorize, any app from {{app_origin}} will be able to:</p>
|
|
20
|
+
</div>
|
|
21
|
+
<form method="post" action="/sharing">
|
|
22
|
+
|
|
23
|
+
<input id="read" type="checkbox" name="access_mode" value="Read" checked>
|
|
24
|
+
<label for="read">Read all documents in the Pod</label>
|
|
25
|
+
<br>
|
|
26
|
+
|
|
27
|
+
<input id="append" type="checkbox" name="access_mode" value="Append" checked>
|
|
28
|
+
<label for="append">Add data to existing documents, and create new documents</label>
|
|
29
|
+
<br>
|
|
30
|
+
|
|
31
|
+
<input id="write" type="checkbox" name="access_mode" value="Write" checked>
|
|
32
|
+
<label for="write">Modify and delete data in existing documents, and delete documents</label>
|
|
33
|
+
<br>
|
|
34
|
+
|
|
35
|
+
<input id="control" type="checkbox" name="access_mode" value="Control">
|
|
36
|
+
<label for="control">Give other people and apps access to the Pod, or revoke their (and your) access</label>
|
|
37
|
+
<br>
|
|
38
|
+
<br>
|
|
39
|
+
|
|
40
|
+
<button type="submit" class="btn btn-primary" name="consent" value="true">Authorize</button>
|
|
41
|
+
<button type="submit" class="btn btn-default" name="cancel" value="true">Cancel</button>
|
|
42
|
+
{{> auth/auth-hidden-fields}}
|
|
43
|
+
</form>
|
|
44
|
+
</div>
|
|
45
|
+
</div>
|
|
46
|
+
<p><i>This server (node-solid-server V5.1) only implements a limited subset of OpenID Connect, and doesn’t yet support token issuance for applications. OIDC Token Issuance and fine-grained management through this authorization user interface is currently in the development backlog for node-solid-server</i></p>
|
|
47
|
+
</div>
|
|
48
|
+
</body>
|
|
49
|
+
</html>
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
# How to delete your account
|
|
2
|
+
|
|
3
|
+
If you wish you delete your account at a multi-user pod provider that runs the node-solid-server software
|
|
4
|
+
(like currently https://solid.community and https://inrupt.net), you can do that as follows:
|
|
5
|
+
|
|
6
|
+
### Browse to your pod
|
|
7
|
+
Step 1 is to go to your pod with your web browser. In this example, the pod provider is https://solid.community
|
|
8
|
+
and the username is 'demo-account-deletion'. So in that case you would go to https://demo-account-deletion.solid.community/.
|
|
9
|
+
|
|
10
|
+
Make sure you include your username as a subdomain there, so not just https://solid.community/ which would be the
|
|
11
|
+
pod provider's main page, not your account / pod.
|
|
12
|
+
Fill in your own identity provider URL and insert your own username in there, just after the 'https://' part of the URL.
|
|
13
|
+
|
|
14
|
+

|
|
15
|
+
|
|
16
|
+
### Log in
|
|
17
|
+
|
|
18
|
+
When you click 'Log in', it will ask you (in a pop-up window) which identity provider to log in with; choose your own pod, in this example
|
|
19
|
+
'demo-account-deletion.solid.community'.
|
|
20
|
+
|
|
21
|
+

|
|
22
|
+
|
|
23
|
+
And fill in your username and password to log in:
|
|
24
|
+
|
|
25
|
+

|
|
26
|
+
|
|
27
|
+
The pop-up will close, and you will be logged in:
|
|
28
|
+
|
|
29
|
+

|
|
30
|
+
|
|
31
|
+
### Go to Preferences
|
|
32
|
+
|
|
33
|
+
Click 'Preferences', which should take you to:
|
|
34
|
+
|
|
35
|
+

|
|
36
|
+
|
|
37
|
+
### Click 'Delete your account at ...'
|
|
38
|
+
|
|
39
|
+
That should take you to:
|
|
40
|
+

|
|
41
|
+
|
|
42
|
+
Fill in your account name and click 'Send Delete Account link'. Note that as a security measure, this requires you (still) have access to the email
|
|
43
|
+
address with which the account was created.
|
|
44
|
+

|
|
45
|
+
|
|
46
|
+
### Open your email
|
|
47
|
+
|
|
48
|
+
When you click the link from the email, you should see this screen:
|
|
49
|
+

|
|
50
|
+
|
|
51
|
+
### Confirm deletion
|
|
52
|
+
|
|
53
|
+
After which the account deletion will be complete:
|
|
54
|
+

|
|
55
|
+
|
|
56
|
+
|