diff --git a/packages/web/src/helpers/errors.js b/packages/web/src/helpers/errors.js
deleted file mode 100644
index dc73867d..00000000
--- a/packages/web/src/helpers/errors.js
+++ /dev/null
@@ -1,18 +0,0 @@
-// Helpers to extract errors received from the API
-
-export const getGeneralErrorMessage = ({ error, fallbackMessage }) => {
- if (!error) {
- return;
- }
-
- const errors = error?.response?.data?.errors;
- const generalError = errors?.general;
-
- if (generalError && Array.isArray(generalError)) {
- return generalError.join(' ');
- }
-
- if (!errors) {
- return error?.message || fallbackMessage;
- }
-};
diff --git a/packages/web/src/locales/en.json b/packages/web/src/locales/en.json
index b03c96e0..6a1bd9f6 100644
--- a/packages/web/src/locales/en.json
+++ b/packages/web/src/locales/en.json
@@ -283,7 +283,6 @@
"authenticationForm.successfullySaved": "The provider has been saved.",
"authenticationForm.save": "Save",
"authenticationForm.mandatoryInput": "{inputName} is required.",
- "authenticationForm.error": "Failed while saving!",
"roleMappingsForm.title": "Role mappings",
"roleMappingsForm.remoteRoleName": "Remote role name",
"roleMappingsForm.role": "Role",
@@ -291,7 +290,6 @@
"roleMappingsForm.save": "Save",
"roleMappingsForm.notFound": "No role mappings have been found.",
"roleMappingsForm.successfullySaved": "Role mappings have been saved.",
- "roleMappingsForm.error": "Failed while saving!",
"adminApps.title": "Apps",
"adminApps.connections": "Connections",
"adminApps.oauthClients": "OAuth clients",
diff --git a/packages/web/src/pages/Authentication/RoleMappings.jsx b/packages/web/src/pages/Authentication/RoleMappings.jsx
index 8fd19c94..f306a0f7 100644
--- a/packages/web/src/pages/Authentication/RoleMappings.jsx
+++ b/packages/web/src/pages/Authentication/RoleMappings.jsx
@@ -4,7 +4,7 @@ import Divider from '@mui/material/Divider';
import Stack from '@mui/material/Stack';
import Typography from '@mui/material/Typography';
import Alert from '@mui/material/Alert';
-import { useMemo } from 'react';
+import { useMemo, useState } from 'react';
import { yupResolver } from '@hookform/resolvers/yup';
import * as yup from 'yup';
@@ -13,7 +13,6 @@ import useFormatMessage from 'hooks/useFormatMessage';
import useAdminSamlAuthProviderRoleMappings from 'hooks/useAdminSamlAuthProviderRoleMappings';
import useAdminUpdateSamlAuthProviderRoleMappings from 'hooks/useAdminUpdateSamlAuthProviderRoleMappings';
import RoleMappingsFieldArray from './RoleMappingsFieldsArray';
-import { getGeneralErrorMessage } from 'helpers/errors';
function generateFormRoleMappings(roleMappings) {
if (roleMappings?.length === 0) {
@@ -77,9 +76,11 @@ function RoleMappings({ provider, providerLoading }) {
});
const roleMappings = data?.data;
const fieldNames = ['remoteRoleName', 'roleId'];
+ const [fieldErrors, setFieldErrors] = useState(null);
- const handleRoleMappingsUpdate = async (values, e, setError) => {
+ const handleRoleMappingsUpdate = async (values) => {
try {
+ setFieldErrors(null);
if (provider?.id) {
await updateRoleMappings(
values.roleMappings.map(({ roleId, remoteRoleName }) => ({
@@ -93,25 +94,14 @@ function RoleMappings({ provider, providerLoading }) {
if (errors) {
Object.entries(errors).forEach(([fieldName, fieldErrors]) => {
if (fieldNames.includes(fieldName) && Array.isArray(fieldErrors)) {
- setError(`root.${fieldName}`, {
- type: 'fieldRequestError',
- message: `${fieldName}: ${fieldErrors.join(', ')}`,
- });
+ setFieldErrors((prevErrors) => [
+ ...(prevErrors || []),
+ `${fieldName}: ${fieldErrors.join(', ')}`,
+ ]);
}
});
}
-
- const generalError = getGeneralErrorMessage({
- error,
- fallbackMessage: formatMessage('roleMappingsForm.error'),
- });
-
- if (generalError) {
- setError('root.general', {
- type: 'requestError',
- message: generalError,
- });
- }
+ throw errors || error;
}
};
@@ -123,14 +113,22 @@ function RoleMappings({ provider, providerLoading }) {
);
const renderErrors = (errors) => {
- const rootErrors = errors?.root;
- if (rootErrors) {
- return Object.values(rootErrors).map((error, index) => (
+ const generalError = errors?.root?.general?.message;
+ if (fieldErrors) {
+ return fieldErrors.map((error, index) => (
- {error.message}
+ {error}
));
}
+
+ if (generalError) {
+ return (
+
+ {generalError}
+
+ );
+ }
};
if (
diff --git a/packages/web/src/pages/Authentication/SamlConfiguration.jsx b/packages/web/src/pages/Authentication/SamlConfiguration.jsx
index d9d82e56..73ff8c2d 100644
--- a/packages/web/src/pages/Authentication/SamlConfiguration.jsx
+++ b/packages/web/src/pages/Authentication/SamlConfiguration.jsx
@@ -15,7 +15,6 @@ import useFormatMessage from 'hooks/useFormatMessage';
import useAdminCreateSamlAuthProvider from 'hooks/useAdminCreateSamlAuthProvider';
import useAdminUpdateSamlAuthProvider from 'hooks/useAdminUpdateSamlAuthProvider';
import useRoles from 'hooks/useRoles.ee';
-import { getGeneralErrorMessage } from 'helpers/errors';
const defaultValues = {
active: false,
@@ -119,7 +118,7 @@ function SamlConfiguration({ provider, providerLoading }) {
const isSuccess =
isCreateSamlAuthProviderSuccess || isUpdateSamlAuthProviderSuccess;
- const handleSubmit = async (providerData, e, setError) => {
+ const handleSubmit = async (providerData) => {
try {
if (provider?.id) {
await updateSamlAuthProvider(providerData);
@@ -128,29 +127,7 @@ function SamlConfiguration({ provider, providerLoading }) {
}
} catch (error) {
const errors = error?.response?.data?.errors;
- if (errors) {
- const fieldNames = Object.keys(defaultValues);
- Object.entries(errors).forEach(([fieldName, fieldErrors]) => {
- if (fieldNames.includes(fieldName) && Array.isArray(fieldErrors)) {
- setError(fieldName, {
- type: 'fieldRequestError',
- message: fieldErrors.join(', '),
- });
- }
- });
- }
-
- const generalError = getGeneralErrorMessage({
- error,
- fallbackMessage: formatMessage('authenticationForm.error'),
- });
-
- if (generalError) {
- setError('root.general', {
- type: 'requestError',
- message: generalError,
- });
- }
+ throw errors || error;
}
};