feat: jira config in database
This commit is contained in:
@@ -24,7 +24,10 @@ const DEFAULT_PREFERENCES: UserPreferences = {
|
||||
hiddenStatuses: []
|
||||
},
|
||||
jiraConfig: {
|
||||
enabled: false
|
||||
enabled: false,
|
||||
baseUrl: '',
|
||||
email: '',
|
||||
apiToken: ''
|
||||
}
|
||||
};
|
||||
|
||||
@@ -47,6 +50,7 @@ class UserPreferencesService {
|
||||
kanbanFilters: DEFAULT_PREFERENCES.kanbanFilters,
|
||||
viewPreferences: DEFAULT_PREFERENCES.viewPreferences,
|
||||
columnVisibility: DEFAULT_PREFERENCES.columnVisibility,
|
||||
jiraConfig: DEFAULT_PREFERENCES.jiraConfig as any,
|
||||
}
|
||||
});
|
||||
|
||||
@@ -165,15 +169,43 @@ class UserPreferencesService {
|
||||
}
|
||||
}
|
||||
|
||||
// === CONFIGURATION JIRA ===
|
||||
|
||||
/**
|
||||
* Récupère la configuration Jira depuis les variables d'environnement
|
||||
* Sauvegarde la configuration Jira
|
||||
*/
|
||||
async saveJiraConfig(config: JiraConfig): Promise<void> {
|
||||
try {
|
||||
const userPrefs = await this.getOrCreateUserPreferences();
|
||||
await prisma.userPreferences.update({
|
||||
where: { id: userPrefs.id },
|
||||
data: { jiraConfig: config as any }
|
||||
});
|
||||
} catch (error) {
|
||||
console.warn('Erreur lors de la sauvegarde de la config Jira:', error);
|
||||
throw error;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Récupère la configuration Jira depuis la base de données avec fallback sur les variables d'environnement
|
||||
*/
|
||||
async getJiraConfig(): Promise<JiraConfig> {
|
||||
try {
|
||||
const userPrefs = await this.getOrCreateUserPreferences();
|
||||
const dbConfig = (userPrefs as any).jiraConfig as JiraConfig | null;
|
||||
|
||||
// Si config en DB, l'utiliser
|
||||
if (dbConfig && (dbConfig.baseUrl || dbConfig.email || dbConfig.apiToken)) {
|
||||
return { ...DEFAULT_PREFERENCES.jiraConfig, ...dbConfig };
|
||||
}
|
||||
|
||||
// Sinon fallback sur les variables d'environnement (existant)
|
||||
const config = getConfig();
|
||||
return {
|
||||
baseUrl: config.integrations.jira.baseUrl,
|
||||
email: config.integrations.jira.email,
|
||||
apiToken: '', // On ne retourne pas le token des env vars pour la sécurité
|
||||
enabled: config.integrations.jira.enabled
|
||||
};
|
||||
} catch (error) {
|
||||
@@ -202,14 +234,14 @@ class UserPreferencesService {
|
||||
}
|
||||
|
||||
/**
|
||||
* Sauvegarde toutes les préférences utilisateur (jiraConfig ignorée car elle vient des env vars)
|
||||
* Sauvegarde toutes les préférences utilisateur
|
||||
*/
|
||||
async saveAllPreferences(preferences: UserPreferences): Promise<void> {
|
||||
await Promise.all([
|
||||
this.saveKanbanFilters(preferences.kanbanFilters),
|
||||
this.saveViewPreferences(preferences.viewPreferences),
|
||||
this.saveColumnVisibility(preferences.columnVisibility)
|
||||
// jiraConfig n'est pas sauvegardée car elle vient des variables d'environnement
|
||||
this.saveColumnVisibility(preferences.columnVisibility),
|
||||
this.saveJiraConfig(preferences.jiraConfig)
|
||||
]);
|
||||
}
|
||||
|
||||
@@ -225,6 +257,7 @@ class UserPreferencesService {
|
||||
kanbanFilters: DEFAULT_PREFERENCES.kanbanFilters,
|
||||
viewPreferences: DEFAULT_PREFERENCES.viewPreferences,
|
||||
columnVisibility: DEFAULT_PREFERENCES.columnVisibility,
|
||||
jiraConfig: DEFAULT_PREFERENCES.jiraConfig as any,
|
||||
}
|
||||
});
|
||||
} catch (error) {
|
||||
|
||||
Reference in New Issue
Block a user