import { BaseCommand, flags } from '@adonisjs/core/ace' import type { CommandOptions } from '@adonisjs/core/types/ace' import User from '#models/user' /** * Bascule un user en admin (accès à /admin/blog + endpoints /api/v1/admin/*). * * node ace promote:admin --email=arthurbarre.js@gmail.com * node ace promote:admin --email=... --revoke # retire le rôle */ export default class PromoteAdmin extends BaseCommand { static commandName = 'promote:admin' static description = 'Promeut (ou révoque) le rôle admin pour un user existant' static options: CommandOptions = { startApp: true, } @flags.string({ description: "Email du user à promouvoir", required: true, }) declare email: string @flags.boolean({ description: 'Retire le rôle admin au lieu de l\'octroyer', default: false, }) declare revoke: boolean async run() { const user = await User.findBy('email', String(this.email).toLowerCase()) if (!user) { this.logger.error(`User introuvable : ${this.email}`) this.exitCode = 1 return } user.isAdmin = !this.revoke await user.save() this.logger.success( `${user.email} → is_admin = ${user.isAdmin}`, ) } }