--- /dev/null
+// Copyright (C) The Arvados Authors. All rights reserved.
+//
+// SPDX-License-Identifier: AGPL-3.0
+
+import { RootState } from "store/store";
+import { ContextMenuResource } from "store/context-menu/context-menu-actions";
+import { getUserAccountStatus, UserAccountStatus } from "store/users/users-actions";
+import { matchMyAccountRoute, matchUserProfileRoute } from "routes/routes";
+
+export const isAdmin = (state: RootState, resource: ContextMenuResource) => {
+ return state.auth.user!.isAdmin;
+}
+
+export const canActivateUser = (state: RootState, resource: ContextMenuResource) => {
+ const status = getUserAccountStatus(state, resource.uuid);
+ return status === UserAccountStatus.INACTIVE ||
+ status === UserAccountStatus.SETUP;
+};
+
+export const canDeactivateUser = (state: RootState, resource: ContextMenuResource) => {
+ const status = getUserAccountStatus(state, resource.uuid);
+ return status === UserAccountStatus.SETUP ||
+ status === UserAccountStatus.ACTIVE;
+};
+
+export const canSetupUser = (state: RootState, resource: ContextMenuResource) => {
+ const status = getUserAccountStatus(state, resource.uuid);
+ return status === UserAccountStatus.INACTIVE;
+};
+
+export const needsUserProfileLink = (state: RootState, resource: ContextMenuResource) => (
+ state.router.location ?
+ !(matchUserProfileRoute(state.router.location.pathname)
+ || matchMyAccountRoute(state.router.location.pathname)
+ ) : true
+);
+
+export const isOtherUser = (state: RootState, resource: ContextMenuResource) => {
+ return state.auth.user!.uuid !== resource.uuid;
+};