Skip to content

feat: create and modify organization groups #13887

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 14 commits into from
Jul 22, 2024
Prev Previous commit
Next Next commit
fix a bunch of stuff
  • Loading branch information
aslilac committed Jul 17, 2024
commit 46cb3c7c60e4c5cdd6cf19de082b0c53a1fa8fbc
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ export const CreateGroupPage: FC = () => {
<CreateGroupPageView
onSubmit={async (data) => {
const newGroup = await createGroupMutation.mutateAsync(data);
navigate(`/groups/${newGroup.name}`);
navigate(`/organizations/${organization}/groups/${newGroup.name}`);
}}
error={createGroupMutation.error}
isLoading={createGroupMutation.isLoading}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -212,7 +212,7 @@ export const GroupPage: FC = () => {
try {
await deleteGroupMutation.mutateAsync(groupId);
displaySuccess("Group deleted successfully.");
navigate("/groups");
navigate("..");
} catch (error) {
displayError(getErrorMessage(error, "Failed to delete group."));
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,9 @@ import { ErrorAlert } from "components/Alert/ErrorAlert";
import { displayError } from "components/GlobalSnackbar/utils";
import { Loader } from "components/Loader/Loader";
import { pageTitle } from "utils/page";
import SettingsGroupPageView from "./SettingsGroupPageView";
import GroupSettingsPageView from "./GroupSettingsPageView";

export const SettingsGroupPage: FC = () => {
export const GroupSettingsPage: FC = () => {
const { organization, groupName } = useParams() as {
organization: string;
groupName: string;
Expand Down Expand Up @@ -48,7 +48,7 @@ export const SettingsGroupPage: FC = () => {
<>
{helmet}

<SettingsGroupPageView
<GroupSettingsPageView
onCancel={navigateToGroup}
onSubmit={async (data) => {
try {
Expand All @@ -58,7 +58,7 @@ export const SettingsGroupPage: FC = () => {
add_users: [],
remove_users: [],
});
navigate(`/groups/${data.name}`, { replace: true });
navigate(`../${data.name}`);
} catch (error) {
displayError(getErrorMessage(error, "Failed to update group"));
}
Expand All @@ -71,4 +71,4 @@ export const SettingsGroupPage: FC = () => {
</>
);
};
export default SettingsGroupPage;
export default GroupSettingsPage;
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
import { action } from "@storybook/addon-actions";
import type { Meta, StoryObj } from "@storybook/react";
import { MockGroup } from "testHelpers/entities";
import { SettingsGroupPageView } from "./SettingsGroupPageView";
import GroupSettingsPageView from "./GroupSettingsPageView";

const meta: Meta<typeof SettingsGroupPageView> = {
title: "pages/GroupsPage/SettingsGroupPageView",
component: SettingsGroupPageView,
const meta: Meta<typeof GroupSettingsPageView> = {
title: "pages/GroupsPage/GroupSettingsPageView",
component: GroupSettingsPageView,
args: {
onCancel: action("onCancel"),
group: MockGroup,
Expand All @@ -14,8 +14,8 @@ const meta: Meta<typeof SettingsGroupPageView> = {
};

export default meta;
type Story = StoryObj<typeof SettingsGroupPageView>;
type Story = StoryObj<typeof GroupSettingsPageView>;

const Example: Story = {};

export { Example as SettingsGroupPageView };
export { Example as GroupSettingsPageView };
Original file line number Diff line number Diff line change
Expand Up @@ -68,15 +68,12 @@ const UpdateGroupForm: FC<UpdateGroupFormProps> = ({
label="Name"
disabled={isEveryoneGroup(group)}
/>
{isEveryoneGroup(group) ? (
<></>
) : (
{!isEveryoneGroup(group) && (
<>
<TextField
{...getFieldHelpers("display_name", {
helperText: "Optional: keep empty to default to the name.",
})}
onChange={onChangeTrimmed(form)}
autoComplete="display_name"
autoFocus
fullWidth
Expand Down Expand Up @@ -120,7 +117,7 @@ export type SettingsGroupPageViewProps = {
isUpdating: boolean;
};

export const SettingsGroupPageView: FC<SettingsGroupPageViewProps> = ({
const GroupSettingsPageView: FC<SettingsGroupPageViewProps> = ({
onCancel,
onSubmit,
group,
Expand All @@ -145,4 +142,4 @@ export const SettingsGroupPageView: FC<SettingsGroupPageViewProps> = ({
);
};

export default SettingsGroupPageView;
export default GroupSettingsPageView;
Original file line number Diff line number Diff line change
Expand Up @@ -9,17 +9,18 @@
import { displayError } from "components/GlobalSnackbar/utils";
import { PageHeader, PageHeaderTitle } from "components/PageHeader/PageHeader";
import { useAuthenticated } from "contexts/auth/RequireAuth";
import { useDashboard } from "modules/dashboard/useDashboard";

Check failure on line 12 in site/src/pages/ManagementSettingsPage/GroupsPage/GroupsPage.tsx

View workflow job for this annotation

GitHub Actions / lint

'useDashboard' is defined but never used. Allowed unused vars must match /^_/u

Check failure on line 12 in site/src/pages/ManagementSettingsPage/GroupsPage/GroupsPage.tsx

View workflow job for this annotation

GitHub Actions / lint

'useDashboard' is defined but never used. Allowed unused vars must match /^_/u

Check failure on line 12 in site/src/pages/ManagementSettingsPage/GroupsPage/GroupsPage.tsx

View workflow job for this annotation

GitHub Actions / fmt

'useDashboard' is defined but never used. Allowed unused vars must match /^_/u
import { useFeatureVisibility } from "modules/dashboard/useFeatureVisibility";
import { pageTitle } from "utils/page";
import GroupsPageView from "./GroupsPageView";
import { useOrganizationSettings } from "../ManagementSettingsLayout";

Check failure on line 16 in site/src/pages/ManagementSettingsPage/GroupsPage/GroupsPage.tsx

View workflow job for this annotation

GitHub Actions / lint

`../ManagementSettingsLayout` import should occur before import of `./GroupsPageView`

Check failure on line 16 in site/src/pages/ManagementSettingsPage/GroupsPage/GroupsPage.tsx

View workflow job for this annotation

GitHub Actions / lint

`../ManagementSettingsLayout` import should occur before import of `./GroupsPageView`

export const GroupsPage: FC = () => {
const { permissions } = useAuthenticated();
const { organizationId } = useDashboard();
const { currentOrganizationId } = useOrganizationSettings();
const { createGroup: canCreateGroup } = permissions;
const { template_rbac: isTemplateRBACEnabled } = useFeatureVisibility();
const groupsQuery = useQuery(groups(organizationId));
const groupsQuery = useQuery(groups(currentOrganizationId!));

useEffect(() => {
if (groupsQuery.error) {
Expand Down
8 changes: 0 additions & 8 deletions site/src/pages/ManagementSettingsPage/Sidebar.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -118,20 +118,12 @@ export const OrganizationSettingsNavigation: FC<
<SidebarNavSubItem end href={urlForSubpage(organization.name)}>
Organization settings
</SidebarNavSubItem>
<SidebarNavSubItem
href={urlForSubpage(organization.name, "external-auth")}
>
External authentication
</SidebarNavSubItem>
<SidebarNavSubItem href={urlForSubpage(organization.name, "members")}>
Members
</SidebarNavSubItem>
<SidebarNavSubItem href={urlForSubpage(organization.name, "groups")}>
Groups
</SidebarNavSubItem>
<SidebarNavSubItem href={urlForSubpage(organization.name, "metrics")}>
Metrics
</SidebarNavSubItem>
<SidebarNavSubItem
href={urlForSubpage(organization.name, "auditing")}
>
Expand Down
2 changes: 1 addition & 1 deletion site/src/router.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -237,7 +237,7 @@ const OrganizationGroupPage = lazy(
() => import("./pages/ManagementSettingsPage/GroupsPage/GroupPage"),
);
const OrganizationGroupSettingsPage = lazy(
() => import("./pages/ManagementSettingsPage/GroupsPage/SettingsGroupPage"),
() => import("./pages/ManagementSettingsPage/GroupsPage/GroupSettingsPage"),
);
const OrganizationMembersPage = lazy(
() => import("./pages/ManagementSettingsPage/OrganizationMembersPage"),
Expand Down
Loading