This is an automated email from the ASF dual-hosted git repository.

marat pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel-karavan.git

commit 4f1c636bbee371b7735f100febf7dad583785249
Author: Marat Gubaidullin <marat.gubaidul...@gmail.com>
AuthorDate: Mon Sep 19 13:32:16 2022 -0400

    Show user info
---
 karavan-app/src/main/webapp/src/Main.tsx           | 26 +++++++++++++++++-----
 karavan-app/src/main/webapp/src/api/KaravanApi.tsx |  1 +
 2 files changed, 22 insertions(+), 5 deletions(-)

diff --git a/karavan-app/src/main/webapp/src/Main.tsx 
b/karavan-app/src/main/webapp/src/Main.tsx
index bd4af70..7856b93 100644
--- a/karavan-app/src/main/webapp/src/Main.tsx
+++ b/karavan-app/src/main/webapp/src/Main.tsx
@@ -10,7 +10,7 @@ import {
     FlexItem,
     Avatar,
     Tooltip,
-    Divider, Spinner, Bullseye
+    Divider, Spinner, Bullseye, Popover, Badge
 } from '@patternfly/react-core';
 import {KaravanApi} from "./api/KaravanApi";
 import {SsoApi} from "./api/SsoApi";
@@ -26,7 +26,6 @@ import {EipPage} from "./eip/EipPage";
 import {ProjectsPage} from "./projects/ProjectsPage";
 import {Project} from "./projects/ProjectModels";
 import {ProjectPage} from "./projects/ProjectPage";
-import UsersIcon from "@patternfly/react-icons/dist/js/icons/users-icon";
 import UserIcon from "@patternfly/react-icons/dist/js/icons/user-icon";
 import ProjectsIcon from 
"@patternfly/react-icons/dist/js/icons/repository-icon";
 import KameletsIcon from "@patternfly/react-icons/dist/js/icons/registry-icon";
@@ -77,6 +76,7 @@ interface State {
     request: string,
     filename: string,
     key: string,
+    showUser?: boolean,
 }
 
 export class Main extends React.Component<Props, State> {
@@ -182,9 +182,25 @@ export class Main extends React.Component<Props, State> {
             <FlexItem flex={{default:"flex_2"}} 
alignSelf={{default:"alignSelfCenter"}}>
                 <Divider/>
             </FlexItem>
-            {KaravanApi.authType !== 'public' && <FlexItem 
alignSelf={{default:"alignSelfCenter"}}>
-                <UserIcon className="avatar"/>
-            </FlexItem>}
+            {KaravanApi.authType !== 'public' &&
+                <FlexItem alignSelf={{default:"alignSelfCenter"}}>
+                    <Popover
+                        aria-label="Current user"
+                        position={"right-end"}
+                        hideOnOutsideClick={false}
+                        isVisible={this.state.showUser === true}
+                        shouldClose={tip => this.setState({showUser: false})}
+                        shouldOpen={tip => this.setState({showUser: true})}
+                        headerContent={<div>{KaravanApi.me.userName}</div>}
+                        bodyContent={
+                            <Flex direction={{default:"row"}}>
+                                {KaravanApi.me.roles && 
Array.isArray(KaravanApi.me.roles) && KaravanApi.me.roles.map((role: string) => 
<Badge isRead>{role}</Badge>)}
+                            </Flex>
+                        }
+                    >
+                        <UserIcon className="avatar"/>
+                    </Popover>
+                </FlexItem>}
         </Flex>)
     }
 
diff --git a/karavan-app/src/main/webapp/src/api/KaravanApi.tsx 
b/karavan-app/src/main/webapp/src/api/KaravanApi.tsx
index ffb22b1..ef4c0d8 100644
--- a/karavan-app/src/main/webapp/src/api/KaravanApi.tsx
+++ b/karavan-app/src/main/webapp/src/api/KaravanApi.tsx
@@ -107,6 +107,7 @@ export class KaravanApi {
             .then(res => {
                 if (res.status === 200) {
                     KaravanApi.isAuthorized = true;
+                    KaravanApi.me = res.data;
                     after(res);
                 }
             }).catch(err => {

Reply via email to