All files / server/api/auth logout.post.ts

100% Statements 20/20
83.33% Branches 5/6
100% Functions 0/0
100% Lines 20/20

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 261x   1x 3x 3x 3x   2x 2x 2x     2x 3x   2x 2x 2x 2x 1x 1x 1x 2x 2x 2x  
import {sendDemoAccountEnded} from "#server/utils/mailer";
 
export default defineEventHandler(async event => {
    const user = await sessionUser(event)
    clearAuthSession(event)
    if (user?.role !== 'demo') return {ok: true}
 
    const db = database(event)
    await ready(db)
    const account = await db.prepare(`SELECT demo.email demo_email, creator.email creator_email
        FROM users demo
        LEFT JOIN users creator ON creator.id=demo.created_by_admin_id
        WHERE demo.id=? AND demo.role='demo'`).bind(user.id).first<{demo_email:string; creator_email:string | null}>()
    if (!account) return {ok: true}
 
    await db.prepare("DELETE FROM users WHERE id=? AND role='demo'").bind(user.id).run()
    if (account.creator_email) {
        try {
            await sendDemoAccountEnded(event, account.creator_email, account.demo_email)
        } catch (error) {
            console.error('Le compte de démonstration a été supprimé, mais la notification n’a pas pu être envoyée.', error)
        }
    }
    return {ok: true}
})