fix: Access token should be hidden/masked by default in Agent Dashboard (#6492)
Supports masking/unmasking sensitive data such as API Tokens in the agent dashboard. Fixes: #6322 Co-authored-by: raph941 <45232708+raph941@users.noreply.github.com> Co-authored-by: Nithin David Thomas <1277421+nithindavid@users.noreply.github.com>
This commit is contained in:
63
app/javascript/dashboard/components/MaskedText.vue
Normal file
63
app/javascript/dashboard/components/MaskedText.vue
Normal file
@@ -0,0 +1,63 @@
|
||||
<template>
|
||||
<div class="text--container">
|
||||
<woot-button size="small" class=" button--text" @click="onCopy">
|
||||
{{ $t('COMPONENTS.CODE.BUTTON_TEXT') }}
|
||||
</woot-button>
|
||||
<woot-button
|
||||
variant="clear"
|
||||
size="small"
|
||||
class="button--visibility"
|
||||
color-scheme="secondary"
|
||||
:icon="masked ? 'eye-show' : 'eye-hide'"
|
||||
@click.prevent="toggleMasked"
|
||||
/>
|
||||
<highlightjs v-if="value" :code="masked ? '•'.repeat(10) : value" />
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import 'highlight.js/styles/default.css';
|
||||
import { copyTextToClipboard } from 'shared/helpers/clipboard';
|
||||
|
||||
export default {
|
||||
props: {
|
||||
value: {
|
||||
type: String,
|
||||
default: '',
|
||||
},
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
masked: true,
|
||||
};
|
||||
},
|
||||
methods: {
|
||||
async onCopy(e) {
|
||||
e.preventDefault();
|
||||
await copyTextToClipboard(this.value);
|
||||
bus.$emit('newToastMessage', this.$t('COMPONENTS.CODE.COPY_SUCCESSFUL'));
|
||||
},
|
||||
toggleMasked() {
|
||||
this.masked = !this.masked;
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.text--container {
|
||||
position: relative;
|
||||
text-align: left;
|
||||
|
||||
.button--text,
|
||||
.button--visibility {
|
||||
margin-top: 0;
|
||||
position: absolute;
|
||||
right: 0;
|
||||
}
|
||||
|
||||
.button--visibility {
|
||||
right: 60px;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -112,7 +112,7 @@
|
||||
</p>
|
||||
</div>
|
||||
<div class="columns small-9 medium-5">
|
||||
<woot-code :script="currentUser.access_token" />
|
||||
<masked-text :value="currentUser.access_token" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -130,6 +130,7 @@ import globalConfigMixin from 'shared/mixins/globalConfigMixin';
|
||||
import uiSettingsMixin, {
|
||||
isEditorHotKeyEnabled,
|
||||
} from 'dashboard/mixins/uiSettings';
|
||||
import MaskedText from 'dashboard/components/MaskedText.vue';
|
||||
import PreviewCard from 'dashboard/components/ui/PreviewCard.vue';
|
||||
|
||||
export default {
|
||||
@@ -138,6 +139,7 @@ export default {
|
||||
ChangePassword,
|
||||
MessageSignature,
|
||||
PreviewCard,
|
||||
MaskedText,
|
||||
},
|
||||
mixins: [alertMixin, globalConfigMixin, uiSettingsMixin],
|
||||
data() {
|
||||
|
||||
Reference in New Issue
Block a user