Przeniesiono autoryzacje do osobnego pliku api/auth.jsx

This commit is contained in:
2025-06-11 15:21:44 +02:00
parent 1d2a2420c2
commit 59db79eaf7
2 changed files with 71 additions and 46 deletions

View File

@@ -0,0 +1,63 @@
import axios from "axios";
const API_URL = "https://hopp.zikor.pl/api/v1";
export async function login(userData) {
try {
const response = await axios.post(`${API_URL}/auth/login`, userData, {
headers: {"Content-Type": "application/json"},
});
return response.data;
} catch (error) {
console.error("Login failed:", error);
throw error.response?.data?.message || "Login failed";
}
}
export async function register(userData) {
try {
const response = await axios.post(`${API_URL}/auth/register`, userData, {
headers: {"Content-Type": "application/json"},
});
return response.data;
} catch (error) {
console.error("Registration failed:", error);
throw error.response?.data?.message || "Registration failed";
}
}
export async function googleLogin(googleToken) {
try {
const response = await axios.post(
`${API_URL}/auth/google`,
{ googleToken: googleToken },
{
headers: { "Content-Type": "application/json" },
}
);
return response.data;
} catch (error) {
console.error("Google login failed:", error);
throw error.response?.data?.message || "Google login failed";
}
}
export async function logout(token) {
const headers = token ? { Authorization: `Bearer ${token}` } : {};
try {
const response = await axios.post(
`${API_URL}/auth/logout`,
{},
{
headers: headers,
}
);
return response.data;
} catch (error) {
console.error("Logout failed:", error);
throw error.response?.data?.message || "Logout failed";
}
}

View File

@@ -2,10 +2,9 @@ import { create } from "zustand";
import { createJSONStorage, persist } from "zustand/middleware"; import { createJSONStorage, persist } from "zustand/middleware";
import AsyncStorage from "@react-native-async-storage/async-storage"; import AsyncStorage from "@react-native-async-storage/async-storage";
import axios from "axios"; import axios from "axios";
import * as api from "@/api/auth";
import { router } from "expo-router"; import { router } from "expo-router";
const API_URL = "https://hopp.zikor.pl/api/v1";
let interceptorInitialized = false; let interceptorInitialized = false;
export const useAuthStore = create( export const useAuthStore = create(
@@ -38,16 +37,8 @@ export const useAuthStore = create(
signIn: async (email, password) => { signIn: async (email, password) => {
set({ isLoading: true, error: null }); set({ isLoading: true, error: null });
try { try {
const response = await axios.post(`${API_URL}/auth/login`, { const response = await api.login({email, password});
email, set({ user_id: response.user_id, token: response.token, isLoading: false });
password,
});
const user_id = response.data.user_id;
const token = response.data.token;
set({ user_id: user_id, token: token, isLoading: false });
axios.defaults.headers.common["Authorization"] = `Bearer ${token}`;
} catch (error) { } catch (error) {
set({ set({
error: error.response?.data?.message || error.message, error: error.response?.data?.message || error.message,
@@ -60,19 +51,8 @@ export const useAuthStore = create(
signUp: async (userData) => { signUp: async (userData) => {
set({ isLoading: true, error: null }); set({ isLoading: true, error: null });
try { try {
const response = await axios.post( const response = await api.register(userData);
`${API_URL}/auth/register`, set({ user_id: response.user_id, token: response.token, isLoading: false });
userData,
{
headers: { "Content-Type": "application/json" },
}
);
const user_id = response.data.user_id;
const token = response.data.token;
set({ user_id: user_id, token: token, isLoading: false });
axios.defaults.headers.common["Authorization"] = `Bearer ${token}`;
} catch (error) { } catch (error) {
set({ set({
error: error.response?.data?.message || error.message, error: error.response?.data?.message || error.message,
@@ -85,18 +65,8 @@ export const useAuthStore = create(
signInWithGoogle: async (googleToken) => { signInWithGoogle: async (googleToken) => {
set({ isLoading: true, error: null }); set({ isLoading: true, error: null });
try { try {
const response = await axios.post( const response = await api.googleLogin(googleToken);
`${API_URL}/auth/google`, set({ user_id: response.user_id, token: response.token, isLoading: false });
{ googleToken: googleToken },
{
headers: { "Content-Type": "application/json" },
}
);
const user_id = response.data.user_id;
const token = response.data.token;
set({ user_id: user_id, token: token, isLoading: false });
axios.defaults.headers.common["Authorization"] = `Bearer ${token}`;
} catch (error) { } catch (error) {
set({ set({
error: error.response?.data?.message || error.message, error: error.response?.data?.message || error.message,
@@ -108,19 +78,11 @@ export const useAuthStore = create(
signOut: async () => { signOut: async () => {
const { token } = get(); const { token } = get();
const headers = token ? { Authorization: `Bearer ${token}` } : {};
try { try {
await axios.post( await api.logout(token);
`${API_URL}/auth/logout`,
{},
{
headers: headers,
}
);
} catch (error) { } catch (error) {
console.error("Logout error:", error); console.error("Logout error:", error);
} finally { } finally {
delete axios.defaults.headers.common["Authorization"];
set({ user_id: null, token: null }); set({ user_id: null, token: null });
router.replace("/login"); router.replace("/login");
} }