dev: add godmode toggle command for apps

This commit is contained in:
KernelDeimos
2025-02-14 11:16:41 -05:00
parent fbd5ffd85d
commit 5513e1c93b
@@ -16,7 +16,10 @@
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
const { Actor } = require("../../services/auth/Actor");
const BaseService = require("../../services/BaseService");
const { DB_WRITE } = require("../../services/database/consts");
const { Context } = require("../../util/context");
class SelfhostedService extends BaseService {
static description = `
@@ -24,6 +27,47 @@ class SelfhostedService extends BaseService {
`
async _init () {
this._register_commands(this.services.get('commands'));
}
_register_commands (commands) {
const db = this.services.get('database').get(DB_WRITE, 'selfhosted');
commands.registerCommands('app', [
{
id: 'godmode-on',
description: 'Toggle godmode for an app',
handler: async (args, log) => {
const svc_su = this.services.get('su');
await await svc_su.sudo(async () => {
const [app_uid] = args;
const es_app = await this.services.get('es:app');
const app = await es_app.read(app_uid);
if ( ! app ) {
throw new Error(`App ${app_uid} not found`);
}
await db.write('UPDATE apps SET godmode = 1 WHERE uid = ?', [app_uid]);
});
}
}
]);
commands.registerCommands('app', [
{
id: 'godmode-off',
description: 'Toggle godmode for an app',
handler: async (args, log) => {
const svc_su = this.services.get('su');
await await svc_su.sudo(async () => {
const [app_uid] = args;
const es_app = await this.services.get('es:app');
const app = await es_app.read(app_uid);
if ( ! app ) {
throw new Error(`App ${app_uid} not found`);
}
await db.write('UPDATE apps SET godmode = 0 WHERE uid = ?', [app_uid]);
});
}
}
]);
}
}