Slefhostet und postgres

This commit is contained in:
2026-04-02 11:39:57 +02:00
parent b1c99893a6
commit 08483c7075
215 changed files with 4584 additions and 5190 deletions

View File

@@ -1,12 +1,8 @@
import * as SecureStore from 'expo-secure-store';
import { AuthDb } from './database';
const SESSION_KEY = 'greenlens_session_v3';
const BACKEND_URL = (
process.env.EXPO_PUBLIC_BACKEND_URL ||
process.env.EXPO_PUBLIC_PAYMENT_SERVER_URL ||
''
).trim();
import * as SecureStore from 'expo-secure-store';
import { AuthDb } from './database';
import { getConfiguredBackendRootUrl } from '../utils/backendUrl';
const SESSION_KEY = 'greenlens_session_v3';
export interface AuthSession {
userId: number; // local SQLite id (for plants/settings queries)
@@ -23,9 +19,10 @@ const clearStoredSession = async (): Promise<void> => {
await SecureStore.deleteItemAsync(SESSION_KEY);
};
const authPost = async (path: string, body: object): Promise<{ userId: string; email: string; name: string; token: string }> => {
const hasBackendUrl = Boolean(BACKEND_URL);
const url = hasBackendUrl ? `${BACKEND_URL}${path}` : path;
const authPost = async (path: string, body: object): Promise<{ userId: string; email: string; name: string; token: string }> => {
const backendUrl = getConfiguredBackendRootUrl();
const hasBackendUrl = Boolean(backendUrl);
const url = hasBackendUrl ? `${backendUrl}${path}` : path;
let response: Response;
try {
response = await fetch(url, {
@@ -104,14 +101,15 @@ export const AuthService = {
await SecureStore.setItemAsync(SESSION_KEY, JSON.stringify({ ...session, name }));
},
async validateWithServer(): Promise<'valid' | 'invalid' | 'unreachable'> {
const session = await this.getSession();
if (!session) return 'invalid';
if (!BACKEND_URL) return 'unreachable';
try {
const response = await fetch(`${BACKEND_URL}/v1/billing/summary`, {
headers: { Authorization: `Bearer ${session.token}` },
});
async validateWithServer(): Promise<'valid' | 'invalid' | 'unreachable'> {
const session = await this.getSession();
if (!session) return 'invalid';
const backendUrl = getConfiguredBackendRootUrl();
if (!backendUrl) return 'unreachable';
try {
const response = await fetch(`${backendUrl}/v1/billing/summary`, {
headers: { Authorization: `Bearer ${session.token}` },
});
if (response.status === 401 || response.status === 403) return 'invalid';
return 'valid';
} catch {