diff options
Diffstat (limited to 'src/components/user_settings')
| -rw-r--r-- | src/components/user_settings/user_settings.js | 24 | ||||
| -rw-r--r-- | src/components/user_settings/user_settings.vue | 36 |
2 files changed, 60 insertions, 0 deletions
diff --git a/src/components/user_settings/user_settings.js b/src/components/user_settings/user_settings.js index 06e72112..c7dab754 100644 --- a/src/components/user_settings/user_settings.js +++ b/src/components/user_settings/user_settings.js @@ -1,6 +1,10 @@ +<<<<<<< HEAD import { compose } from 'vue-compose' import unescape from 'lodash/unescape' import get from 'lodash/get' +======= +import { unescape, truncate } from 'lodash' +>>>>>>> Add OAuth Tokens management to settings import TabSwitcher from '../tab_switcher/tab_switcher.js' import ImageCropper from '../image_cropper/image_cropper.vue' @@ -62,6 +66,9 @@ const UserSettings = { activeTab: 'profile' } }, + created () { + this.$store.dispatch('fetchTokens') + }, components: { StyleSwitcher, TabSwitcher, @@ -87,8 +94,20 @@ const UserSettings = { direct: { selected: this.newDefaultScope === 'direct' } } }, +<<<<<<< HEAD currentSaveStateNotice () { return this.$store.state.interface.settings.currentSaveStateNotice +======= + oauthTokens () { + return this.$store.state.oauthTokens.tokens.map(oauthToken => { + return { + id: oauthToken.id, + token: truncate(oauthToken.token, { length: 15 }), + refreshToken: truncate(oauthToken.refresh_token, { length: 15 }), + validUntil: new Date(oauthToken.valid_until).toLocaleDateString() + } + }) +>>>>>>> Add OAuth Tokens management to settings } }, methods: { @@ -308,6 +327,11 @@ const UserSettings = { logout () { this.$store.dispatch('logout') this.$router.replace('/') + }, + revokeToken (id) { + if(confirm('Are you sure?')) { + this.$store.dispatch('revokeToken', id) + } } } } diff --git a/src/components/user_settings/user_settings.vue b/src/components/user_settings/user_settings.vue index 983cbda0..ac75ad86 100644 --- a/src/components/user_settings/user_settings.vue +++ b/src/components/user_settings/user_settings.vue @@ -122,6 +122,30 @@ </div> <div class="setting-item"> + <h2>{{$t('settings.oauth_tokens')}}</h2> + <table class="oauth-tokens"> + <thead> + <tr> + <th>Token</th> + <th>Refresh Token</th> + <th>Valid Until</th> + <th></th> + </tr> + </thead> + <tbody> + <tr v-for="oauthToken in oauthTokens" :key="oauthToken.id"> + <td>{{oauthToken.token}}</td> + <td>{{oauthToken.refreshToken}}</td> + <td>{{oauthToken.validUntil}}</td> + <td class="actions"> + <button class="btn btn-default" @click="revokeToken(oauthToken.id)">Revoke</button> + </td> + </tr> + </tbody> + </table> + </div> + + <div class="setting-item"> <h2>{{$t('settings.delete_account')}}</h2> <p v-if="!deletingAccount">{{$t('settings.delete_account_description')}}</p> <div v-if="deletingAccount"> @@ -213,5 +237,17 @@ border-radius: $fallback--avatarRadius; border-radius: var(--avatarRadius, $fallback--avatarRadius); } + + .oauth-tokens { + width: 100%; + + th { + text-align: left; + } + + .actions { + text-align: right; + } + } } </style> |
