Skip to content

Commit

Permalink
Fix oidc dashboard and enterprise modals (#956)
Browse files Browse the repository at this point in the history
* fix oidc dashboard and enterprise modals

* make max handshake higher

* Update useApi.tsx
  • Loading branch information
t-aleksander authored Jan 17, 2025
1 parent 455458b commit 0cec317
Show file tree
Hide file tree
Showing 9 changed files with 47 additions and 21 deletions.
2 changes: 1 addition & 1 deletion src/db/models/wireguard.rs
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ pub struct MappedDevice {
pub wireguard_ip: IpAddr,
}

pub const WIREGUARD_MAX_HANDSHAKE: TimeDelta = TimeDelta::minutes(5);
pub const WIREGUARD_MAX_HANDSHAKE: TimeDelta = TimeDelta::minutes(8);
pub const PEER_STATS_LIMIT: i64 = 6 * 60;

/// Defines datetime aggregation levels
Expand Down
9 changes: 6 additions & 3 deletions src/enterprise/handlers/openid_providers.rs
Original file line number Diff line number Diff line change
Expand Up @@ -119,12 +119,12 @@ pub async fn get_current_openid_provider(
_admin: AdminRole,
State(appstate): State<AppState>,
) -> ApiResult {
let settings = Settings::get_current_settings();
let create_account = settings.openid_create_account;
match OpenIdProvider::get_current(&appstate.pool).await? {
Some(mut provider) => {
// Get rid of it, it should stay on the backend only.
provider.google_service_account_key = None;
let settings = Settings::get_current_settings();
let create_account = settings.openid_create_account;
Ok(ApiResponse {
json: json!({
"provider": json!(provider),
Expand All @@ -134,7 +134,10 @@ pub async fn get_current_openid_provider(
})
}
None => Ok(ApiResponse {
json: json!({}),
json: json!({
"provider": null,
"settings": json!({ "create_account": create_account }),
}),
status: StatusCode::NO_CONTENT,
}),
}
Expand Down
4 changes: 2 additions & 2 deletions web/src/pages/settings/SettingsPage.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ export const SettingsPage = () => {
const handleTabClick = useCallback(
(tabIndex: number) => {
if (appInfo) {
if (enterpriseTabs.includes(tabIndex) && appInfo.license_info.enterprise) {
if (enterpriseTabs.includes(tabIndex) && !appInfo.license_info.enterprise) {
openUpgradeLicenseModal({
modalVariant: UpgradeLicenseModalVariant.ENTERPRISE_NOTICE,
});
Expand Down Expand Up @@ -147,7 +147,7 @@ export const SettingsPage = () => {
useEffect(() => {
if (
appInfo &&
appInfo.license_info.enterprise &&
!appInfo.license_info.enterprise &&
enterpriseTabs.includes(activeCard)
) {
setActiveCard(0);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,9 @@ import { useToaster } from '../../../../../shared/hooks/useToaster';
import { OpenIdProvider } from '../../../../../shared/types';
import { titleCase } from '../../../../../shared/utils/titleCase';

type FormFields = OpenIdProvider;
type FormFields = OpenIdProvider & {
create_account: boolean;
};

const SUPPORTED_SYNC_PROVIDERS = ['Google'];

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,11 +13,14 @@ import { useSettingsPage } from '../../../hooks/useSettingsPage';
export const OpenIdGeneralSettings = ({
formControl,
}: {
formControl: UseFormReturn<OpenIdProvider>;
formControl: UseFormReturn<
OpenIdProvider & {
create_account: boolean;
}
>;
}) => {
const { LL } = useI18nContext();
const localLL = LL.settingsPage.openIdSettings;

const settings = useSettingsPage((state) => state.settings);
const enterpriseEnabled = useAppStore((s) => s.appInfo?.license_info.enterprise);
if (!settings) return null;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,11 @@ export const OpenIdSettingsForm = ({
}: {
setCurrentProvider: (provider: OpenIdProvider | null) => void;
currentProvider: OpenIdProvider | null;
formControl: UseFormReturn<OpenIdProvider>;
formControl: UseFormReturn<
OpenIdProvider & {
create_account: boolean;
}
>;
}) => {
const { LL } = useI18nContext();
const localLL = LL.settingsPage.openIdSettings;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,20 +23,25 @@ import { DirsyncSettings } from './DirectorySyncSettings';
import { OpenIdGeneralSettings } from './OpenIdGeneralSettings';
import { OpenIdSettingsForm } from './OpenIdProviderSettings';

type FormFields = OpenIdProvider;
type FormFields = OpenIdProvider & {
create_account: boolean;
};

export const OpenIdSettingsRootForm = () => {
const { LL } = useI18nContext();
const localLL = LL.settingsPage.openIdSettings;
const [currentProvider, setCurrentProvider] = useState<OpenIdProvider | null>(null);
const [openIDSettings, setOpenIDSettings] = useState<{
create_account: boolean;
} | null>(null);
const queryClient = useQueryClient();
const enterpriseEnabled = useAppStore((s) => s.appInfo?.license_info.enterprise);

const {
settings: { fetchOpenIdProviders, addOpenIdProvider, deleteOpenIdProvider },
} = useApi();

const { isLoading, data: openidProvidersData } = useQuery({
const { isLoading, data: openidData } = useQuery({
queryFn: fetchOpenIdProviders,
queryKey: [QueryKeys.FETCH_OPENID_PROVIDERS],
refetchOnMount: true,
Expand All @@ -46,10 +51,13 @@ export const OpenIdSettingsRootForm = () => {
});

useEffect(() => {
if (openidProvidersData) {
setCurrentProvider(openidProvidersData);
if (openidData?.provider) {
setCurrentProvider(openidData?.provider);
}
if (openidData?.settings) {
setOpenIDSettings(openidData?.settings);
}
}, [openidProvidersData]);
}, [openidData]);

const toaster = useToaster();

Expand Down Expand Up @@ -123,9 +131,9 @@ export const OpenIdSettingsRootForm = () => {
directory_sync_admin_behavior:
currentProvider?.directory_sync_admin_behavior ?? 'keep',
directory_sync_target: currentProvider?.directory_sync_target ?? 'all',
create_account: currentProvider?.create_account ?? false,
create_account: openIDSettings?.create_account ?? false,
}),
[currentProvider],
[currentProvider, openIDSettings],
);

const formControl = useForm<FormFields>({
Expand Down
4 changes: 2 additions & 2 deletions web/src/shared/hooks/useApi.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ import {
Network,
NetworkToken,
OpenidClient,
OpenIdProvider,
OpenIdInfo,
Provisioner,
RemoveUserClientRequest,
ResetPasswordRequest,
Expand Down Expand Up @@ -412,7 +412,7 @@ const useApi = (props?: HookProps): ApiHook => {
client.post('/groups-assign', data).then(unpackRequest);

const fetchOpenIdProvider: ApiHook['settings']['fetchOpenIdProviders'] = async () =>
client.get<OpenIdProvider>(`/openid/provider`).then((res) => res.data);
client.get<OpenIdInfo>(`/openid/provider`).then((res) => res.data);

const addOpenIdProvider: ApiHook['settings']['addOpenIdProvider'] = async (data) =>
client.post(`/openid/provider`, data).then(unpackRequest);
Expand Down
10 changes: 8 additions & 2 deletions web/src/shared/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -572,7 +572,7 @@ export interface ApiHook {
getEnterpriseSettings: () => Promise<SettingsEnterprise>;
patchEnterpriseSettings: (data: Partial<SettingsEnterprise>) => EmptyApiResponse;
testLdapSettings: () => Promise<EmptyApiResponse>;
fetchOpenIdProviders: () => Promise<OpenIdProvider>;
fetchOpenIdProviders: () => Promise<OpenIdInfo>;
addOpenIdProvider: (data: OpenIdProvider) => Promise<EmptyApiResponse>;
deleteOpenIdProvider: (name: string) => Promise<EmptyApiResponse>;
editOpenIdProvider: (data: OpenIdProvider) => Promise<EmptyApiResponse>;
Expand Down Expand Up @@ -887,6 +887,13 @@ export interface OpenidClient {
enabled: boolean;
}

export interface OpenIdInfo {
settings: {
create_account: boolean;
};
provider?: OpenIdProvider;
}

export interface OpenIdProvider {
id: number;
name: string;
Expand All @@ -902,7 +909,6 @@ export interface OpenIdProvider {
directory_sync_user_behavior: 'keep' | 'disable' | 'delete';
directory_sync_admin_behavior: 'keep' | 'disable' | 'delete';
directory_sync_target: 'all' | 'users' | 'groups';
create_account: boolean;
}

export interface EditOpenidClientRequest {
Expand Down

0 comments on commit 0cec317

Please sign in to comment.