This commit is contained in:
syuilo 2019-05-09 23:27:34 +09:00
parent 9e20fc5c88
commit 168de3c316
No known key found for this signature in database
GPG key ID: BDC4C49D06AB9D69
11 changed files with 2 additions and 174 deletions

View file

@ -263,7 +263,6 @@ common:
update-available-title: "更新があります" update-available-title: "更新があります"
update-available: "Misskeyの新しいバージョンがあります({newer}。現在{current}を利用中)。ページを再度読み込みすると更新が適用されます。" update-available: "Misskeyの新しいバージョンがあります({newer}。現在{current}を利用中)。ページを再度読み込みすると更新が適用されます。"
my-token-regenerated: "あなたのトークンが更新されたのでサインアウトします。" my-token-regenerated: "あなたのトークンが更新されたのでサインアウトします。"
verified-user: "公式アカウント"
hide-password: "パスワードを隠す" hide-password: "パスワードを隠す"
show-password: "パスワードを表示する" show-password: "パスワードを表示する"
@ -339,7 +338,6 @@ auth/views/index.vue:
sign-in: "サインインしてください" sign-in: "サインインしてください"
common/views/pages/explore.vue: common/views/pages/explore.vue:
verified-users: "公式アカウント"
popular-users: "人気のユーザー" popular-users: "人気のユーザー"
recently-updated-users: "最近投稿したユーザー" recently-updated-users: "最近投稿したユーザー"
recently-registered-users: "新規ユーザー" recently-registered-users: "新規ユーザー"
@ -1351,12 +1349,6 @@ admin/views/users.vue:
silence-confirm: "サイレンスしますか?" silence-confirm: "サイレンスしますか?"
unmake-silence: "サイレンスの解除" unmake-silence: "サイレンスの解除"
unsilence-confirm: "サイレンスを解除しますか?" unsilence-confirm: "サイレンスを解除しますか?"
verify: "公式アカウントにする"
verify-confirm: "公式アカウントにしますか?"
verified: "公式アカウントにしました"
unverify: "公式アカウントを解除する"
unverify-confirm: "公式アカウントを解除しますか?"
unverified: "公式アカウントを解除しました"
update-remote-user: "リモートユーザー情報の更新" update-remote-user: "リモートユーザー情報の更新"
remote-user-updated: "リモートユーザー情報を更新しました" remote-user-updated: "リモートユーザー情報を更新しました"
users: users:
@ -1373,7 +1365,6 @@ admin/views/users.vue:
admin: "管理者" admin: "管理者"
moderator: "モデレーター" moderator: "モデレーター"
adminOrModerator: "管理者+モデレーター" adminOrModerator: "管理者+モデレーター"
verified: "公式アカウント"
silenced: "サイレンス済み" silenced: "サイレンス済み"
suspended: "凍結済み" suspended: "凍結済み"
origin: origin:

View file

