16941: Multi-site search recognizes inactive remote users
authorPeter Amstutz <peter.amstutz@curii.com>
Fri, 2 Oct 2020 15:19:08 +0000 (11:19 -0400)
committerPeter Amstutz <peter.amstutz@curii.com>
Fri, 2 Oct 2020 15:19:08 +0000 (11:19 -0400)
Arvados-DCO-1.1-Signed-off-by: Peter Amstutz <peter.amstutz@curii.com>

src/models/session.ts
src/services/auth-service/auth-service.ts
src/store/auth/auth-action-session.ts
src/views/search-results-panel/search-results-panel-view.tsx
src/views/site-manager-panel/site-manager-panel-root.tsx

index d388f59926e0f1235f3c3aef0101252b24d03fe0..630b63d93f513d06fd503d075ca6f6f3c238bdbe 100644 (file)
@@ -19,5 +19,6 @@ export interface Session {
     loggedIn: boolean;
     status: SessionStatus;
     active: boolean;
+    userIsActive: boolean;
     apiRevision: number;
 }
index 5e382fba85bb129d1cff1f3d587990e468f1b63b..294424013bcf5de46455ac2d77d274312dbb9fb8 100644 (file)
@@ -141,8 +141,9 @@ export class AuthService {
             clusterId: cfg.uuidPrefix,
             remoteHost: cfg.rootUrl,
             baseUrl: cfg.baseUrl,
-            name: user ? getUserDisplayName(user): '',
+            name: user ? getUserDisplayName(user) : '',
             email: user ? user.email : '',
+            userIsActive: user ? user.isActive : false,
             token: this.getApiToken(),
             loggedIn: true,
             active: true,
index 4568d77eafb572ff1e62eff77fc5fcea4ee7a9d9..5fc8cffb0da1b540b80b810f56ec7cf4f002259a 100644 (file)
@@ -130,6 +130,7 @@ export const validateSession = (session: Session, activeSession: Session) =>
             session.baseUrl = baseUrl;
             session.token = token;
             session.email = user.email;
+            session.userIsActive = user.isActive;
             session.uuid = user.uuid;
             session.name = getUserDisplayName(user);
             session.loggedIn = true;
@@ -242,6 +243,7 @@ export const addSession = (remoteHost: string, token?: string, sendToLogin?: boo
                     status: SessionStatus.VALIDATED,
                     active: false,
                     email: user.email,
+                    userIsActive: user.isActive,
                     name: getUserDisplayName(user),
                     uuid: user.uuid,
                     baseUrl: config.baseUrl,
index 8bc5419b854fce5091401316b6d68795ce235c7f..6a02f8e1dc44c4c01fe8d582f5d20f0132b62af7 100644 (file)
@@ -114,7 +114,8 @@ export const searchResultsPanelColumns: DataColumns<string> = [
 export const SearchResultsPanelView = withStyles(styles, { withTheme: true })(
     (props: SearchResultsPanelProps & WithStyles<CssRules, true>) => {
         const homeCluster = props.user.uuid.substr(0, 5);
-        const loggedIn = props.sessions.filter((ss) => ss.loggedIn);
+        console.log(props.sessions);
+        const loggedIn = props.sessions.filter((ss) => ss.loggedIn && ss.userIsActive);
         return <DataExplorer
             id={SEARCH_RESULTS_PANEL_ID}
             onRowClick={props.onItemClick}
index 223e373c58187e34bd3b3f5ea8dfce7ae1c9ec88..e6cc5b23e2a96d17a70575922303a1ef1c1f0330 100644 (file)
@@ -158,7 +158,10 @@ export const SiteManagerPanelRoot = compose(
                                             disabled={validating || session.status === SessionStatus.INVALIDATED || session.active}
                                             className={session.loggedIn ? classes.buttonLoggedIn : classes.buttonLoggedOut}
                                             onClick={() => toggleSession(session)}>
-                                            {validating ? "Validating" : (session.loggedIn ? "Logged in" : "Logged out")}
+                                            {validating ? "Validating"
+                                                : (session.loggedIn ?
+                                                    (session.userIsActive ? "Logged in" : "Inactive")
+                                                    : "Logged out")}
                                         </Button>
                                     </TableCell>
                                     <TableCell>