diff options
| author | MeiMei <30769358+mei23@users.noreply.github.com> | 2019-01-11 08:09:44 +0900 |
|---|---|---|
| committer | syuilo <Syuilotan@yahoo.co.jp> | 2019-01-11 08:09:44 +0900 |
| commit | 203fba0216a9123cfe45dba1b3fbe5ecbb36fe03 (patch) | |
| tree | 7a707150e57aa2274886fe51adb66eb32f5506a5 /src/client/app/admin | |
| parent | 管理者がサインイン履歴を参照できるツール (#3870) (diff) | |
| download | sharkey-203fba0216a9123cfe45dba1b3fbe5ecbb36fe03.tar.gz sharkey-203fba0216a9123cfe45dba1b3fbe5ecbb36fe03.tar.bz2 sharkey-203fba0216a9123cfe45dba1b3fbe5ecbb36fe03.zip | |
管理画面でユーザーを状態でフィルタできるように (#3873)
Diffstat (limited to 'src/client/app/admin')
| -rw-r--r-- | src/client/app/admin/views/users.vue | 39 |
1 files changed, 37 insertions, 2 deletions
diff --git a/src/client/app/admin/views/users.vue b/src/client/app/admin/views/users.vue index 21d41efba8..dcacdd5bad 100644 --- a/src/client/app/admin/views/users.vue +++ b/src/client/app/admin/views/users.vue @@ -31,6 +31,14 @@ <option value="-updatedAt">{{ $t('users.sort.updatedAtAsc') }}</option> <option value="+updatedAt">{{ $t('users.sort.updatedAtDesc') }}</option> </ui-select> + <ui-select v-model="state"> + <span slot="label">{{ $t('users.state.title') }}</span> + <option value="all">{{ $t('users.state.all') }}</option> + <option value="admin">{{ $t('users.state.admin') }}</option> + <option value="moderator">{{ $t('users.state.moderator') }}</option> + <option value="verified">{{ $t('users.state.verified') }}</option> + <option value="suspended">{{ $t('users.state.suspended') }}</option> + </ui-select> <ui-select v-model="origin"> <span slot="label">{{ $t('users.origin.title') }}</span> <option value="combined">{{ $t('users.origin.combined') }}</option> @@ -39,7 +47,7 @@ </ui-select> </ui-horizon-group> <sequential-entrance animation="entranceFromTop" delay="25"> - <div class="kofvwchc" v-for="user in users"> + <div class="kofvwchc" v-for="user in users" :key="user.id"> <div> <a :href="user | userPage(null, true)"> <mk-avatar class="avatar" :user="user" :disable-link="true"/> @@ -49,6 +57,10 @@ <header> <b><mk-user-name :user="user"/></b> <span class="username">@{{ user | acct }}</span> + <span class="is-admin" v-if="user.isAdmin">admin</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-suspended" v-if="user.isSuspended" :title="$t('@.suspended-user')"><fa :icon="faSnowflake"/></span> </header> <div> <span>{{ $t('users.updatedAt') }}: <mk-time :time="user.updatedAt" mode="detail"/></span> @@ -84,6 +96,7 @@ export default Vue.extend({ suspending: false, unsuspending: false, sort: '+createdAt', + state: 'all', origin: 'combined', limit: 10, offset: 0, @@ -100,6 +113,12 @@ export default Vue.extend({ this.fetchUsers(); }, + state() { + this.users = []; + this.offset = 0; + this.fetchUsers(); + }, + origin() { this.users = []; this.offset = 0; @@ -236,7 +255,8 @@ export default Vue.extend({ }, fetchUsers() { - this.$root.api('users', { + this.$root.api('admin/show-users', { + state: this.state, origin: this.origin, sort: this.sort, offset: this.offset, @@ -284,4 +304,19 @@ export default Vue.extend({ margin-left 8px opacity 0.7 + > .is-admin + > .is-moderator + flex-shrink 0 + align-self center + margin 0 0 0 .5em + padding 1px 6px + font-size 80% + border-radius 3px + background var(--noteHeaderAdminBg) + color var(--noteHeaderAdminFg) + + > .is-verified + > .is-suspended + margin 0 0 0 .5em + color #4dabf7 </style> |