mongodb
Signed-off-by: Omar Sánchez Pizarro <omar.sanchez@pistacero.net>
This commit is contained in:
@@ -74,10 +74,9 @@ export default {
|
||||
},
|
||||
|
||||
// Artículos
|
||||
async getArticles(limit = 100, offset = 0) {
|
||||
const response = await api.get('/articles', {
|
||||
params: { limit, offset },
|
||||
});
|
||||
async getArticles(limit = 100, offset = 0, additionalParams = {}) {
|
||||
const params = { limit, offset, ...additionalParams };
|
||||
const response = await api.get('/articles', { params });
|
||||
return response.data;
|
||||
},
|
||||
|
||||
@@ -105,6 +104,16 @@ export default {
|
||||
},
|
||||
|
||||
// Telegram
|
||||
async getTelegramConfig() {
|
||||
const response = await api.get('/telegram/config');
|
||||
return response.data;
|
||||
},
|
||||
|
||||
async setTelegramConfig(config) {
|
||||
const response = await api.put('/telegram/config', config);
|
||||
return response.data;
|
||||
},
|
||||
|
||||
async getTelegramThreads() {
|
||||
const response = await api.get('/telegram/threads');
|
||||
return response.data;
|
||||
@@ -116,6 +125,12 @@ export default {
|
||||
return response.data;
|
||||
},
|
||||
|
||||
// Artículos - Borrar todos (solo admin)
|
||||
async clearAllArticles() {
|
||||
const response = await api.delete('/articles');
|
||||
return response.data;
|
||||
},
|
||||
|
||||
// Usuarios
|
||||
async getUsers() {
|
||||
const response = await api.get('/users');
|
||||
|
||||
@@ -2,11 +2,13 @@
|
||||
|
||||
const AUTH_STORAGE_KEY = 'wallabicher_token';
|
||||
const USERNAME_STORAGE_KEY = 'wallabicher_username';
|
||||
const ROLE_STORAGE_KEY = 'wallabicher_role';
|
||||
|
||||
class AuthService {
|
||||
constructor() {
|
||||
this.token = this.loadToken();
|
||||
this.username = this.loadUsername();
|
||||
this.role = this.loadRole();
|
||||
}
|
||||
|
||||
// Cargar token desde localStorage
|
||||
@@ -29,13 +31,15 @@ class AuthService {
|
||||
}
|
||||
}
|
||||
|
||||
// Guardar token y username en localStorage
|
||||
saveSession(token, username) {
|
||||
// Guardar token, username y role en localStorage
|
||||
saveSession(token, username, role = 'user') {
|
||||
try {
|
||||
this.token = token;
|
||||
this.username = username;
|
||||
this.role = role;
|
||||
localStorage.setItem(AUTH_STORAGE_KEY, token);
|
||||
localStorage.setItem(USERNAME_STORAGE_KEY, username);
|
||||
localStorage.setItem(ROLE_STORAGE_KEY, role);
|
||||
return true;
|
||||
} catch (error) {
|
||||
console.error('Error guardando sesión:', error);
|
||||
@@ -43,13 +47,25 @@ class AuthService {
|
||||
}
|
||||
}
|
||||
|
||||
// Eliminar token y username
|
||||
// Cargar role desde localStorage
|
||||
loadRole() {
|
||||
try {
|
||||
return localStorage.getItem(ROLE_STORAGE_KEY) || 'user';
|
||||
} catch (error) {
|
||||
console.error('Error cargando role:', error);
|
||||
return 'user';
|
||||
}
|
||||
}
|
||||
|
||||
// Eliminar token, username y role
|
||||
clearSession() {
|
||||
try {
|
||||
this.token = '';
|
||||
this.username = '';
|
||||
this.role = 'user';
|
||||
localStorage.removeItem(AUTH_STORAGE_KEY);
|
||||
localStorage.removeItem(USERNAME_STORAGE_KEY);
|
||||
localStorage.removeItem(ROLE_STORAGE_KEY);
|
||||
return true;
|
||||
} catch (error) {
|
||||
console.error('Error eliminando sesión:', error);
|
||||
@@ -67,6 +83,16 @@ class AuthService {
|
||||
return this.username;
|
||||
}
|
||||
|
||||
// Obtener role actual
|
||||
getRole() {
|
||||
return this.role;
|
||||
}
|
||||
|
||||
// Verificar si es admin
|
||||
isAdmin() {
|
||||
return this.role === 'admin';
|
||||
}
|
||||
|
||||
// Verificar si hay sesión activa (token guardado)
|
||||
hasCredentials() {
|
||||
return !!this.token;
|
||||
@@ -98,8 +124,9 @@ class AuthService {
|
||||
}
|
||||
|
||||
if (data.success && data.token) {
|
||||
this.saveSession(data.token, data.username);
|
||||
return { success: true, token: data.token, username: data.username };
|
||||
const role = data.role || 'user';
|
||||
this.saveSession(data.token, data.username, role);
|
||||
return { success: true, token: data.token, username: data.username, role };
|
||||
}
|
||||
|
||||
throw new Error('Respuesta inválida del servidor');
|
||||
@@ -155,6 +182,11 @@ class AuthService {
|
||||
if (response.ok) {
|
||||
const data = await response.json();
|
||||
if (data.success && data.authenticated) {
|
||||
// Actualizar role si está disponible
|
||||
if (data.role) {
|
||||
this.role = data.role;
|
||||
localStorage.setItem(ROLE_STORAGE_KEY, data.role);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user