diff --git a/src/contexts/Auth/AuthState.jsx b/src/contexts/Auth/AuthState.jsx
index fd3694299bdb0b4a657fc9ec7f4637b1e1b14ea1..3fa34b50f8597e53ea3d7dc44e82bbff7a54a409 100755
--- a/src/contexts/Auth/AuthState.jsx
+++ b/src/contexts/Auth/AuthState.jsx
@@ -26,11 +26,22 @@ function AuthState({ children }) {
 
   // ### LOGIN
   async function login(credentials) {
-    const result = await api.post(
-      '/users/login',
-      credentials,
-      { withCredentials: true }
-    );
+    let result = {};
+    try {
+      result = await api.post(
+        '/users/login',
+        credentials,
+        { withCredentials: true }
+      );
+    } catch (error) {
+      result = await api.post(
+        '/users/adminlogin',
+        credentials,
+        { withCredentials: true }
+      );
+      // try to match output with normal user
+      result.data.record = { ...result.data.admin, isAdmin: true };
+    }
     // set current user to login and merge accessToken into currentUser
     dispatchCurrentUser({ type: USER_ACTIONS.SET, payload: { ...result.data.record } });
     setAccessToken(result.data.token);
diff --git a/src/pages/User/Login.jsx b/src/pages/User/Login.jsx
index d8d73a6ea4285808c4c2197677727ea5dba22016..0dbd5c024e9238ce3dd13d8c4d838b22ea8908e1 100644
--- a/src/pages/User/Login.jsx
+++ b/src/pages/User/Login.jsx
@@ -34,7 +34,7 @@ function Login() {
   // ### PREPARE FORM
   const methods = useForm({
     resolver: zodResolver(schema),
-    mode: 'onBlur',
+    mode: 'onSubmit',
     defaultValues: {
       email: '',
       password: ''
@@ -106,7 +106,7 @@ function Login() {
 
       <div className="mt-4 flex justify-between">
         <Link to="/reset_password">Reset Password</Link>
-        <Link to="/signup">Create an account</Link>
+        <Link to="/signup">Create account</Link>
       </div>
     </>
   );
diff --git a/src/pages/User/ResetPassword.jsx b/src/pages/User/ResetPassword.jsx
index 1950c9c7189f7ac947421156e54e837ef25150f4..29d006714e320e0600867e81b46eee12fa1eb3b7 100644
--- a/src/pages/User/ResetPassword.jsx
+++ b/src/pages/User/ResetPassword.jsx
@@ -38,7 +38,7 @@ function ResetPasswordForm() {
   // ### PREPARE FORM
   const methods = useForm({
     resolver: zodResolver(schema),
-    mode: 'onBlur',
+    mode: 'onSubmit',
     defaultValues: {
       token: token,
     }
diff --git a/src/pages/User/Signup.jsx b/src/pages/User/Signup.jsx
index 9823a68a1f1178bafaed90b710025b5a6a28c02d..d3eb5da3c879e7b26f774a3b33f07a61526999ce 100644
--- a/src/pages/User/Signup.jsx
+++ b/src/pages/User/Signup.jsx
@@ -43,7 +43,7 @@ function Signup() {
   // ### PREPARE FORM
   const methods = useForm({
     resolver: zodResolver(schema),
-    mode: 'onBlur',
+    mode: 'onSubmit',
     defaultValues: {
       name: '',
       username: '',
diff --git a/src/utils/AxiosConfig.js b/src/utils/AxiosConfig.js
index 7e9e6a7e011d239f87a4314a14b8367a82d7dcec..a32332c37ae7dc569943fa64148851687d4b3f15 100755
--- a/src/utils/AxiosConfig.js
+++ b/src/utils/AxiosConfig.js
@@ -29,40 +29,21 @@ api.interceptors.request.use(
 // ### RESPONSE INTERCEPTOR 
 // refreshes accessToken if needed
 api.interceptors.response.use(
-  (res) => {
-    return res;
-  },
-  async (err) => {
-    // console.log('JWT error: ', err);
-    // save original request config
-    const originalConfig = err.config;
-    // if access denied and not a retry already
-    // BUG: Infinit loop because _retry isn't set at runtime
-    // console.log('originalConfig: ',originalConfig);
-    // console.log('originalConfig: ',JSON.stringify(originalConfig));
-    if (originalConfig && err?.response?.status === 403 && originalConfig._retry !== true) {
-      // patch config to remember it's a retry
-      originalConfig._retry = true;
-      console.log('trying to refresh the accessToken and rerun the request');
-      // console.log('retry', err.code, originalConfig._retry);
-      // refresh access token
-      try {
-        const result = await api.get(
+  async (res) => {
+    switch (res.config.url) {
+      case '/users/refreshjwt':
+      case '/users/logout':
+      case '/users/login':
+        return res;
+      default:
+        const refresh = await api.get(
           '/users/refreshjwt',
           {},
           { withCredentials: true }
         );
-        // TODO: don't store accessToken in localStorage, keep in memory only
-        localStorage.setItem("accessToken", JSON.stringify(result.data.accessToken));
-        // run retry
-        return api(originalConfig);
-
-      } catch (error) {
-        return Promise.reject(error);
-      }
+        localStorage.setItem("accessToken", JSON.stringify(refresh.data.token));
+        return res;
     }
-    return Promise.reject(err);
-
   }
 );