コントロールパネルから招待制のオンオフを切り替えられるように

This commit is contained in:
syuilo 2018-08-23 03:19:57 +09:00
parent d98c67e13c
commit 8ba178f795
2 changed files with 51 additions and 0 deletions

View File

@ -11,6 +11,10 @@
<x-cpu-memory :connection="connection"/> <x-cpu-memory :connection="connection"/>
</div> </div>
<div> <div>
<label>
<input type="checkbox" v-model="disableRegistration" @change="updateMeta">
<span>disableRegistration</span>
</label>
<button class="ui" @click="invite">%i18n:@invite%</button> <button class="ui" @click="invite">%i18n:@invite%</button>
<p v-if="inviteCode">Code: <code>{{ inviteCode }}</code></p> <p v-if="inviteCode">Code: <code>{{ inviteCode }}</code></p>
</div> </div>
@ -28,6 +32,7 @@ export default Vue.extend({
data() { data() {
return { return {
stats: null, stats: null,
disableRegistration: false,
inviteCode: null, inviteCode: null,
connection: null, connection: null,
connectionId: null connectionId: null
@ -37,6 +42,10 @@ export default Vue.extend({
this.connection = (this as any).os.streams.serverStatsStream.getConnection(); this.connection = (this as any).os.streams.serverStatsStream.getConnection();
this.connectionId = (this as any).os.streams.serverStatsStream.use(); this.connectionId = (this as any).os.streams.serverStatsStream.use();
(this as any).os.getMeta().then(meta => {
this.disableRegistration = meta.disableRegistration;
});
(this as any).api('stats').then(stats => { (this as any).api('stats').then(stats => {
this.stats = stats; this.stats = stats;
}); });
@ -49,6 +58,11 @@ export default Vue.extend({
(this as any).api('admin/invite').then(x => { (this as any).api('admin/invite').then(x => {
this.inviteCode = x.code; this.inviteCode = x.code;
}); });
},
updateMeta() {
(this as any).api('admin/update-meta', {
disableRegistration: this.disableRegistration
});
} }
} }
}); });

View File

@ -0,0 +1,37 @@
import $ from 'cafy';
import Meta from '../../../../models/meta';
import getParams from '../../get-params';
export const meta = {
desc: {
ja: 'インスタンスの設定を更新します。'
},
requireCredential: true,
requireAdmin: true,
params: {
disableRegistration: $.bool.optional.nullable.note({
desc: {
ja: '招待制か否か'
}
}),
}
};
export default (params: any) => new Promise(async (res, rej) => {
const [ps, psErr] = getParams(meta, params);
if (psErr) return rej(psErr);
const set = {} as any;
if (ps.disableRegistration === true || ps.disableRegistration === false) {
set.disableRegistration = ps.disableRegistration;
}
await Meta.update({}, {
$set: set
}, { upsert: true });
res();
});