Correcao Sidebar Classico e Rail, Correcao Layout, Ajuste de Breakpoint para Tailwind, Ajuste AppTopbar, Ajuste Menu PopOver, Recriado Paleta de Cores, Inserido algumas animações leves, Reajuste Cor items NOVOS da tabela, Drawer Ajuda Corrigido no Logout, Whatsapp, sms, email, recursos extras
This commit is contained in:
@@ -26,69 +26,65 @@
|
||||
// 'editor' — pode criar e gerenciar cursos/módulos da plataforma de microlearning.
|
||||
//
|
||||
|
||||
import { ref, computed } from 'vue'
|
||||
import { supabase } from '@/lib/supabase/client'
|
||||
import { sessionUser } from '@/app/session'
|
||||
import { ref, computed } from 'vue';
|
||||
import { supabase } from '@/lib/supabase/client';
|
||||
import { sessionUser } from '@/app/session';
|
||||
|
||||
// cache em módulo (evita queries repetidas por navegação)
|
||||
let _cachedUid = null
|
||||
let _cachedRoles = null
|
||||
let _cachedUid = null;
|
||||
let _cachedRoles = null;
|
||||
|
||||
export function usePlatformPermissions () {
|
||||
const platformRoles = ref(_cachedRoles ?? [])
|
||||
const loading = ref(false)
|
||||
const error = ref(null)
|
||||
export function usePlatformPermissions() {
|
||||
const platformRoles = ref(_cachedRoles ?? []);
|
||||
const loading = ref(false);
|
||||
const error = ref(null);
|
||||
|
||||
async function load (force = false) {
|
||||
const uid = sessionUser.value?.id
|
||||
if (!uid) {
|
||||
platformRoles.value = []
|
||||
return
|
||||
async function load(force = false) {
|
||||
const uid = sessionUser.value?.id;
|
||||
if (!uid) {
|
||||
platformRoles.value = [];
|
||||
return;
|
||||
}
|
||||
|
||||
// cache por uid (invalida se usuário mudou)
|
||||
if (!force && _cachedUid === uid && _cachedRoles !== null) {
|
||||
platformRoles.value = _cachedRoles;
|
||||
return;
|
||||
}
|
||||
|
||||
loading.value = true;
|
||||
error.value = null;
|
||||
|
||||
try {
|
||||
const { data, err } = await supabase.from('profiles').select('platform_roles').eq('id', uid).single();
|
||||
|
||||
const roles = !err && Array.isArray(data?.platform_roles) ? data.platform_roles : [];
|
||||
_cachedUid = uid;
|
||||
_cachedRoles = roles;
|
||||
platformRoles.value = roles;
|
||||
} catch (e) {
|
||||
console.warn('[usePlatformPermissions] load falhou:', e);
|
||||
error.value = e;
|
||||
platformRoles.value = [];
|
||||
} finally {
|
||||
loading.value = false;
|
||||
}
|
||||
}
|
||||
|
||||
// cache por uid (invalida se usuário mudou)
|
||||
if (!force && _cachedUid === uid && _cachedRoles !== null) {
|
||||
platformRoles.value = _cachedRoles
|
||||
return
|
||||
function invalidate() {
|
||||
_cachedUid = null;
|
||||
_cachedRoles = null;
|
||||
platformRoles.value = [];
|
||||
}
|
||||
|
||||
loading.value = true
|
||||
error.value = null
|
||||
const isEditor = computed(() => platformRoles.value.includes('editor'));
|
||||
|
||||
try {
|
||||
const { data, err } = await supabase
|
||||
.from('profiles')
|
||||
.select('platform_roles')
|
||||
.eq('id', uid)
|
||||
.single()
|
||||
|
||||
const roles = !err && Array.isArray(data?.platform_roles) ? data.platform_roles : []
|
||||
_cachedUid = uid
|
||||
_cachedRoles = roles
|
||||
platformRoles.value = roles
|
||||
} catch (e) {
|
||||
console.warn('[usePlatformPermissions] load falhou:', e)
|
||||
error.value = e
|
||||
platformRoles.value = []
|
||||
} finally {
|
||||
loading.value = false
|
||||
}
|
||||
}
|
||||
|
||||
function invalidate () {
|
||||
_cachedUid = null
|
||||
_cachedRoles = null
|
||||
platformRoles.value = []
|
||||
}
|
||||
|
||||
const isEditor = computed(() => platformRoles.value.includes('editor'))
|
||||
|
||||
return {
|
||||
platformRoles,
|
||||
loading,
|
||||
error,
|
||||
isEditor,
|
||||
load,
|
||||
invalidate
|
||||
}
|
||||
return {
|
||||
platformRoles,
|
||||
loading,
|
||||
error,
|
||||
isEditor,
|
||||
load,
|
||||
invalidate
|
||||
};
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user