1
0
Fork 0
mirror of https://github.com/s-frick/effigenix.git synced 2026-03-28 08:29:36 +01:00

fix(cli): Username im Header nach Session-Restore korrekt anzeigen

This commit is contained in:
Sebastian Frick 2026-02-18 12:31:20 +01:00
parent 169f492b76
commit bc0043db93
2 changed files with 27 additions and 4 deletions

View file

@ -1,6 +1,6 @@
import React, { createContext, useCallback, useContext, useEffect, useReducer } from 'react';
import { RefreshTokenExpiredError } from '@effigenix/api-client';
import { tokenStorage } from '../utils/token-storage.js';
import { tokenStorage, getStoredUsername, saveUsername } from '../utils/token-storage.js';
import { client } from '../utils/api-client.js';
export interface AuthUser {
@ -70,17 +70,19 @@ export function AuthProvider({ children, onLogout }: AuthProviderProps) {
const refreshToken = await tokenStorage.getRefreshToken();
if (token && refreshToken) {
// Token existiert und ist noch gültig
dispatch({ type: 'SET_USER', user: { username: 'Eingeloggt' } });
const username = await getStoredUsername() ?? '?';
dispatch({ type: 'SET_USER', user: { username } });
} else if (refreshToken) {
// Access Token abgelaufen, aber Refresh Token vorhanden → Refresh versuchen
try {
const storedUsername = await getStoredUsername();
const refreshed = await client.auth.refresh({ refreshToken });
await tokenStorage.saveTokens(
refreshed.accessToken,
refreshed.refreshToken,
refreshed.expiresAt,
);
dispatch({ type: 'SET_USER', user: { username: 'Eingeloggt' } });
dispatch({ type: 'SET_USER', user: { username: storedUsername ?? '?' } });
} catch {
await tokenStorage.clearTokens();
dispatch({ type: 'LOGOUT' });
@ -100,6 +102,7 @@ export function AuthProvider({ children, onLogout }: AuthProviderProps) {
try {
const response = await client.auth.login({ username, password });
await tokenStorage.saveTokens(response.accessToken, response.refreshToken, response.expiresAt);
await saveUsername(username);
dispatch({ type: 'SET_USER', user: { username } });
return true;
} catch (err) {

View file

@ -12,6 +12,7 @@ interface StoredAuth {
accessToken: string;
refreshToken: string;
expiresAt: string;
username?: string;
}
interface StoredConfig {
@ -59,7 +60,13 @@ export const tokenStorage: TokenProvider = {
async saveTokens(accessToken: string, refreshToken: string, expiresAt: string): Promise<void> {
const config = await loadConfig();
config.auth = { accessToken, refreshToken, expiresAt };
const existing = config.auth;
config.auth = {
accessToken,
refreshToken,
expiresAt,
...(existing?.username !== undefined ? { username: existing.username } : {}),
};
await saveConfig(config);
},
@ -70,6 +77,19 @@ export const tokenStorage: TokenProvider = {
},
};
export async function getStoredUsername(): Promise<string | undefined> {
const config = await loadConfig();
return config.auth?.username;
}
export async function saveUsername(username: string): Promise<void> {
const config = await loadConfig();
if (config.auth) {
config.auth.username = username;
await saveConfig(config);
}
}
export async function getStoredApiBaseUrl(): Promise<string | undefined> {
const config = await loadConfig();
return config.apiBaseUrl;