From 828cb05223d7765e25a00a005ec19d16480eb8bb Mon Sep 17 00:00:00 2001 From: Alexis Tyler Date: Wed, 3 Mar 2021 14:29:45 +1030 Subject: [PATCH] feat: add owner info --- app/core/modules/info/get-owner.ts | 40 ++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 app/core/modules/info/get-owner.ts diff --git a/app/core/modules/info/get-owner.ts b/app/core/modules/info/get-owner.ts new file mode 100644 index 000000000..4f6375464 --- /dev/null +++ b/app/core/modules/info/get-owner.ts @@ -0,0 +1,40 @@ +/*! + * Copyright 2019-2020 Lime Technology Inc. All rights reserved. + * Written by: Alexis Tyler + */ + +import { getServers } from '../../../graphql/schema/utils'; +import { apiManager } from '../../api-manager'; +import { CoreContext, CoreResult } from '../../types'; +import { ensurePermission } from '../../utils'; + +/** + * Get server's owner info + * + * @memberof Core + * @module info/get-owner + */ +export const getOwner = async function (context: CoreContext): Promise { + const { user } = context; + + // Check permissions + ensurePermission(user, { + resource: 'owner', + action: 'read', + possession: 'any' + }); + + const apiKey = apiManager.getValidKeys().find(key => key.name === 'my_servers')?.key.toString()!; + const server = await getServers().then(servers => servers.find(server => server.apikey === apiKey)); + + return { + get text() { + return `Owner: ${server?.owner?.username ?? 'root'}`; + }, + get json() { + return { + ...server?.owner + }; + } + }; +};