diff options
| author | Kana <[email protected]> | 2020-12-24 21:41:24 +0900 |
|---|---|---|
| committer | GitHub <[email protected]> | 2020-12-24 21:41:24 +0900 |
| commit | 2412a60bd4cb2364a477a3af79a8c6dcb6b0ddab (patch) | |
| tree | dbf2b2cad342f31849a62089dedd40165758af86 /src/site/pages/dashboard/admin/user | |
| parent | Enable deleting files with the API key (diff) | |
| parent | bug: fix showlist resetting itself every time the page is changed (diff) | |
| download | host.fuwn.me-2412a60bd4cb2364a477a3af79a8c6dcb6b0ddab.tar.xz host.fuwn.me-2412a60bd4cb2364a477a3af79a8c6dcb6b0ddab.zip | |
Merge pull request #228 from Zephyrrus/begone_trailing_commas
Merge own dev branch into main dev branch
Diffstat (limited to 'src/site/pages/dashboard/admin/user')
| -rw-r--r-- | src/site/pages/dashboard/admin/user/_id.vue | 140 |
1 files changed, 79 insertions, 61 deletions
diff --git a/src/site/pages/dashboard/admin/user/_id.vue b/src/site/pages/dashboard/admin/user/_id.vue index 7703b1c..484d986 100644 --- a/src/site/pages/dashboard/admin/user/_id.vue +++ b/src/site/pages/dashboard/admin/user/_id.vue @@ -2,50 +2,66 @@ .underline { text-decoration: underline; } </style> <template> - <section class="hero is-fullheight dashboard"> - <div class="hero-body"> - <div class="container"> - <div class="columns"> - <div class="column is-narrow"> - <Sidebar /> - </div> - <div class="column"> - <h2 class="subtitle">User details</h2> - <hr> - - <b-field label="User Id" - horizontal> - <span>{{ user.id }}</span> - </b-field> + <section class="section is-fullheight dashboard"> + <div class="container"> + <div class="columns"> + <div class="column is-narrow"> + <Sidebar /> + </div> + <div class="column"> + <h2 class="subtitle"> + User details + </h2> + <hr> - <b-field label="Username" - horizontal> - <span>{{ user.username }}</span> - </b-field> + <b-field + label="User Id" + horizontal> + <span>{{ user.id }}</span> + </b-field> - <b-field label="Enabled" - horizontal> - <span>{{ user.enabled }}</span> - </b-field> + <b-field + label="Username" + horizontal> + <span>{{ user.username }}</span> + </b-field> - <b-field label="Registered" - horizontal> - <span><timeago :since="user.createdAt" /></span> - </b-field> + <b-field + label="Enabled" + horizontal> + <span>{{ user.enabled }}</span> + </b-field> - <b-field label="Files" - horizontal> - <span>{{ files.length }}</span> - </b-field> + <b-field + label="Registered" + horizontal> + <span><timeago :since="user.createdAt" /></span> + </b-field> - <div class="mb2 mt2 text-center"> - <button class="button is-danger" - @click="promptDisableUser">Disable user</button> - </div> + <b-field + label="Files" + horizontal> + <span>{{ user.files.length }}</span> + </b-field> - <Grid v-if="files.length" - :files="files" /> + <div class="mb2 mt2 text-center"> + <b-button + v-if="user.enabled" + type="is-danger" + @click="promptDisableUser"> + Disable user + </b-button> + <b-button + v-if="!user.enabled" + type="is-success" + @click="promptEnableUser"> + Enable user + </b-button> </div> + + <Grid + v-if="user.files.length" + :files="user.files" /> </div> </div> </div> @@ -53,6 +69,7 @@ </template> <script> +import { mapState } from 'vuex'; import Sidebar from '~/components/sidebar/Sidebar.vue'; import Grid from '~/components/grid/Grid.vue'; @@ -61,41 +78,42 @@ export default { Sidebar, Grid }, - middleware: ['auth', 'admin'], + middleware: ['auth', 'admin', ({ route, store }) => { + try { + store.dispatch('admin/fetchUser', route.params.id); + } catch (e) { + // eslint-disable-next-line no-console + console.error(e); + } + }], data() { return { - options: {}, - files: null, - user: null + options: {} }; }, - async asyncData({ $axios, route }) { - try { - const response = await $axios.$get(`/admin/users/${route.params.id}`); - return { - files: response.files ? response.files : null, - user: response.user ? response.user : null - }; - } catch (error) { - console.error(error); - return { - files: null, - user: null - }; - } - }, + computed: mapState({ + user: (state) => state.admin.user + }), methods: { promptDisableUser() { this.$buefy.dialog.confirm({ - message: 'Are you sure you want to disable the account of the user that uploaded this file?', + type: 'is-danger', + message: 'Are you sure you want to disable the account of this user?', onConfirm: () => this.disableUser() }); }, - async disableUser() { - const response = await this.$axios.$post('admin/users/disable', { - id: this.user.id + promptEnableUser() { + this.$buefy.dialog.confirm({ + type: 'is-danger', + message: 'Are you sure you want to enable the account of this user?', + onConfirm: () => this.enableUser() }); - this.$buefy.toast.open(response.message); + }, + disableUser() { + this.$handler.executeAction('admin/disableUser', this.user.id); + }, + enableUser() { + this.$handler.executeAction('admin/enableUser', this.user.id); } } }; |