Refactor
This commit is contained in:
parent
31c26354c5
commit
772063aade
5 changed files with 39 additions and 83 deletions
|
@ -30,6 +30,7 @@
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import Vue from 'vue';
|
import Vue from 'vue';
|
||||||
import i18n from '../../i18n';
|
import i18n from '../../i18n';
|
||||||
|
import { kinds } from '../../../../server/api/kinds';
|
||||||
|
|
||||||
export default Vue.extend({
|
export default Vue.extend({
|
||||||
i18n: i18n('dev/views/new-app.vue'),
|
i18n: i18n('dev/views/new-app.vue'),
|
||||||
|
@ -40,14 +41,9 @@ export default Vue.extend({
|
||||||
cb: '',
|
cb: '',
|
||||||
nidState: null,
|
nidState: null,
|
||||||
permission: [],
|
permission: [],
|
||||||
permissionsList: []
|
permissionsList: kinds
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
created() {
|
|
||||||
this.$root.api('permissions').then(permissions => {
|
|
||||||
this.permissionsList = permissions
|
|
||||||
});
|
|
||||||
},
|
|
||||||
methods: {
|
methods: {
|
||||||
onSubmit() {
|
onSubmit() {
|
||||||
this.$root.api('app/create', {
|
this.$root.api('app/create', {
|
||||||
|
|
|
@ -1,29 +0,0 @@
|
||||||
import define from '../define';
|
|
||||||
import { kindsList } from '../kinds';
|
|
||||||
|
|
||||||
export const meta = {
|
|
||||||
stability: 'stable',
|
|
||||||
|
|
||||||
desc: {
|
|
||||||
'ja-JP': 'パーミッションの一覧を返します。',
|
|
||||||
'en-US': 'Get the list of permissons.'
|
|
||||||
},
|
|
||||||
|
|
||||||
tags: ['meta'],
|
|
||||||
|
|
||||||
requireCredential: false,
|
|
||||||
|
|
||||||
params: {
|
|
||||||
},
|
|
||||||
|
|
||||||
res: {
|
|
||||||
type: 'array',
|
|
||||||
items: {
|
|
||||||
type: 'string',
|
|
||||||
}
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
export default define(meta, async () => {
|
|
||||||
return kindsList;
|
|
||||||
});
|
|
|
@ -1,8 +1,4 @@
|
||||||
import endpoints from './endpoints';
|
export const kinds = [
|
||||||
import * as locale from '../../../locales/';
|
|
||||||
import { fromEntries } from '../../prelude/array';
|
|
||||||
|
|
||||||
export const kindsList = [
|
|
||||||
'read:account',
|
'read:account',
|
||||||
'write:account',
|
'write:account',
|
||||||
'read:blocks',
|
'read:blocks',
|
||||||
|
@ -24,35 +20,3 @@ export const kindsList = [
|
||||||
'write:reactions',
|
'write:reactions',
|
||||||
'write:votes'
|
'write:votes'
|
||||||
];
|
];
|
||||||
|
|
||||||
export interface IKindInfo {
|
|
||||||
endpoints: string[];
|
|
||||||
descs: { [x: string]: string; };
|
|
||||||
}
|
|
||||||
|
|
||||||
export function kinds() {
|
|
||||||
const kinds = fromEntries(
|
|
||||||
kindsList
|
|
||||||
.map(k => [k, {
|
|
||||||
endpoints: [],
|
|
||||||
descs: fromEntries(
|
|
||||||
Object.keys(locale)
|
|
||||||
.map(l => [l, locale[l].common.permissions[k] as string] as [string, string])
|
|
||||||
) as { [x: string]: string; }
|
|
||||||
}] as [ string, IKindInfo ])
|
|
||||||
) as { [x: string]: IKindInfo; };
|
|
||||||
|
|
||||||
const errors = [] as string[][];
|
|
||||||
|
|
||||||
for (const endpoint of endpoints.filter(ep => !ep.meta.secure)) {
|
|
||||||
if (endpoint.meta.kind) {
|
|
||||||
const kind = endpoint.meta.kind;
|
|
||||||
if (kind in kinds) kinds[kind].endpoints.push(endpoint.name);
|
|
||||||
else errors.push([kind, endpoint.name]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (errors.length > 0) throw Error('\n ' + errors.map((e) => `Unknown kind (permission) "${e[0]}" found at ${e[1]}.`).join('\n '));
|
|
||||||
|
|
||||||
return kinds;
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,5 +1,40 @@
|
||||||
import config from '../../../config';
|
import config from '../../../config';
|
||||||
import { IKindInfo, kinds } from '../kinds';
|
import endpoints from '../endpoints';
|
||||||
|
import * as locale from '../../../../locales/';
|
||||||
|
import { fromEntries } from '../../../prelude/array';
|
||||||
|
import { kinds as kindsList } from '../kinds';
|
||||||
|
|
||||||
|
export interface IKindInfo {
|
||||||
|
endpoints: string[];
|
||||||
|
descs: { [x: string]: string; };
|
||||||
|
}
|
||||||
|
|
||||||
|
export function kinds() {
|
||||||
|
const kinds = fromEntries(
|
||||||
|
kindsList
|
||||||
|
.map(k => [k, {
|
||||||
|
endpoints: [],
|
||||||
|
descs: fromEntries(
|
||||||
|
Object.keys(locale)
|
||||||
|
.map(l => [l, locale[l].common.permissions[k] as string] as [string, string])
|
||||||
|
) as { [x: string]: string; }
|
||||||
|
}] as [ string, IKindInfo ])
|
||||||
|
) as { [x: string]: IKindInfo; };
|
||||||
|
|
||||||
|
const errors = [] as string[][];
|
||||||
|
|
||||||
|
for (const endpoint of endpoints.filter(ep => !ep.meta.secure)) {
|
||||||
|
if (endpoint.meta.kind) {
|
||||||
|
const kind = endpoint.meta.kind;
|
||||||
|
if (kind in kinds) kinds[kind].endpoints.push(endpoint.name);
|
||||||
|
else errors.push([kind, endpoint.name]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (errors.length > 0) throw Error('\n ' + errors.map((e) => `Unknown kind (permission) "${e[0]}" found at ${e[1]}.`).join('\n '));
|
||||||
|
|
||||||
|
return kinds;
|
||||||
|
}
|
||||||
|
|
||||||
export function getDescription(lang = 'ja-JP'): string {
|
export function getDescription(lang = 'ja-JP'): string {
|
||||||
const permissionTable = (Object.entries(kinds()) as [string, IKindInfo][])
|
const permissionTable = (Object.entries(kinds()) as [string, IKindInfo][])
|
||||||
|
|
10
test/api.ts
10
test/api.ts
|
@ -18,8 +18,6 @@ import * as assert from 'assert';
|
||||||
import * as childProcess from 'child_process';
|
import * as childProcess from 'child_process';
|
||||||
import { async, signup, request, post, react, uploadFile } from './utils';
|
import { async, signup, request, post, react, uploadFile } from './utils';
|
||||||
|
|
||||||
import { kinds } from '../src/server/api/kinds';
|
|
||||||
|
|
||||||
describe('API', () => {
|
describe('API', () => {
|
||||||
let p: childProcess.ChildProcess;
|
let p: childProcess.ChildProcess;
|
||||||
|
|
||||||
|
@ -967,13 +965,5 @@ describe('API', () => {
|
||||||
assert.strictEqual(res.body[0].id, alicePost.id);
|
assert.strictEqual(res.body[0].id, alicePost.id);
|
||||||
}));
|
}));
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('kinds', () => {
|
|
||||||
it('登録されていないパーミッションを利用しているAPIがない', () => {
|
|
||||||
const res = kinds();
|
|
||||||
|
|
||||||
assert.strictEqual(typeof res === 'object', true);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
*/
|
*/
|
||||||
|
|
Loading…
Reference in a new issue