|
20 | 20 | </div> |
21 | 21 | </nav> |
22 | 22 |
|
23 | | - |
24 | 23 | <p class="lead"> |
25 | 24 | <span> |
26 | 25 | This is a public homepage of {{#if name}}{{name}}, whose WebID is{{else}}a user with WebID{{/if}} |
@@ -54,26 +53,49 @@ <h1>Apps</h1> |
54 | 53 | </a> |
55 | 54 | </div> |
56 | 55 | </section> |
| 56 | + |
| 57 | + <section class="hidden" id="account-settings"> |
| 58 | + <h1>Account settings</h1> |
| 59 | + <div class="list-group"> |
| 60 | + <a href="/account/delete/" class="list-group-item"> |
| 61 | + <span class="lead">Delete account</span> |
| 62 | + </a> |
| 63 | + </div> |
| 64 | + </section> |
57 | 65 | </div> |
58 | 66 |
|
59 | 67 | <script src="/common/js/solid-auth-client.bundle.js"></script> |
60 | 68 | <script type="text/javascript"> |
61 | 69 | (function () { |
62 | | - 'use strict' |
63 | | - var button = document.getElementById('session-action') |
64 | | - var loggedIn = false |
| 70 | + 'use strict'; |
| 71 | + var button = document.getElementById('session-action'); |
| 72 | + var loggedIn = false; |
| 73 | + var accountSettings = document.getElementById('account-settings'); |
65 | 74 |
|
66 | | - solid.auth.trackSession(session => { |
67 | | - loggedIn = !!session |
68 | | - button.innerText = loggedIn ? 'Log out' : 'Log in' |
| 75 | + solid.auth.trackSession(function(session) { |
| 76 | + loggedIn = !!session; |
| 77 | + button.innerText = loggedIn ? 'Log out' : 'Log in'; |
69 | 78 | button.classList.remove('btn-default'); |
70 | | - button.classList.add(loggedIn ? 'btn-danger' : 'btn-primary') |
71 | | - }) |
| 79 | + button.classList.add(loggedIn ? 'btn-danger' : 'btn-primary'); |
| 80 | + if (loggedIn) { |
| 81 | + var sessionOrigin = getOriginFromWebId(session.webId); |
| 82 | + var isOwner = sessionOrigin === location.origin; |
| 83 | + accountSettings.classList.toggle('hidden', !isOwner); |
| 84 | + } |
| 85 | + }); |
72 | 86 |
|
73 | 87 | button.addEventListener('click', function () { |
74 | | - loggedIn ? solid.auth.logout() : solid.auth.popupLogin() |
75 | | - }) |
76 | | - })() |
| 88 | + loggedIn ? solid.auth.logout() : solid.auth.popupLogin(); |
| 89 | + }); |
| 90 | + |
| 91 | + function getOriginFromWebId(webId) { |
| 92 | + if (window.URL.prototype) { |
| 93 | + return new URL(webId).origin; |
| 94 | + } |
| 95 | + var uriParts = webId.split('/'); |
| 96 | + return uriParts[0] + '//' + uriParts[2]; |
| 97 | + } |
| 98 | + })(); |
77 | 99 | </script> |
78 | 100 | </body> |
79 | 101 | </html> |
0 commit comments