← Back to team overview

sts-sponsors team mailing list archive

[Merge] ~petermakowski/maas-site-manager:update-login-request-data into maas-site-manager:main

 

Peter Makowski has proposed merging ~petermakowski/maas-site-manager:update-login-request-data into maas-site-manager:main.

Commit message:
update login request data

Requested reviews:
  MAAS Committers (maas-committers)

For more details, see:
https://code.launchpad.net/~petermakowski/maas-site-manager/+git/site-manager/+merge/441756
-- 
Your team MAAS Committers is requested to review the proposed merge of ~petermakowski/maas-site-manager:update-login-request-data into maas-site-manager:main.
diff --git a/frontend/src/api/handlers.ts b/frontend/src/api/handlers.ts
index af8f4a5..0c02e1f 100644
--- a/frontend/src/api/handlers.ts
+++ b/frontend/src/api/handlers.ts
@@ -15,11 +15,14 @@ export const postLogin = async (data: PostLoginData) => {
     throw Error("Missing required fields");
   }
   try {
-    const formData = new FormData();
-    formData.append("username", data.username);
-    formData.append("password", data.password);
-
-    const response = await api.post(urls.login, formData, { headers: { "Content-Type": "multipart/form-data" } });
+    const response = await api.post(
+      urls.login,
+      {
+        username: data.username,
+        password: data.password,
+      },
+      { headers: { "Content-Type": "multipart/form-data" } },
+    );
     return response.data;
   } catch (error) {
     throw error;
diff --git a/frontend/src/components/LoginForm/LoginForm.tsx b/frontend/src/components/LoginForm/LoginForm.tsx
index 85bd262..c53503a 100644
--- a/frontend/src/components/LoginForm/LoginForm.tsx
+++ b/frontend/src/components/LoginForm/LoginForm.tsx
@@ -28,6 +28,7 @@ const LoginForm = () => {
   const navigate = useNavigate();
   const [searchParams] = useSearchParams();
   const { login, isError, failureReason, status } = useAuthContext();
+  const failureDetails = failureReason?.response?.data?.detail;
   const handleRedirect = useCallback(() => {
     // send user back to the page they tried to visit
     // { replace: true } avoids going back to login page once authenticated
@@ -54,8 +55,8 @@ const LoginForm = () => {
         {isError ? (
           <Row>
             <Col emptyLarge={4} size={6}>
-              <Notification role="alert" severity="negative">
-                {failureReason?.response?.data?.detail ?? "An unknown error occurred."}
+              <Notification role="alert" severity="negative" title="Error">
+                {failureDetails && typeof failureDetails === "string" ? failureDetails : "An unknown error occurred"}
               </Notification>
             </Col>
           </Row>
diff --git a/frontend/src/hooks/api.ts b/frontend/src/hooks/api.ts
index 74d685f..f050ab7 100644
--- a/frontend/src/hooks/api.ts
+++ b/frontend/src/hooks/api.ts
@@ -61,6 +61,8 @@ export const useRequestsCountQuery = () =>
 export const useEnrollmentRequestsMutation = (
   options: UseMutationOptions<unknown, unknown, PostEnrollmentRequestsData, unknown>,
 ) => useMutation(patchEnrollmentRequests, options);
-
-export type LoginError = AxiosError<{ detail?: string }>;
+export type ApiError = AxiosError<{
+  detail?: string | Array<{ loc: string[]; msg: string; type: string }>;
+}>;
+export type LoginError = ApiError;
 export const useLoginMutation = (): UseMutationResult<AccessToken, LoginError, PostLoginData> => useMutation(postLogin);

Follow ups