Browse Source

add the delete

gdias 1 month ago
parent
commit
159398ed64
2 changed files with 76 additions and 23 deletions
  1. 46 18
      src/lib/components/DashboardGuard.svelte
  2. 30 5
      src/routes/users/+page.svelte

+ 46 - 18
src/lib/components/DashboardGuard.svelte

@@ -1,27 +1,55 @@
 <script>
-	import { onMount } from 'svelte';
-	import { goto } from '$app/navigation';
-	import { browser } from '$app/environment';
-	import { writable } from 'svelte/store';
+    import { onMount, onDestroy } from 'svelte';
+    import { goto } from '$app/navigation';
+    import { browser } from '$app/environment';
+    import { writable } from 'svelte/store';
 
-	const authorized = writable(false);
+    const authorized = writable(false);
 
     //TODO: When will has a token validation we need to validate the token here
-	//tenho que verificar se realmente vai ser feito essa validacao a cada minuto
-	let flag = 'approved';
+    //tenho que verificar se realmente vai ser feito essa validacao a cada minuto
+    const apiUrl = import.meta.env.VITE_API_URL;
+    let intervalId = null;
 
-	onMount(async () => {
-		if (flag !== 'approved') {
-			goto('/');
-		} else {
-			authorized.set(true);
-		}
-		 setInterval(() => {
-            console.log('passou pelo dashboard guard');
-		 }, 100000);
-	});
+    async function validate() {
+        if (!browser) return;
+        const m1 = document.cookie.match(/(?:^|; )auth_token=([^;]+)/);
+        const m2 = document.cookie.match(/(?:^|; )company_id=([^;]+)/);
+        const token = m1 ? decodeURIComponent(m1[1]) : null;
+        const v = m2 ? decodeURIComponent(m2[1]) : null;
+        const companyId = v && /^-?\d+$/.test(v) ? Number(v) : v;
+        if (!token || companyId == null) {
+            authorized.set(false);
+            goto('/');
+            return;
+        }
+        try {
+            const res = await fetch(`${apiUrl}/auth/validate-token`, {
+                method: 'POST',
+                headers: {
+                    'content-type': 'application/json',
+                    'Authorization': `Bearer ${token}`
+                },
+                body: JSON.stringify({ token, companyId })
+            });
+            if (!res.ok) throw new Error('invalid');
+            authorized.set(true);
+        } catch (e) {
+            authorized.set(false);
+            goto('/');
+        }
+    }
+
+    onMount(() => {
+        validate();
+        intervalId = setInterval(validate, 60000);
+    });
+
+    onDestroy(() => {
+        if (intervalId) clearInterval(intervalId);
+    });
 </script>
 
 {#if $authorized}
-	<slot />
+    <slot />
 {/if}

+ 30 - 5
src/routes/users/+page.svelte

@@ -77,7 +77,7 @@
     const payload = e?.detail;
     if (!payload) return;
     try {
-      const res = await fetch(`${apiUrl}/users`, {
+      const res = await fetch(`${apiUrl}/auth/register`, {
         method: 'POST',
         headers: {
           'content-type': 'application/json',
@@ -123,10 +123,35 @@
     showDetails = true;
   }
 
-  function confirmDelete() {
-    data = data.filter((r) => r !== rowToDelete);
-    showDeleteConfirm = false;
-    rowToDelete = null;
+  async function confirmDelete() {
+    if (!rowToDelete) { showDeleteConfirm = false; return; }
+    const id = rowToDelete?.__raw?.userId ?? rowToDelete?.userId ?? rowToDelete?.id;
+    if (id == null) {
+      console.error('ID do usuário não encontrado para exclusão.');
+      showDeleteConfirm = false;
+      rowToDelete = null;
+      return;
+    }
+    try {
+      const res = await fetch(`${apiUrl}/auth/${id}`, {
+        method: 'DELETE',
+        headers: {
+          'content-type': 'application/json',
+          ...( $authToken ? { Authorization: `Bearer ${$authToken}` } : {} )
+        },
+        body: JSON.stringify({ id })
+      });
+      if (!res.ok) {
+        try { console.error('Falha ao excluir usuário:', await res.text()); } catch {}
+        return;
+      }
+      data = data.filter((r) => (r?.__raw?.userId ?? r?.userId ?? r?.id) !== id);
+    } catch (e) {
+      console.error('Erro ao excluir usuário:', e);
+    } finally {
+      showDeleteConfirm = false;
+      rowToDelete = null;
+    }
   }
 
   function cancelDelete() {