From 5661b93910e02862f59ad0115008da007ba1277d Mon Sep 17 00:00:00 2001 From: Matthias Mair Date: Fri, 10 Jan 2025 02:52:05 +0100 Subject: [PATCH] align names with allauth --- .../components/forms/AuthenticationForm.tsx | 14 ++++---- src/frontend/src/enums/ApiEndpoints.tsx | 20 +++++------ src/frontend/src/functions/auth.tsx | 8 ++--- .../src/pages/Auth/ChangePassword.tsx | 2 +- .../AccountSettings/SecurityContent.tsx | 35 ++++++++++--------- src/frontend/src/states/ApiState.tsx | 12 +++---- src/frontend/src/states/states.tsx | 2 +- 7 files changed, 48 insertions(+), 45 deletions(-) diff --git a/src/frontend/src/components/forms/AuthenticationForm.tsx b/src/frontend/src/components/forms/AuthenticationForm.tsx index e8e432c50f..d8eea8d392 100644 --- a/src/frontend/src/components/forms/AuthenticationForm.tsx +++ b/src/frontend/src/components/forms/AuthenticationForm.tsx @@ -35,9 +35,9 @@ export function AuthenticationForm() { }); const simpleForm = useForm({ initialValues: { email: '' } }); const [classicLoginMode, setMode] = useDisclosure(true); - const [auth_settings, sso_enabled, password_forgotten_enabled] = + const [auth_config, sso_enabled, password_forgotten_enabled] = useServerApiState((state) => [ - state.auth_settings, + state.auth_config, state.sso_enabled, state.password_forgotten_enabled ]); @@ -107,7 +107,7 @@ export function AuthenticationForm() { {sso_enabled() ? ( <> - {auth_settings?.socialaccount.providers.map((provider) => ( + {auth_config?.socialaccount.providers.map((provider) => ( ))} @@ -205,9 +205,9 @@ export function RegistrationForm() { } }); const navigate = useNavigate(); - const [auth_settings, registration_enabled, sso_registration] = + const [auth_config, registration_enabled, sso_registration] = useServerApiState((state) => [ - state.auth_settings, + state.auth_config, state.registration_enabled, state.sso_registration_enabled ]); @@ -228,7 +228,7 @@ export function RegistrationForm() { await ensureCsrf(); api - .post(apiUrl(ApiEndpoints.user_register), vals, { + .post(apiUrl(ApiEndpoints.auth_signup), vals, { headers: { Authorization: '' } }) .then((ret) => { @@ -321,7 +321,7 @@ export function RegistrationForm() { )} {sso_registration() && ( - {auth_settings?.socialaccount.providers.map((provider) => ( + {auth_config?.socialaccount.providers.map((provider) => ( ))} diff --git a/src/frontend/src/enums/ApiEndpoints.tsx b/src/frontend/src/enums/ApiEndpoints.tsx index dbf7cb94af..8898e02bb5 100644 --- a/src/frontend/src/enums/ApiEndpoints.tsx +++ b/src/frontend/src/enums/ApiEndpoints.tsx @@ -18,15 +18,16 @@ export enum ApiEndpoints { user_simple_login = 'email/generate/', user_reset = 'auth/password/reset/', // TODO change user_reset_set = 'auth/password/reset/confirm/', // TODO change - user_change_password = 'auth/v1/account/password/change', - user_sso = 'auth/v1/account/providers', - user_login = 'auth/v1/auth/login', - user_login_mfa = 'auth/v1/auth/2fa/authenticate', - user_logout = 'auth/v1/auth/session', - user_register = 'auth/v1/auth/signup', - user_mfa = 'auth/v1/account/authenticators', - user_emails = 'auth/v1/account/email', - login_provider_redirect = 'auth/v1/auth/provider/redirect', + auth_pwd_change = 'auth/v1/account/password/change', + auth_login = 'auth/v1/auth/login', + auth_login_2fa = 'auth/v1/auth/2fa/authenticate', + auth_session = 'auth/v1/auth/session', + auth_signup = 'auth/v1/auth/signup', + auth_authenticators = 'auth/v1/account/authenticators', + auth_email = 'auth/v1/account/email', + auth_providers = 'auth/v1/account/providers', + auth_provider_redirect = 'auth/v1/auth/provider/redirect', + auth_config = 'auth/v1/config', // Generic API endpoints currency_list = 'currency/exchange/', @@ -50,7 +51,6 @@ export enum ApiEndpoints { icons = 'icons/', selectionlist_list = 'selection/', selectionlist_detail = 'selection/:id/', - securtiy_settings = 'auth/v1/config', // Barcode API endpoints barcode = 'barcode/', diff --git a/src/frontend/src/functions/auth.tsx b/src/frontend/src/functions/auth.tsx index 56c24abf34..0878ff0993 100644 --- a/src/frontend/src/functions/auth.tsx +++ b/src/frontend/src/functions/auth.tsx @@ -74,7 +74,7 @@ export const doBasicLogin = async ( clearCsrfCookie(); await ensureCsrf(); - const login_url = apiUrl(ApiEndpoints.user_login); + const login_url = apiUrl(ApiEndpoints.auth_login); let loginDone = false; let success = false; @@ -129,7 +129,7 @@ export const doLogout = async (navigate: NavigateFunction) => { // Logout from the server session if (isLoggedIn() || !!getCsrfCookie()) { - await authApi(apiUrl(ApiEndpoints.user_logout), undefined, 'delete').catch( + await authApi(apiUrl(ApiEndpoints.auth_session), undefined, 'delete').catch( () => {} ); showLoginNotification({ @@ -203,7 +203,7 @@ export function handleMfaLogin( values: { code: string } ) { const { setToken } = useUserState.getState(); - authApi(apiUrl(ApiEndpoints.user_login_mfa), undefined, 'post', { + authApi(apiUrl(ApiEndpoints.auth_login_2fa), undefined, 'post', { code: values.code }).then((response) => { setToken(response.data.meta.access_token); @@ -300,7 +300,7 @@ export function ProviderLogin( process: process, csrfmiddlewaretoken: getCsrfCookie() }; - const url = `${host}${apiUrl(ApiEndpoints.login_provider_redirect)}`; + const url = `${host}${apiUrl(ApiEndpoints.auth_provider_redirect)}`; post(url, values); } diff --git a/src/frontend/src/pages/Auth/ChangePassword.tsx b/src/frontend/src/pages/Auth/ChangePassword.tsx index d603eef55d..4e2087501c 100644 --- a/src/frontend/src/pages/Auth/ChangePassword.tsx +++ b/src/frontend/src/pages/Auth/ChangePassword.tsx @@ -69,7 +69,7 @@ export default function Set_Password() { // Set password with call to backend api - .post(apiUrl(ApiEndpoints.user_change_password), { + .post(apiUrl(ApiEndpoints.auth_pwd_change), { current_password: simpleForm.values.current_password, new_password: simpleForm.values.new_password2 }) diff --git a/src/frontend/src/pages/Index/Settings/AccountSettings/SecurityContent.tsx b/src/frontend/src/pages/Index/Settings/AccountSettings/SecurityContent.tsx index 35250150f6..2ac832a3d9 100644 --- a/src/frontend/src/pages/Index/Settings/AccountSettings/SecurityContent.tsx +++ b/src/frontend/src/pages/Index/Settings/AccountSettings/SecurityContent.tsx @@ -22,12 +22,14 @@ import { YesNoButton } from '../../../../components/buttons/YesNoButton'; import { ApiEndpoints } from '../../../../enums/ApiEndpoints'; import { ProviderLogin, authApi } from '../../../../functions/auth'; import { apiUrl, useServerApiState } from '../../../../states/ApiState'; -import type { Provider, SecuritySetting } from '../../../../states/states'; +import type { AuthConfig, Provider } from '../../../../states/states'; export function SecurityContent() { - const [auth_settings, sso_enabled, mfa_enabled] = useServerApiState( - (state) => [state.auth_settings, state.sso_enabled, state.mfa_enabled] - ); + const [auth_config, sso_enabled, mfa_enabled] = useServerApiState((state) => [ + state.auth_config, + state.sso_enabled, + state.mfa_enabled + ]); return ( @@ -39,7 +41,7 @@ export function SecurityContent() { Single Sign On Accounts {sso_enabled() ? ( - + ) : ( } @@ -81,7 +83,7 @@ function EmailContent() { const { isLoading, data, refetch } = useQuery({ queryKey: ['emails'], queryFn: () => - authApi(apiUrl(ApiEndpoints.user_emails)).then((res) => res.data.data) + authApi(apiUrl(ApiEndpoints.auth_email)).then((res) => res.data.data) }); function runServerAction( @@ -90,7 +92,7 @@ function EmailContent() { ) { const vals: any = data || { email: value }; console.log('vals', vals); - authApi(apiUrl(ApiEndpoints.user_emails), undefined, action, vals) + authApi(apiUrl(ApiEndpoints.auth_email), undefined, action, vals) .then(() => { refetch(); }) @@ -198,18 +200,18 @@ function ProviderButton({ provider }: Readonly<{ provider: Provider }>) { } function SsoContent({ - auth_settings -}: Readonly<{ auth_settings: SecuritySetting | undefined }>) { + auth_config +}: Readonly<{ auth_config: AuthConfig | undefined }>) { const [value, setValue] = useState(''); const [currentProviders, setCurrentProviders] = useState(); const { isLoading, data, refetch } = useQuery({ queryKey: ['sso-list'], queryFn: () => - authApi(apiUrl(ApiEndpoints.user_sso)).then((res) => res.data.data) + authApi(apiUrl(ApiEndpoints.auth_providers)).then((res) => res.data.data) }); useEffect(() => { - if (auth_settings === undefined) return; + if (auth_config === undefined) return; if (data === undefined) return; const configuredProviders = data.map((item: any) => { @@ -220,16 +222,15 @@ function SsoContent({ } // remove providers that are used currently - const newData = - auth_settings.socialaccount.providers.filter(isAlreadyInUse); + const newData = auth_config.socialaccount.providers.filter(isAlreadyInUse); setCurrentProviders(newData); - }, [auth_settings, data]); + }, [auth_config, data]); function removeProvider() { const split = value.split('$'); const provider = split[split.length - 1]; const uid = split.slice(0, split.length - 1).join('$'); - authApi(apiUrl(ApiEndpoints.user_sso), undefined, 'delete', { + authApi(apiUrl(ApiEndpoints.auth_providers), undefined, 'delete', { provider: provider, account: uid }) @@ -303,7 +304,9 @@ function MfaContent() { const { isLoading, data, refetch } = useQuery({ queryKey: ['mfa-list'], queryFn: () => - api.get(apiUrl(ApiEndpoints.user_mfa)).then((res) => res.data.data) + api + .get(apiUrl(ApiEndpoints.auth_authenticators)) + .then((res) => res.data.data) }); function parseDate(date: number) { diff --git a/src/frontend/src/states/ApiState.tsx b/src/frontend/src/states/ApiState.tsx index 52b93ae7a6..c4e71e8f7f 100644 --- a/src/frontend/src/states/ApiState.tsx +++ b/src/frontend/src/states/ApiState.tsx @@ -4,13 +4,13 @@ import { createJSONStorage, persist } from 'zustand/middleware'; import { api } from '../App'; import { emptyServerAPI } from '../defaults/defaults'; import { ApiEndpoints } from '../enums/ApiEndpoints'; -import type { SecuritySetting, ServerAPIProps } from './states'; +import type { AuthConfig, ServerAPIProps } from './states'; interface ServerApiStateProps { server: ServerAPIProps; setServer: (newServer: ServerAPIProps) => void; fetchServerApiState: () => void; - auth_settings?: SecuritySetting; + auth_config?: AuthConfig; sso_enabled: () => boolean; mfa_enabled: () => boolean; registration_enabled: () => boolean; @@ -37,19 +37,19 @@ export const useServerApiState = create()( // Fetch login/SSO behaviour await api - .get(apiUrl(ApiEndpoints.securtiy_settings), { + .get(apiUrl(ApiEndpoints.auth_config), { headers: { Authorization: '' } }) .then((response) => { - set({ auth_settings: response.data.data }); + set({ auth_config: response.data.data }); }) .catch(() => { console.error('ERR: Error fetching SSO information'); }); }, - auth_settings: undefined, + auth_config: undefined, sso_enabled: () => { - const data = get().auth_settings?.socialaccount.providers; + const data = get().auth_config?.socialaccount.providers; return !(data === undefined || data.length == 0); }, mfa_enabled: () => { diff --git a/src/frontend/src/states/states.tsx b/src/frontend/src/states/states.tsx index c6b1fb26f1..5fceab9662 100644 --- a/src/frontend/src/states/states.tsx +++ b/src/frontend/src/states/states.tsx @@ -50,7 +50,7 @@ export interface ServerAPIProps { django_admin: null | string; } -export interface SecuritySetting { +export interface AuthConfig { account: { authentication_method: string; };