summaryrefslogtreecommitdiff
path: root/opendc-web/opendc-web-ui/src/components/AppHeaderTools.js
diff options
context:
space:
mode:
authorFabian Mastenbroek <mail.fabianm@gmail.com>2022-04-05 21:15:57 +0200
committerFabian Mastenbroek <mail.fabianm@gmail.com>2022-04-06 13:39:32 +0200
commit68d9003f8d8d2adcba43cad6366eca5365110e48 (patch)
tree8e9287ae4c738229e82ace3e9b39d33a2953f490 /opendc-web/opendc-web-ui/src/components/AppHeaderTools.js
parentf2ff40b5170260289e99e0506525f0905f380907 (diff)
feat(web/ui): Add support for unauthenticated user access
This change updates the web UI and API to support unauthenticated user access. Such functionality is helpful when there is just a single user that wants to try OpenDC.
Diffstat (limited to 'opendc-web/opendc-web-ui/src/components/AppHeaderTools.js')
-rw-r--r--opendc-web/opendc-web-ui/src/components/AppHeaderTools.js16
1 files changed, 11 insertions, 5 deletions
diff --git a/opendc-web/opendc-web-ui/src/components/AppHeaderTools.js b/opendc-web/opendc-web-ui/src/components/AppHeaderTools.js
index 02e5d265..3e58b209 100644
--- a/opendc-web/opendc-web-ui/src/components/AppHeaderTools.js
+++ b/opendc-web/opendc-web-ui/src/components/AppHeaderTools.js
@@ -39,7 +39,9 @@ import { useAuth } from '../auth'
import { GithubIcon, HelpIcon } from '@patternfly/react-icons'
function AppHeaderTools() {
- const auth = useAuth()
+ const { logout, user, isAuthenticated, isLoading } = useAuth()
+ const username = isAuthenticated || isLoading ? user?.name : 'Anonymous'
+ const avatar = isAuthenticated || isLoading ? user?.picture : '/img/avatar.svg'
const [isKebabDropdownOpen, setKebabDropdownOpen] = useState(false)
const kebabDropdownItems = [
@@ -56,7 +58,11 @@ function AppHeaderTools() {
const [isDropdownOpen, setDropdownOpen] = useState(false)
const userDropdownItems = [
<DropdownGroup key="group 2">
- <DropdownItem key="group 2 logout" onClick={() => auth.logout({ returnTo: window.location.origin })}>
+ <DropdownItem
+ key="group 2 logout"
+ isDisabled={!isAuthenticated}
+ onClick={() => logout({ returnTo: window.location.origin })}
+ >
Logout
</DropdownItem>
</DropdownGroup>,
@@ -105,7 +111,7 @@ function AppHeaderTools() {
isOpen={isDropdownOpen}
toggle={
<DropdownToggle onToggle={() => setDropdownOpen(!isDropdownOpen)}>
- {auth?.user?.name ?? (
+ {username ?? (
<Skeleton
fontSize="xs"
width="150px"
@@ -119,8 +125,8 @@ function AppHeaderTools() {
/>
</PageHeaderToolsItem>
</PageHeaderToolsGroup>
- {auth?.user?.picture ? (
- <Avatar src={auth.user.picture} alt="Avatar image" />
+ {avatar ? (
+ <Avatar src={avatar} alt="Avatar image" />
) : (
<Skeleton className="pf-c-avatar" shape="circle" width="2.25rem" screenreaderText="Loading avatar" />
)}