summaryrefslogtreecommitdiff
path: root/src/server/api/endpoints/admin/accounts/create.ts
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/api/endpoints/admin/accounts/create.ts')
-rw-r--r--src/server/api/endpoints/admin/accounts/create.ts33
1 files changed, 33 insertions, 0 deletions
diff --git a/src/server/api/endpoints/admin/accounts/create.ts b/src/server/api/endpoints/admin/accounts/create.ts
new file mode 100644
index 0000000000..ac80b579b7
--- /dev/null
+++ b/src/server/api/endpoints/admin/accounts/create.ts
@@ -0,0 +1,33 @@
+import define from '../../../define';
+import { Users } from '../../../../../models';
+import { signup } from '../../../common/signup';
+
+export const meta = {
+ tags: ['admin'],
+
+ params: {
+ username: {
+ validator: Users.validateLocalUsername,
+ },
+
+ password: {
+ validator: Users.validatePassword,
+ }
+ }
+};
+
+export default define(meta, async (ps, me) => {
+ const noUsers = (await Users.count({})) === 0;
+ if (!noUsers && me == null) throw new Error('access denied');
+
+ const { account, secret } = await signup(ps.username, ps.password);
+
+ const res = await Users.pack(account, account, {
+ detail: true,
+ includeSecrets: true
+ });
+
+ (res as any).token = secret;
+
+ return res;
+});