Browse Source

fix: 修复修改不了密码的问题

kuns 3 weeks ago
parent
commit
4eb6f96a99

+ 2 - 2
app.json

@@ -2,7 +2,7 @@
     "expo": {
         "name": "Crazy Charge",
         "slug": "template",
-        "version": "1.3.15",
+        "version": "1.3.16",
         "orientation": "portrait",
         "icon": "./assets/CC_Logo.png",
         "userInterfaceStyle": "light",
@@ -123,7 +123,7 @@
                 "projectId": "dc6b7a3f-cf92-441a-8962-0f25e8d06902"
             }
         },
-        "runtimeVersion": "1.3.15",
+        "runtimeVersion": "1.3.16",
         "updates": {
             "url": "https://u.expo.dev/dc6b7a3f-cf92-441a-8962-0f25e8d06902"
         },

+ 2 - 2
component/registrationMultiStepForm/formComponent/formPages/loginPage.tsx

@@ -73,7 +73,6 @@ const LoginPage: React.FC<LoginPageProps> = ({ goToNextPage, goToForgetPassWordP
             if (userTerms) {
                 const isBinding = false;
                 const response = await login(username, password, isBinding);
-
                 if (response) {
                     if (saveAccount) {
                         await AsyncStorage.setItem('savedPhone', username);
@@ -82,8 +81,9 @@ const LoginPage: React.FC<LoginPageProps> = ({ goToNextPage, goToForgetPassWordP
                         await AsyncStorage.removeItem('savedPhone');
                         await AsyncStorage.removeItem('savedPassword');
                     }
+
                 } else {
-                    Alert.alert('登入失敗', `原因: ${response}`);
+                    Alert.alert('登入失敗', `請輸入正確的用戶名跟密碼`);
                 }
             } else {
                 Alert.alert('請先同意用戶條款');

+ 5 - 6
context/AuthProvider.tsx

@@ -77,22 +77,21 @@ export default function AuthProvider({ children }: { children: ReactNode }) {
     const login = async (username: string, password: string, isBinding: boolean) => {
         try {
             const result = await authenticationService.phoneLogin(username, password, isBinding);
-            if (result === 'login successful') {
+            if (result) {
                 const token = await SecureStore.getItemAsync('accessToken');
                 if (token) {
                     const userInfo = await getUserFromAccessToken();
                     if (userInfo) {
                         setUser(userInfo);
-                        return 'login successful';
+                        return true
                     }
                 }
-                return 'login successful';
+                return true;
             } else {
-                return result;
+                return false;
             }
         } catch (error) {
-            console.error('Login error:', error);
-            return error;
+            return false;
         }
     };
 

+ 34 - 34
service/authService.tsx

@@ -14,20 +14,16 @@ class AuthenticationService {
                     email: username,
                     password: password,
                     isBinding: isBinding,
-                    
                 },
                 {
-                    customConfig: {needAuth: true}
+                    customConfig: {needAuth: false}
                 },
             );
             if (response.status === 201) {
                 const token = response.data.accessToken;
                 await SecureStore.setItemAsync('accessToken', token);
-                console.log('AccessToken', token);
                 return true;
             } else {
-                console.error('Login failed:', response.status);
-
                 return false;
             }
         } catch (error) {
@@ -42,35 +38,23 @@ class AuthenticationService {
     }
 
     async phoneLogin(username: string | null | undefined, password: string, isBinding?: boolean) {
-        try {
-            const response = await apiClient.instance.post(
-                `/public/client/customer/phone/sign-in`,
-                {
-                    phone: username,
-                    password: password,
-                    isBinding: isBinding,
-                    
-                },
-                {
-                
-                    customConfig: {needAuth: true}
-                }
-            );
-            if (response.status === 201) {
-                const token = response.data.accessToken;
-                await SecureStore.setItemAsync('accessToken', token);
-                return 'login successful';
-            } else {
-                return response.data.message;
-            }
-        } catch (error) {
-            if (axios.isAxiosError(error)) {
-                console.error('Login error:', error.response?.data?.message || error.message);
-                return error.response?.data?.message || error.message;
-            } else {
-                console.error('An unexpected error occurred:', error);
-                return 'An unexpected error occurred: ' + error;
+        const response = await apiClient.instance.post(
+            `/public/client/customer/phone/sign-in`,
+            {
+                phone: username,
+                password: password,
+                isBinding: isBinding,
+            },
+            {
+                customConfig: {needAuth: false}
             }
+        );
+        if (response.status === 201) {
+            const token = response.data.accessToken;
+            await SecureStore.setItemAsync('accessToken', token);
+            return true;
+        } else {
+            return false
         }
     }
 
@@ -250,11 +234,14 @@ class AuthenticationService {
         }
     }
 
-    async changePassword(confirmedNewPassword: string, data: string) {
+    async changePassword(confirmedNewPassword: string, token: string | null) {
         try {
             const res = await apiClient.instance.put(
                 `/clients/customer/pw/forget`,
                 { newPassword: confirmedNewPassword },
+                {
+                    customConfig: { token }
+                }
             );
             return true;
         } catch (error) {
@@ -271,6 +258,10 @@ class AuthenticationService {
             const res = await apiClient.instance.put(
                 `/clients/customer`,
                 { email: email },
+                {
+                
+                    customConfig: { token }
+                }
             );
             console.log('Change Name Successfully!');
             return true;
@@ -289,6 +280,9 @@ class AuthenticationService {
             const res = await apiClient.instance.put(
                 `/clients/customer`,
                 { nickname: name },
+                {
+                    customConfig: { token }
+                }
             );
             console.log('Change Name Successfully!');
             return true;
@@ -330,6 +324,9 @@ class AuthenticationService {
             const res = await apiClient.instance.put(
                 `/clients/customer`,
                 { phone: convertPhoneStringToNumber },
+                {
+                    customConfig: { token }
+                }
             );
             return true;
         } catch (error) {
@@ -347,6 +344,9 @@ class AuthenticationService {
             const res = await apiClient.instance.put(
                 `/clients/customer`,
                 { gender: gender },
+                {
+                    customConfig: { token }
+                }
             );
             console.log('Change gender Successfully!');
             return true;

+ 1 - 0
service/conf.ts

@@ -45,6 +45,7 @@ export interface ErrorResponse {
 // 请求配置扩展
 export interface RequestConfig {
   needAuth?: boolean; // 是否需要认证
+  token?: string | null;
   showError?: boolean; // 是否显示错误提示
   retryCount?: number; // 重试次数
 }

+ 8 - 7
service/requets.ts

@@ -1,3 +1,4 @@
+import { Alert } from 'react-native';
 import axios, { 
   AxiosInstance, 
   AxiosRequestConfig, 
@@ -37,13 +38,13 @@ class ApiClient {
     this.instance.interceptors.request.use(
       async (config: InternalAxiosRequestConfig) => {
         const extendedConfig = config as InternalAxiosRequestConfig & { customConfig?: RequestConfig };
-        const { needAuth = true } = extendedConfig.customConfig || {};
+        const { needAuth = true, token = null } = extendedConfig.customConfig || {};
 
         // 添加认证令牌
         if (needAuth) {
-          const token = await SecureStore.getItemAsync('accessToken')
-          if (token) {
-            config.headers.Authorization = `Bearer ${token}`;
+          const tokenStr = token? token : await SecureStore.getItemAsync('accessToken')
+          if (tokenStr) {
+            config.headers.Authorization = `Bearer ${tokenStr}`;
           }
         }
         return config;
@@ -120,7 +121,7 @@ class ApiClient {
         });
       }
     }
-
+    console.log('响应错误:', errorData);
     // 其他错误处理
     const customError: ErrorResponse = {
       code: status,
@@ -182,8 +183,8 @@ class ApiClient {
   // 显示错误提示(可根据实际使用的 Toast 库调整)
   private showErrorToast(message: string): void {
     // 使用你喜欢的 Toast 库,例如 react-native-toast-message
-    // Toast.show({ type: 'error', text1: message });
-    console.error('Error:', message);
+    // Alert.alert('Error', message);
+    // console.error('Error:', message);
   }
 
 }