Skip to content

Commit c289744

Browse files
authored
Merge pull request #917 from rubensworks/polish/login-logout
Polish login-logout
2 parents cdfc636 + 691a0c2 commit c289744

File tree

2 files changed

+31
-25
lines changed

2 files changed

+31
-25
lines changed

default-templates/new-account/index.html

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,11 +80,15 @@ <h1>Account settings</h1>
8080
loggedIn = !!session;
8181
button.innerText = loggedIn ? 'Log out' : 'Log in';
8282
button.classList.remove('btn-default');
83+
button.classList.remove('btn-danger');
84+
button.classList.remove('btn-primary');
8385
button.classList.add(loggedIn ? 'btn-danger' : 'btn-primary');
8486
if (loggedIn) {
8587
var sessionOrigin = getOriginFromWebId(session.webId);
8688
var isOwner = sessionOrigin === location.origin;
8789
accountSettings.classList.toggle('hidden', !isOwner);
90+
} else {
91+
accountSettings.classList.toggle('hidden', true);
8892
}
8993
});
9094

default-templates/server/index.html

Lines changed: 27 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
<div class="pull-right">
1414
<a href="/register" class="btn btn-primary">Register</a>
1515

16-
<a onclick="login()" class="btn btn-success">Login</a>
16+
<button id="session-action" type="button" class="session-action btn btn-default">Loading...</button>
1717
</div>
1818

1919
<h1>Welcome to the Solid Prototype</h1>
@@ -51,33 +51,35 @@ <h2>Server info</h2>
5151
</div>
5252
<script src="/common/js/solid-auth-client.bundle.js"></script>
5353
<script>
54-
const elements = {};
55-
['loggedIn', 'profileLink'].forEach(id => {
56-
elements[id] = document.getElementById(id)
57-
})
54+
(function () {
55+
const elements = {};
56+
['loggedIn', 'profileLink'].forEach(id => {
57+
elements[id] = document.getElementById(id)
58+
})
59+
var button = document.getElementById('session-action')
60+
var loggedIn = false
5861

59-
async function login () {
60-
const session = await solid.auth.popupLogin()
61-
if (session) {
62-
// Make authenticated request to the server to establish a session cookie
63-
const {status} = await solid.auth.fetch(location)
64-
if (status === 401) {
65-
alert(`Invalid login.`)
66-
await solid.auth.logout()
62+
solid.auth.trackSession(async session => {
63+
loggedIn = !!session;
64+
button.innerText = loggedIn ? 'Log out' : 'Log in';
65+
button.classList.remove('btn-default');
66+
button.classList.remove('btn-danger');
67+
button.classList.remove('btn-success');
68+
button.classList.add(loggedIn ? 'btn-danger' : 'btn-success');
69+
if (!session) {
70+
elements.loggedIn.classList.add('hidden')
6771
}
68-
}
69-
}
72+
else {
73+
elements.loggedIn.classList.remove('hidden')
74+
elements.profileLink.innerText = session.webId
75+
elements.profileLink.href = session.webId
76+
}
77+
})
7078

71-
solid.auth.trackSession(async session => {
72-
if (!session) {
73-
elements.loggedIn.classList.add('hidden')
74-
}
75-
else {
76-
elements.loggedIn.classList.remove('hidden')
77-
elements.profileLink.innerText = session.webId
78-
elements.profileLink.href = session.webId
79-
}
80-
})
79+
button.addEventListener('click', function () {
80+
loggedIn ? solid.auth.logout() : solid.auth.popupLogin()
81+
})
82+
})();
8183
</script>
8284
</body>
8385
</html>

0 commit comments

Comments
 (0)