fix: 国际化静态翻译
This commit is contained in:
@@ -17,7 +17,7 @@
|
||||
|
||||
<!-- 顶部菜单超出数量折叠 -->
|
||||
<el-submenu v-if="topMenus.length > visibleNumber" :style="{'--theme': theme}" index="more">
|
||||
<template slot="title">更多菜单</template>
|
||||
<template slot="title">{{ $t('common.moreMenu') }}</template>
|
||||
<template v-for="(item, index) in topMenus">
|
||||
<el-menu-item
|
||||
v-if="index >= visibleNumber"
|
||||
|
||||
@@ -2,9 +2,9 @@
|
||||
<div>
|
||||
<input ref="excel-upload-input" class="excel-upload-input" type="file" accept=".xlsx, .xls" @change="handleClick">
|
||||
<div class="drop" @drop="handleDrop" @dragover="handleDragover" @dragenter="handleDragover">
|
||||
拖拽excel文件到此处 或者
|
||||
{{ $t('common.Tip7') }}
|
||||
<el-button :loading="loading" style="margin-left:16px;" size="mini" type="primary" @click="handleUpload">
|
||||
浏览
|
||||
{{ $t('common.browses') }}
|
||||
</el-button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -2,8 +2,8 @@ import enLocale from 'element-ui/lib/locale/lang/en'
|
||||
export default {
|
||||
'lang': 'English',
|
||||
'common': {
|
||||
'Personal_center': 'Personal Center',
|
||||
'Layout_setting': 'Layout Setting',
|
||||
'Personal_center': 'Personal Center',
|
||||
'Log_out': 'Log Out',
|
||||
'Personal_information': 'Personal Information',
|
||||
'username': 'UserName',
|
||||
@@ -11,10 +11,23 @@ export default {
|
||||
'phone': 'Phone Number',
|
||||
'phone2': 'Phone',
|
||||
'sex': 'Sex',
|
||||
'sex_male': 'Male',
|
||||
'sex_female': 'Female',
|
||||
'email': 'E-mail',
|
||||
'Security_settings': 'Security Settings',
|
||||
'Save_settings': 'Save Settings',
|
||||
'Reset_settings': 'Reset Settings',
|
||||
'Change_password': 'Change Password',
|
||||
'New_password': 'New Password',
|
||||
'Old_password': 'Old Password',
|
||||
'Verify_password': 'Verify Password',
|
||||
'User_information': 'User Information',
|
||||
'Operation_log': 'Operation Log',
|
||||
'action': 'Action',
|
||||
'IP_source': 'IP Source',
|
||||
'Browser': 'Browser',
|
||||
'Request_time': 'Request Time',
|
||||
'Creation_date': 'Creation Date',
|
||||
'account': 'Account',
|
||||
'password': 'Password',
|
||||
'verification_code': 'Code',
|
||||
@@ -32,11 +45,38 @@ export default {
|
||||
'Confirm': 'Confirm',
|
||||
'Cancel': 'Cancel',
|
||||
'Operate': 'Operate',
|
||||
'Refresh': 'Refresh',
|
||||
'Closes': 'Close',
|
||||
'Closes_l': 'Close Left',
|
||||
'Closes_r': 'Close Right',
|
||||
'Closes_o': 'Close Other',
|
||||
'Closes_a': 'Close All',
|
||||
'Theme_style_setting': 'Theme Style Setting',
|
||||
'Theme_color': 'Theme Color',
|
||||
'System_layout_configuration': 'System Layout Configuration',
|
||||
'Open': 'Open',
|
||||
'Fixation': 'Fixation',
|
||||
'Display': 'Display',
|
||||
'Dynamic_titles': 'Dynamic Titles',
|
||||
'crudTip': 'Are you sure to delete this data?',
|
||||
'startDate': 'StartDate',
|
||||
'endDate': 'EndDate',
|
||||
'moreMenu': 'MoreMenu',
|
||||
'browses': 'browse',
|
||||
'fz': 'Full screen zoom',
|
||||
'Tips': 'Tips',
|
||||
'Tip1': 'Confirm deletion of selected',
|
||||
'Tip2': 'Data?',
|
||||
'Tip3': 'User name not used as login',
|
||||
'Tip4': 'Mobile phone number cannot be duplicate',
|
||||
'Tip5': 'Please enter a phone number',
|
||||
'Tip6': 'Please enter the correct 11 digit phone number',
|
||||
'Tip7': 'Drag and drop the excel file here or',
|
||||
'Tip8': 'The two passwords are different',
|
||||
'Tip9': 'Please enter your password again',
|
||||
'Tip10': 'Please enter your old password',
|
||||
'Tip11': 'Please enter your new password',
|
||||
'Tip12': '6 to 20 characters in length',
|
||||
'loading': 'loading...'
|
||||
},
|
||||
// 菜单
|
||||
|
||||
@@ -2,20 +2,33 @@ import idLocale from 'element-ui/lib/locale/lang/id'
|
||||
export default {
|
||||
'lang': 'in',
|
||||
'common': {
|
||||
'Personal_center': 'Pusat Pribadi',
|
||||
'Layout_setting': 'Pengaturan Bentangan',
|
||||
'Personal_center': 'Pusat Pribadi',
|
||||
'Log_out': 'Log Out',
|
||||
'Personal_information': 'Informasi Pribadi',
|
||||
'account': 'Akaun',
|
||||
'username': 'Nama Pengguna',
|
||||
'name': 'Nama',
|
||||
'phone': 'Nomor Ponsel',
|
||||
'phone2': 'Ponsel',
|
||||
'sex': 'Gender',
|
||||
'Security_settings': 'Pengaturan Keamanan',
|
||||
'Change_password': 'Ubah kata sandi',
|
||||
'User_information': 'Informasi Pengguna',
|
||||
'sex_male': 'laki-laki',
|
||||
'sex_female': 'wanita',
|
||||
'email': 'E-mail',
|
||||
'Security_settings': 'Pengaturan Keamanan',
|
||||
'Save_settings': 'Simpan Pengaturan',
|
||||
'Reset_settings': 'Reset pengaturan',
|
||||
'Change_password': 'Ubah kata sandi',
|
||||
'New_password': 'Kata sandi baru',
|
||||
'Old_password': 'Kata sandi lama',
|
||||
'Verify_password': 'Konfirmasi Sandi',
|
||||
'User_information': 'Informasi Pengguna',
|
||||
'Operation_log': 'Log Operasi',
|
||||
'action': 'Perilaku',
|
||||
'Browser': 'Pelayar',
|
||||
'IP_source': 'IP Sumber',
|
||||
'Request_time': 'Meminta Konsumsi Waktu',
|
||||
'Creation_date': 'Dicipta Pada',
|
||||
'account': 'Akaun',
|
||||
'password': 'Sandi',
|
||||
'verification_code': 'Kode',
|
||||
'login_rm': 'Ingat aku',
|
||||
@@ -32,11 +45,38 @@ export default {
|
||||
'Confirm': 'konfirmasi',
|
||||
'Cancel': 'Batalkan',
|
||||
'Operate': 'operasi',
|
||||
'Refresh': 'Segar',
|
||||
'Closes': 'Tutup',
|
||||
'Closes_l': 'Tutup Sisi Kiri',
|
||||
'Closes_r': 'Tutup Sisi Kanan',
|
||||
'Closes_o': 'Tutup Lain',
|
||||
'Closes_a': 'Tutup Semua',
|
||||
'Theme_style_setting': 'Pengaturan Gaya Tema',
|
||||
'Theme_color': 'Warna Tema',
|
||||
'System_layout_configuration': 'Konfigurasi layout sistem',
|
||||
'Open': 'Buka',
|
||||
'Fixation': 'Tetap',
|
||||
'Display': 'Tampilan',
|
||||
'Dynamic_titles': 'Tajuk Dinamik',
|
||||
'crudTip': 'Apakah Anda yakin untuk menghapus data ini?',
|
||||
'startDate': 'TarikhAwal',
|
||||
'endDate': 'TarikhAkhir',
|
||||
'moreMenu': 'LebihBanyakMenu',
|
||||
'browses': 'melayar',
|
||||
'fz': 'Zum layar penuh',
|
||||
'Tips': 'Prompt',
|
||||
'Tip1': 'Konfirmasi Penghapusan Yang Dipilih',
|
||||
'Tip2': 'Data?',
|
||||
'Tip3': 'Nama pengguna tidak digunakan sebagai daftar masuk',
|
||||
'Tip4': 'Nomor telepon ponsel tidak dapat duplikasi',
|
||||
'Tip5': 'Silakan masukkan nomor telepon',
|
||||
'Tip6': 'Silakan masukkan nomor telepon 11 digit yang benar',
|
||||
'Tip7': 'Seret dan jatuhkan berkas Excel di sini atau',
|
||||
'Tip8': 'Kata sandi yang dimasukkan dua kali tidak cocok',
|
||||
'Tip9': 'Silakan masukkan sandi lagi',
|
||||
'Tip10': 'Silakan masukkan kata sandi lama Anda',
|
||||
'Tip11': 'Silakan masukkan sandi baru',
|
||||
'Tip12': 'Antara 6 dan 20 karakter dalam panjang',
|
||||
'loading': 'Memuatkan Data...'
|
||||
},
|
||||
// 菜单
|
||||
|
||||
@@ -11,10 +11,23 @@ export default {
|
||||
'phone': '手机号码',
|
||||
'phone2': '手机号',
|
||||
'sex': '性别',
|
||||
'sex_male': '男',
|
||||
'sex_female': '女',
|
||||
'email': '用户邮箱',
|
||||
'Security_settings': '安全设置',
|
||||
'Save_settings': '保存配置',
|
||||
'Reset_settings': '重置配置',
|
||||
'Change_password': '修改密码',
|
||||
'New_password': '新密码',
|
||||
'Old_password': '旧密码',
|
||||
'Verify_password': '确认密码',
|
||||
'User_information': '用户资料',
|
||||
'Operation_log': '操作日志',
|
||||
'action': '行为',
|
||||
'IP_source': 'IP来源',
|
||||
'Browser': '浏览器',
|
||||
'Request_time': '请求耗时',
|
||||
'Creation_date': '创建日期',
|
||||
'account': '账号',
|
||||
'password': '密码',
|
||||
'verification_code': '验证码',
|
||||
@@ -32,11 +45,38 @@ export default {
|
||||
'Confirm': '确认',
|
||||
'Cancel': '取消',
|
||||
'Operate': '操作',
|
||||
'Refresh': '刷新',
|
||||
'Closes': '关闭',
|
||||
'Closes_l': '关闭左侧',
|
||||
'Closes_r': '关闭右侧',
|
||||
'Closes_o': '关闭其他',
|
||||
'Closes_a': '关闭全部',
|
||||
'Theme_style_setting': '主题风格设置',
|
||||
'Theme_color': '主题颜色',
|
||||
'System_layout_configuration': '系统布局配置',
|
||||
'Open': '开启',
|
||||
'Fixation': '固定',
|
||||
'Display': '显示',
|
||||
'Dynamic_titles': '动态标题',
|
||||
'crudTip': '确定删除本条数据吗?',
|
||||
'startDate': '开始日期',
|
||||
'endDate': '结束日期',
|
||||
'moreMenu': '更多菜单',
|
||||
'browses': '浏览',
|
||||
'fz': '全屏缩放',
|
||||
'Tips': '提示',
|
||||
'Tip1': '确认删除选中的',
|
||||
'Tip2': '条数据?',
|
||||
'Tip3': '用户姓名不作为登录使用',
|
||||
'Tip4': '手机号码不能重复',
|
||||
'Tip5': '请输入电话号码',
|
||||
'Tip6': '请输入正确的11位手机号码',
|
||||
'Tip7': '拖拽excel文件到此处 或者',
|
||||
'Tip8': '两次输入的密码不一致',
|
||||
'Tip9': '请再次输入密码',
|
||||
'Tip10': '请输入旧密码',
|
||||
'Tip11': '请输入新密码',
|
||||
'Tip12': '长度在 6 到 20 个字符',
|
||||
'loading': '数据加载中...'
|
||||
},
|
||||
// 菜单
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
<Doc class="right-menu-item hover-effect" />
|
||||
</el-tooltip>-->
|
||||
|
||||
<el-tooltip content="全屏缩放" effect="dark" placement="bottom">
|
||||
<el-tooltip :content="$t('common.fz')" effect="dark" placement="bottom">
|
||||
<screenfull id="screenfull" class="right-menu-item hover-effect" />
|
||||
</el-tooltip>
|
||||
<notice-icon class="right-menu-item" />
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
<div>
|
||||
<div class="setting-drawer-content">
|
||||
<div class="setting-drawer-title">
|
||||
<h3 class="drawer-title">主题风格设置</h3>
|
||||
<h3 class="drawer-title">{{ $t('common.Theme_style_setting') }}</h3>
|
||||
</div>
|
||||
<div class="setting-drawer-block-checbox">
|
||||
<div class="setting-drawer-block-checbox-item" @click="handleTheme('theme-dark')">
|
||||
@@ -51,44 +51,44 @@
|
||||
</div>
|
||||
|
||||
<div class="drawer-item">
|
||||
<span>主题颜色</span>
|
||||
<span>{{ $t('common.Theme_color') }}</span>
|
||||
<theme-picker style="float: right;height: 26px;margin: -3px 8px 0 0;" @change="themeChange" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<el-divider />
|
||||
|
||||
<h3 class="drawer-title">系统布局配置</h3>
|
||||
<h3 class="drawer-title">{{ $t('common.System_layout_configuration') }}</h3>
|
||||
|
||||
<div class="drawer-item">
|
||||
<span>开启 TopNav</span>
|
||||
<span>{{ $t('common.Open') }} TopNav</span>
|
||||
<el-switch v-model="topNav" class="drawer-switch" />
|
||||
</div>
|
||||
|
||||
<div class="drawer-item">
|
||||
<span>开启 Tags-Views</span>
|
||||
<span>{{ $t('common.Open') }} Tags-Views</span>
|
||||
<el-switch v-model="tagsView" class="drawer-switch" />
|
||||
</div>
|
||||
|
||||
<div class="drawer-item">
|
||||
<span>固定 Header</span>
|
||||
<span>{{ $t('common.Fixation') }} Header</span>
|
||||
<el-switch v-model="fixedHeader" class="drawer-switch" />
|
||||
</div>
|
||||
|
||||
<div class="drawer-item">
|
||||
<span>显示 Logo</span>
|
||||
<span>{{ $t('common.Display') }} Logo</span>
|
||||
<el-switch v-model="sidebarLogo" class="drawer-switch" />
|
||||
</div>
|
||||
|
||||
<div class="drawer-item">
|
||||
<span>动态标题</span>
|
||||
<span>{{ $t('common.Dynamic_titles') }}</span>
|
||||
<el-switch v-model="dynamicTitle" class="drawer-switch" />
|
||||
</div>
|
||||
|
||||
<el-divider />
|
||||
|
||||
<el-button size="mini" type="primary" plain icon="el-icon-document-add" @click="saveSetting">保存配置</el-button>
|
||||
<el-button size="mini" plain icon="el-icon-refresh" @click="resetSetting">重置配置</el-button>
|
||||
<el-button size="mini" type="primary" plain icon="el-icon-document-add" @click="saveSetting">{{ $t('common.Save_settings') }}</el-button>
|
||||
<el-button size="mini" plain icon="el-icon-refresh" @click="resetSetting">{{ $t('common.Reset_settings') }}</el-button>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@@ -17,12 +17,12 @@
|
||||
</router-link>
|
||||
</scroll-pane>
|
||||
<ul v-show="visible" :style="{left:left+'px',top:top+'px'}" class="contextmenu">
|
||||
<li @click="refreshSelectedTag(selectedTag)">刷新</li>
|
||||
<li v-if="!(selectedTag.meta&&selectedTag.meta.affix)" @click="closeSelectedTag(selectedTag)">关闭</li>
|
||||
<li v-if="!isFirstView()" @click="closeLeftTags()">关闭左侧</li>
|
||||
<li v-if="!isLastView()" @click="closeRightTags">关闭右侧</li>
|
||||
<li @click="closeOthersTags">关闭其他</li>
|
||||
<li @click="closeAllTags(selectedTag)">关闭全部</li>
|
||||
<li @click="refreshSelectedTag(selectedTag)">{{ $t('common.Refresh') }}</li>
|
||||
<li v-if="!(selectedTag.meta&&selectedTag.meta.affix)" @click="closeSelectedTag(selectedTag)">{{ $t('common.Closes') }}</li>
|
||||
<li v-if="!isFirstView()" @click="closeLeftTags()">{{ $t('common.Closes_l') }}</li>
|
||||
<li v-if="!isLastView()" @click="closeRightTags">{{ $t('common.Closes_r') }}</li>
|
||||
<li @click="closeOthersTags">{{ $t('common.Closes_o') }}</li>
|
||||
<li @click="closeAllTags(selectedTag)">{{ $t('common.Closes_a') }}</li>
|
||||
</ul>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@@ -51,23 +51,23 @@
|
||||
</el-form-item>
|
||||
<el-form-item :label="$t('common.sex')">
|
||||
<el-radio-group v-model="form.gender" style="width: 178px">
|
||||
<el-radio label="男">男</el-radio>
|
||||
<el-radio label="女">女</el-radio>
|
||||
<el-radio :label="$t('common.sex_male')">{{ $t('common.sex_male') }}</el-radio>
|
||||
<el-radio :label="$t('common.sex_female')">{{ $t('common.sex_female') }}</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item label="">
|
||||
<el-button :loading="saveLoading" size="mini" type="primary" @click="doSubmit">保存配置</el-button>
|
||||
<el-button :loading="saveLoading" size="mini" type="primary" @click="doSubmit">{{ $t('common.Save_settings') }}</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-tab-pane>
|
||||
<!-- 操作日志 -->
|
||||
<el-tab-pane label="操作日志" name="second">
|
||||
<el-tab-pane :label="$t('common.Operation_log')" name="second">
|
||||
<el-table v-loading="loading" :data="data" style="width: 100%;">
|
||||
<el-table-column prop="description" label="行为" min-width="130" show-overflow-tooltip />
|
||||
<el-table-column prop="description" :label="$t('common.action')" min-width="130" show-overflow-tooltip />
|
||||
<el-table-column prop="request_ip" label="IP" />
|
||||
<el-table-column show-overflow-tooltip prop="address" label="IP来源" />
|
||||
<el-table-column prop="browser" label="浏览器" min-width="120" show-overflow-tooltip />
|
||||
<el-table-column prop="time" label="请求耗时" align="center">
|
||||
<el-table-column show-overflow-tooltip prop="address" :label="$t('common.IP_source')" />
|
||||
<el-table-column prop="browser" :label="$t('common.Browser')" min-width="120" show-overflow-tooltip />
|
||||
<el-table-column prop="time" :label="$t('common.Request_time')" align="center">
|
||||
<template slot-scope="scope">
|
||||
<el-tag v-if="scope.row.time <= 300">{{ scope.row.time }}ms</el-tag>
|
||||
<el-tag v-else-if="scope.row.time <= 1000" type="warning">{{ scope.row.time }}ms</el-tag>
|
||||
@@ -80,7 +80,8 @@
|
||||
show-overflow-tooltip
|
||||
>
|
||||
<template slot="header">
|
||||
<div style="display:inline-block;float: right;cursor: pointer" @click="init">创建日期<i class="el-icon-refresh" style="margin-left: 40px" /></div>
|
||||
<div style="display:inline-block;float: right;cursor: pointer" @click="init">
|
||||
{{ $t('common.Creation_date') }} <i class="el-icon-refresh" style="margin-left: 40px" /></div>
|
||||
</template>
|
||||
<template slot-scope="scope">
|
||||
<span>{{ parseTime(scope.row.create_time) }}</span>
|
||||
@@ -126,9 +127,9 @@ export default {
|
||||
// 自定义验证
|
||||
const validPhone = (rule, value, callback) => {
|
||||
if (!value) {
|
||||
callback(new Error('请输入电话号码'))
|
||||
callback(new Error(this.$t('common.Tip5')))
|
||||
} else if (!isvalidPhone(value)) {
|
||||
callback(new Error('请输入正确的11位手机号码'))
|
||||
callback(new Error(this.$t('common.Tip6')))
|
||||
} else {
|
||||
callback()
|
||||
}
|
||||
|
||||
@@ -1,20 +1,20 @@
|
||||
<template>
|
||||
<div style="display: inline-block">
|
||||
<el-dialog :visible.sync="dialog" :close-on-click-modal="false" :before-close="cancel" :title="title" append-to-body width="500px" @close="cancel">
|
||||
<el-form ref="form" :model="form" :rules="rules" size="mini" label-width="88px">
|
||||
<el-form-item label="旧密码" prop="oldPass">
|
||||
<el-input v-model="form.oldPass" type="password" auto-complete="on" style="width: 370px;" />
|
||||
<el-form ref="form" :model="form" :rules="rules" size="mini" label-width="30%">
|
||||
<el-form-item :label="$t('common.Old_password')" prop="oldPass">
|
||||
<el-input v-model="form.oldPass" type="password" auto-complete="on" style="width: 70%;" />
|
||||
</el-form-item>
|
||||
<el-form-item label="新密码" prop="newPass">
|
||||
<el-input v-model="form.newPass" type="password" auto-complete="on" style="width: 370px;" />
|
||||
<el-form-item :label="$t('common.New_password')" prop="newPass">
|
||||
<el-input v-model="form.newPass" type="password" auto-complete="on" style="width: 70%;" />
|
||||
</el-form-item>
|
||||
<el-form-item label="确认密码" prop="confirmPass">
|
||||
<el-input v-model="form.confirmPass" type="password" auto-complete="on" style="width: 370px;" />
|
||||
<el-form-item :label="$t('common.Verify_password')" prop="confirmPass">
|
||||
<el-input v-model="form.confirmPass" type="password" auto-complete="on" style="width: 70%;" />
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<div slot="footer" class="dialog-footer">
|
||||
<el-button type="text" @click="cancel">取消</el-button>
|
||||
<el-button :loading="loading" type="primary" @click="doSubmit">确认</el-button>
|
||||
<el-button type="text" @click="cancel">{{ $t('common.Cancel') }}</el-button>
|
||||
<el-button :loading="loading" type="primary" @click="doSubmit">{{ $t('common.Confirm') }}</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
</div>
|
||||
@@ -23,28 +23,29 @@
|
||||
<script>
|
||||
import store from '@/store'
|
||||
import { updatePass } from '@/views/system/user/user'
|
||||
import i18n from '@/i18n'
|
||||
export default {
|
||||
data() {
|
||||
const confirmPass = (rule, value, callback) => {
|
||||
if (value) {
|
||||
if (this.form.newPass !== value) {
|
||||
callback(new Error('两次输入的密码不一致'))
|
||||
callback(new Error(this.$t('common.Tip8')))
|
||||
} else {
|
||||
callback()
|
||||
}
|
||||
} else {
|
||||
callback(new Error('请再次输入密码'))
|
||||
callback(new Error(i18n.t('common.Tip9')))
|
||||
}
|
||||
}
|
||||
return {
|
||||
loading: false, dialog: false, title: '修改密码', form: { oldPass: '', newPass: '', confirmPass: '' },
|
||||
loading: false, dialog: false, title: i18n.t('common.Change_password'), form: { oldPass: '', newPass: '', confirmPass: '' },
|
||||
rules: {
|
||||
oldPass: [
|
||||
{ required: true, message: '请输入旧密码', trigger: 'blur' }
|
||||
{ required: true, message: i18n.t('common.Tip10'), trigger: 'blur' }
|
||||
],
|
||||
newPass: [
|
||||
{ required: true, message: '请输入新密码', trigger: 'blur' },
|
||||
{ min: 6, max: 20, message: '长度在 6 到 20 个字符', trigger: 'blur' }
|
||||
{ required: true, message: i18n.t('common.Tip11'), trigger: 'blur' },
|
||||
{ min: 6, max: 20, message: i18n.t('common.Tip12'), trigger: 'blur' }
|
||||
],
|
||||
confirmPass: [
|
||||
{ required: true, validator: confirmPass, trigger: 'blur' }
|
||||
|
||||
Reference in New Issue
Block a user