@ -11,7 +11,6 @@
<span class="username">@{{ user | acct }}</span> <span class="username">@{{ user | acct }}</span>
<span class="is-admin" v-if="user.isAdmin">admin</span> <span class="is-admin" v-if="user.isAdmin">admin</span>
<span class="is-moderator" v-if="user.isModerator">moderator</span> <span class="is-moderator" v-if="user.isModerator">moderator</span>
<span class="is-verified" v-if="user.isVerified" :title="$t('@.verified-user')"><fa icon="star"/></span>
<span class="is-silenced" v-if="user.isSilenced" :title="$t('@.silenced-user')"><fa :icon="faMicrophoneSlash"/></span> <span class="is-silenced" v-if="user.isSilenced" :title="$t('@.silenced-user')"><fa :icon="faMicrophoneSlash"/></span>
<span class="is-suspended" v-if="user.isSuspended" :title="$t('@.suspended-user')"><fa :icon="faSnowflake"/></span> <span class="is-suspended" v-if="user.isSuspended" :title="$t('@.suspended-user')"><fa :icon="faSnowflake"/></span>
</header> </header>
@ -77,7 +76,6 @@ export default Vue.extend({
background var(--noteHeaderAdminBg) background var(--noteHeaderAdminBg)
color var(--noteHeaderAdminFg) color var(--noteHeaderAdminFg)
> .is-verified
> .is-silenced > .is-silenced
> .is-suspended > .is-suspended
margin 0 0 0 .5em margin 0 0 0 .5em

View file

@ -12,10 +12,6 @@
<x-user :user='user'/> <x-user :user='user'/>
<div class="actions"> <div class="actions">
<ui-button @click="resetPassword"><fa :icon="faKey"/> {{ $t('reset-password') }}</ui-button> <ui-button @click="resetPassword"><fa :icon="faKey"/> {{ $t('reset-password') }}</ui-button>
<ui-horizon-group>
<ui-button @click="verifyUser" :disabled="verifying"><fa :icon="faCertificate"/> {{ $t('verify') }}</ui-button>
<ui-button @click="unverifyUser" :disabled="unverifying">{{ $t('unverify') }}</ui-button>
</ui-horizon-group>
<ui-horizon-group> <ui-horizon-group>
<ui-button @click="silenceUser"><fa :icon="faMicrophoneSlash"/> {{ $t('make-silence') }}</ui-button> <ui-button @click="silenceUser"><fa :icon="faMicrophoneSlash"/> {{ $t('make-silence') }}</ui-button>
<ui-button @click="unsilenceUser">{{ $t('unmake-silence') }}</ui-button> <ui-button @click="unsilenceUser">{{ $t('unmake-silence') }}</ui-button>
@ -47,7 +43,6 @@
<option value="all">{{ $t('users.state.all') }}</option> <option value="all">{{ $t('users.state.all') }}</option>
<option value="admin">{{ $t('users.state.admin') }}</option> <option value="admin">{{ $t('users.state.admin') }}</option>
<option value="moderator">{{ $t('users.state.moderator') }}</option> <option value="moderator">{{ $t('users.state.moderator') }}</option>
<option value="verified">{{ $t('users.state.verified') }}</option>
<option value="silenced">{{ $t('users.state.silenced') }}</option> <option value="silenced">{{ $t('users.state.silenced') }}</option>
<option value="suspended">{{ $t('users.state.suspended') }}</option> <option value="suspended">{{ $t('users.state.suspended') }}</option>
</ui-select> </ui-select>
@ -71,7 +66,7 @@
import Vue from 'vue'; import Vue from 'vue';
import i18n from '../../i18n'; import i18n from '../../i18n';
import parseAcct from "../../../../misc/acct/parse"; import parseAcct from "../../../../misc/acct/parse";
import { faCertificate, faUsers, faTerminal, faSearch, faKey, faSync, faMicrophoneSlash } from '@fortawesome/free-solid-svg-icons'; import { faUsers, faTerminal, faSearch, faKey, faSync, faMicrophoneSlash } from '@fortawesome/free-solid-svg-icons';
import { faSnowflake } from '@fortawesome/free-regular-svg-icons'; import { faSnowflake } from '@fortawesome/free-regular-svg-icons';
import XUser from './users.user.vue'; import XUser from './users.user.vue';
@ -84,8 +79,6 @@ export default Vue.extend({
return { return {
user: null, user: null,
target: null, target: null,
verifying: false,
unverifying: false,
suspending: false, suspending: false,
unsuspending: false, unsuspending: false,
sort: '+createdAt', sort: '+createdAt',
@ -95,7 +88,7 @@ export default Vue.extend({
offset: 0, offset: 0,
users: [], users: [],
existMore: false, existMore: false,
faTerminal, faCertificate, faUsers, faSnowflake, faSearch, faKey, faSync, faMicrophoneSlash faTerminal, faUsers, faSnowflake, faSearch, faKey, faSync, faMicrophoneSlash
}; };
}, },
@ -181,56 +174,6 @@ export default Vue.extend({
}); });
}, },
async verifyUser() {
if (!await this.getConfirmed(this.$t('verify-confirm'))) return;
this.verifying = true;
const process = async () => {
await this.$root.api('admin/verify-user', { userId: this.user.id });
this.$root.dialog({
type: 'success',
text: this.$t('verified')
});
};
await process().catch(e => {
this.$root.dialog({
type: 'error',
text: e.toString()
});
});
this.verifying = false;
this.refreshUser();
},
async unverifyUser() {
if (!await this.getConfirmed(this.$t('unverify-confirm'))) return;
this.unverifying = true;
const process = async () => {
await this.$root.api('admin/unverify-user', { userId: this.user.id });
this.$root.dialog({
type: 'success',
text: this.$t('unverified')
});
};
await process().catch(e => {
this.$root.dialog({
type: 'error',
text: e.toString()
});
});
this.unverifying = false;
this.refreshUser();
},
async silenceUser() { async silenceUser() {
if (!await this.getConfirmed(this.$t('silence-confirm'))) return; if (!await this.getConfirmed(this.$t('silence-confirm'))) return;

View file

@ -8,7 +8,6 @@
<span class="is-bot" v-if="note.user.isBot">bot</span> <span class="is-bot" v-if="note.user.isBot">bot</span>
<span class="is-cat" v-if="note.user.isCat">cat</span> <span class="is-cat" v-if="note.user.isCat">cat</span>
<span class="username"><mk-acct :user="note.user"/></span> <span class="username"><mk-acct :user="note.user"/></span>
<span class="is-verified" v-if="note.user.isVerified" :title="$t('@.verified-user')"><fa icon="star"/></span>
<div class="info"> <div class="info">
<span class="app" v-if="note.app && !mini && $store.state.settings.showVia">via <b>{{ note.app.name }}</b></span> <span class="app" v-if="note.app && !mini && $store.state.settings.showVia">via <b>{{ note.app.name }}</b></span>
<span class="mobile" v-if="note.viaMobile"><fa icon="mobile-alt"/></span> <span class="mobile" v-if="note.viaMobile"><fa icon="mobile-alt"/></span>
@ -95,10 +94,6 @@ export default Vue.extend({
color var(--noteHeaderAcct) color var(--noteHeaderAcct)
flex-shrink 2147483647 flex-shrink 2147483647
> .is-verified
margin 0 .5em 0 0
color #4dabf7
> .info > .info
margin-left auto margin-left auto
font-size 0.9em font-size 0.9em

View file

@ -26,9 +26,6 @@
</mk-user-list> </mk-user-list>
<template v-if="tag == null"> <template v-if="tag == null">
<mk-user-list :make-promise="verifiedUsers">
<fa :icon="faBookmark" fixed-width/>{{ $t('verified-users') }}
</mk-user-list>
<mk-user-list :make-promise="popularUsers"> <mk-user-list :make-promise="popularUsers">
<fa :icon="faChartLine" fixed-width/>{{ $t('popular-users') }} <fa :icon="faChartLine" fixed-width/>{{ $t('popular-users') }}
</mk-user-list> </mk-user-list>
@ -60,12 +57,6 @@ export default Vue.extend({
data() { data() {
return { return {
verifiedUsers: () => this.$root.api('users', {
state: 'verified',
origin: 'local',
sort: '+follower',
limit: 10
}),
popularUsers: () => this.$root.api('users', { popularUsers: () => this.$root.api('users', {
state: 'alive', state: 'alive',
origin: 'local', origin: 'local',

View file

@ -157,11 +157,6 @@ export class User {
}) })
public isModerator: boolean; public isModerator: boolean;
@Column('boolean', {
default: false,
})
public isVerified: boolean;
@Column('varchar', { @Column('varchar', {
length: 128, array: true, default: '{}' length: 128, array: true, default: '{}'
}) })

View file

@ -87,7 +87,6 @@ export class UserRepository extends Repository<User> {
isAdmin: user.isAdmin || falsy, isAdmin: user.isAdmin || falsy,
isBot: user.isBot || falsy, isBot: user.isBot || falsy,
isCat: user.isCat || falsy, isCat: user.isCat || falsy,
isVerified: user.isVerified || falsy,
// カスタム絵文字添付 // カスタム絵文字添付
emojis: user.emojis.length > 0 ? Emojis.find({ emojis: user.emojis.length > 0 ? Emojis.find({
@ -369,10 +368,6 @@ export const packedUserSchema = {
nullable: bool.false, optional: bool.true, nullable: bool.false, optional: bool.true,
description: 'Whether this account is a moderator.' description: 'Whether this account is a moderator.'
}, },
isVerified: {
type: types.boolean,
nullable: bool.false, optional: bool.true,
},
isLocked: { isLocked: {
type: types.boolean, type: types.boolean,
nullable: bool.false, optional: bool.true, nullable: bool.false, optional: bool.true,

View file

@ -36,7 +36,6 @@ export const meta = {
'admin', 'admin',
'moderator', 'moderator',
'adminOrModerator', 'adminOrModerator',
'verified',
'silenced', 'silenced',
'suspended', 'suspended',
]), ]),
@ -61,7 +60,6 @@ export default define(meta, async (ps, me) => {
case 'admin': query.where('user.isAdmin = TRUE'); break; case 'admin': query.where('user.isAdmin = TRUE'); break;
case 'moderator': query.where('user.isModerator = TRUE'); break; case 'moderator': query.where('user.isModerator = TRUE'); break;
case 'adminOrModerator': query.where('user.isAdmin = TRUE OR isModerator = TRUE'); break; case 'adminOrModerator': query.where('user.isAdmin = TRUE OR isModerator = TRUE'); break;
case 'verified': query.where('user.isVerified = TRUE'); break;
case 'alive': query.where('user.updatedAt > :date', { date: new Date(Date.now() - 1000 * 60 * 60 * 24 * 5) }); break; case 'alive': query.where('user.updatedAt > :date', { date: new Date(Date.now() - 1000 * 60 * 60 * 24 * 5) }); break;
case 'silenced': query.where('user.isSilenced = TRUE'); break; case 'silenced': query.where('user.isSilenced = TRUE'); break;
case 'suspended': query.where('user.isSuspended = TRUE'); break; case 'suspended': query.where('user.isSuspended = TRUE'); break;

View file

@ -1,38 +0,0 @@
import $ from 'cafy';
import { ID } from '../../../../misc/cafy-id';
import define from '../../define';
import { Users } from '../../../../models';
export const meta = {
desc: {
'ja-JP': '指定したユーザーの公式アカウントを解除します。',
'en-US': 'Mark a user as unverified.'
},
tags: ['admin'],
requireCredential: true,
requireModerator: true,
params: {
userId: {
validator: $.type(ID),
desc: {
'ja-JP': '対象のユーザーID',
'en-US': 'The user ID which you want to unverify'
}
},
}
};
export default define(meta, async (ps) => {
const user = await Users.findOne(ps.userId as string);
if (user == null) {
throw new Error('user not found');
}
await Users.update(user.id, {
isVerified: false
});
});

View file

@ -1,38 +0,0 @@
import $ from 'cafy';
import { ID } from '../../../../misc/cafy-id';
import define from '../../define';
import { Users } from '../../../../models';
export const meta = {
desc: {
'ja-JP': '指定したユーザーを公式アカウントにします。',
'en-US': 'Mark a user as verified.'
},
tags: ['admin'],
requireCredential: true,
requireModerator: true,
params: {
userId: {
validator: $.type(ID),
desc: {
'ja-JP': '対象のユーザーID',
'en-US': 'The user ID which you want to verify'
}
},
}
};
export default define(meta, async (ps) => {
const user = await Users.findOne(ps.userId as string);
if (user == null) {
throw new Error('user not found');
}
await Users.update(user.id, {
isVerified: true
});
});

View file

@ -37,7 +37,6 @@ export const meta = {
'admin', 'admin',
'moderator', 'moderator',
'adminOrModerator', 'adminOrModerator',
'verified',
'alive' 'alive'
]), ]),
default: 'all' default: 'all'
@ -71,7 +70,6 @@ export default define(meta, async (ps, me) => {
case 'admin': query.where('user.isAdmin = TRUE'); break; case 'admin': query.where('user.isAdmin = TRUE'); break;
case 'moderator': query.where('user.isModerator = TRUE'); break; case 'moderator': query.where('user.isModerator = TRUE'); break;
case 'adminOrModerator': query.where('user.isAdmin = TRUE OR isModerator = TRUE'); break; case 'adminOrModerator': query.where('user.isAdmin = TRUE OR isModerator = TRUE'); break;
case 'verified': query.where('user.isVerified = TRUE'); break;
case 'alive': query.where('user.updatedAt > :date', { date: new Date(Date.now() - 1000 * 60 * 60 * 24 * 5) }); break; case 'alive': query.where('user.updatedAt > :date', { date: new Date(Date.now() - 1000 * 60 * 60 * 24 * 5) }); break;
} }