mirror of
https://github.com/R0m1k3/Socialflow.git
synced 2026-10-11 17:26:45 +02:00
2 files changed
+23
-3
No files matched your search
@@ -31,6 +31,19 @@ VALUES (
|
||||
'user'
|
||||
) ON CONFLICT (username) DO NOTHING;
|
||||
|
||||
-- Créer la table user_page_permissions (permissions d'accès aux pages par utilisateur)
|
||||
CREATE TABLE IF NOT EXISTS user_page_permissions (
|
||||
id VARCHAR PRIMARY KEY DEFAULT gen_random_uuid(),
|
||||
user_id VARCHAR NOT NULL REFERENCES users(id) ON DELETE CASCADE,
|
||||
page_id VARCHAR NOT NULL REFERENCES social_pages(id) ON DELETE CASCADE,
|
||||
created_at TIMESTAMP DEFAULT NOW(),
|
||||
UNIQUE(user_id, page_id)
|
||||
);
|
||||
|
||||
-- Index pour optimiser les requêtes de permissions
|
||||
CREATE INDEX IF NOT EXISTS idx_user_page_permissions_user_id ON user_page_permissions(user_id);
|
||||
CREATE INDEX IF NOT EXISTS idx_user_page_permissions_page_id ON user_page_permissions(page_id);
|
||||
|
||||
-- Liste des tables créées automatiquement par Drizzle ORM :
|
||||
-- - users (utilisateurs avec rôles)
|
||||
-- - social_pages (pages Facebook/Instagram connectées)
|
||||
@@ -41,3 +54,4 @@ VALUES (
|
||||
-- - scheduled_posts (publications programmées)
|
||||
-- - ai_generations (historique des générations IA)
|
||||
-- - post_media (relation many-to-many entre posts et media)
|
||||
-- - user_page_permissions (permissions d'accès aux pages par utilisateur)
|
||||
+9
-3
@@ -772,12 +772,18 @@ export async function registerRoutes(app: Express): Promise<Server> {
|
||||
const allPostsArrays = await Promise.all(allPostsPromises);
|
||||
scheduledPosts = allPostsArrays.flat();
|
||||
} else {
|
||||
// User voit uniquement les posts des pages qui lui sont attribuées
|
||||
// User voit tous les posts programmés sur les pages qui lui sont attribuées (peu importe qui les a créés)
|
||||
const accessiblePages = await storage.getUserAccessiblePages(userId);
|
||||
const accessiblePageIds = accessiblePages.map(p => p.id);
|
||||
|
||||
const userScheduledPosts = await storage.getScheduledPosts(userId, start, end);
|
||||
scheduledPosts = userScheduledPosts.filter(sp => accessiblePageIds.includes(sp.pageId));
|
||||
// Récupérer tous les posts programmés de tous les utilisateurs
|
||||
const allUsers = await storage.getAllUsers();
|
||||
const allPostsPromises = allUsers.map(u => storage.getScheduledPosts(u.id, start, end));
|
||||
const allPostsArrays = await Promise.all(allPostsPromises);
|
||||
const allScheduledPosts = allPostsArrays.flat();
|
||||
|
||||
// Filtrer uniquement les posts des pages accessibles
|
||||
scheduledPosts = allScheduledPosts.filter(sp => accessiblePageIds.includes(sp.pageId));
|
||||
}
|
||||
|
||||
res.json(scheduledPosts);
|
||||
|
||||
Reference in new issue
Block a user