parent
037837b551
commit
0e4a111f81
1714 changed files with 20803 additions and 11751 deletions
63
packages/backend/src/server/api/endpoints/app/create.ts
Normal file
63
packages/backend/src/server/api/endpoints/app/create.ts
Normal file
|
@ -0,0 +1,63 @@
|
|||
import $ from 'cafy';
|
||||
import define from '../../define';
|
||||
import { Apps } from '@/models/index';
|
||||
import { genId } from '@/misc/gen-id';
|
||||
import { unique } from '@/prelude/array';
|
||||
import { secureRndstr } from '@/misc/secure-rndstr';
|
||||
|
||||
export const meta = {
|
||||
tags: ['app'],
|
||||
|
||||
requireCredential: false as const,
|
||||
|
||||
params: {
|
||||
name: {
|
||||
validator: $.str,
|
||||
},
|
||||
|
||||
description: {
|
||||
validator: $.str,
|
||||
},
|
||||
|
||||
permission: {
|
||||
validator: $.arr($.str).unique(),
|
||||
},
|
||||
|
||||
// TODO: Check it is valid url
|
||||
callbackUrl: {
|
||||
validator: $.optional.nullable.str,
|
||||
default: null,
|
||||
},
|
||||
},
|
||||
|
||||
res: {
|
||||
type: 'object' as const,
|
||||
optional: false as const, nullable: false as const,
|
||||
ref: 'App',
|
||||
},
|
||||
};
|
||||
|
||||
export default define(meta, async (ps, user) => {
|
||||
// Generate secret
|
||||
const secret = secureRndstr(32, true);
|
||||
|
||||
// for backward compatibility
|
||||
const permission = unique(ps.permission.map(v => v.replace(/^(.+)(\/|-)(read|write)$/, '$3:$1')));
|
||||
|
||||
// Create account
|
||||
const app = await Apps.save({
|
||||
id: genId(),
|
||||
createdAt: new Date(),
|
||||
userId: user ? user.id : null,
|
||||
name: ps.name,
|
||||
description: ps.description,
|
||||
permission,
|
||||
callbackUrl: ps.callbackUrl,
|
||||
secret: secret
|
||||
});
|
||||
|
||||
return await Apps.pack(app, null, {
|
||||
detail: true,
|
||||
includeSecret: true
|
||||
});
|
||||
});
|
Loading…
Add table
Add a link
Reference in a new issue