Initial Commit

This commit is contained in:
2026-10-03 20:07:49 +02:00
commit a1346c98b1
427 changed files with 59320 additions and 0 deletions
+50
View File
@@ -0,0 +1,50 @@
export interface AuthUser {
id: number
name: string
email: string | null
color: string | null
cardEffect: string | null
cardEffectColor: string | null
cardVignette: boolean
cardBorderEffect: string | null
cardBorderEffectColor: string | null
avatarUrl: string | null
roles: string[]
permissions: string[]
}
export function useAuth() {
const user = useState<AuthUser | null>('auth:user', () => null)
async function refresh() {
const requestFetch = useRequestFetch()
const res = await requestFetch<{ user: AuthUser | null }>('/api/auth/me')
user.value = res.user
}
async function login(name: string, password: string) {
const res = await $fetch<{ user: AuthUser }>('/api/auth/login', {
method: 'POST',
body: { name, password },
})
user.value = res.user
}
async function register(name: string, password: string, email?: string) {
const res = await $fetch<{ user: AuthUser }>('/api/auth/register', {
method: 'POST',
body: { name, password, email },
})
user.value = res.user
}
async function logout() {
await $fetch('/api/auth/logout', { method: 'POST' })
user.value = null
}
const isAdmin = computed(() => user.value?.roles.includes('admin') ?? false)
const can = (permission: string) => isAdmin.value || (user.value?.permissions.includes(permission) ?? false)
return { user, isAdmin, can, refresh, login, register, logout }
}