feat(perms): 资产授权添加GUI复制粘贴动作

pull/4380/head
xinwen 2020-07-21 12:37:30 +08:00 committed by ibuler
parent 2f11a70341
commit 1bc913ab13
4 changed files with 105 additions and 49 deletions

Binary file not shown.

View File

@ -8,7 +8,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: JumpServer 0.3.3\n" "Project-Id-Version: JumpServer 0.3.3\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-07-15 17:13+0800\n" "POT-Creation-Date: 2020-07-21 16:29+0800\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: ibuler <ibuler@qq.com>\n" "Last-Translator: ibuler <ibuler@qq.com>\n"
"Language-Team: JumpServer team<ibuler@qq.com>\n" "Language-Team: JumpServer team<ibuler@qq.com>\n"
@ -46,7 +46,7 @@ msgstr "自定义"
msgid "Name" msgid "Name"
msgstr "名称" msgstr "名称"
#: applications/models/database_app.py:22 assets/models/cmd_filter.py:51 #: applications/models/database_app.py:22 assets/models/cmd_filter.py:52
#: terminal/models.py:376 terminal/models.py:413 tickets/models/ticket.py:45 #: terminal/models.py:376 terminal/models.py:413 tickets/models/ticket.py:45
#: users/templates/users/user_granted_database_app.html:35 #: users/templates/users/user_granted_database_app.html:35
msgid "Type" msgid "Type"
@ -72,7 +72,7 @@ msgstr "数据库"
#: applications/models/database_app.py:33 applications/models/remote_app.py:45 #: applications/models/database_app.py:33 applications/models/remote_app.py:45
#: assets/models/asset.py:150 assets/models/asset.py:226 #: assets/models/asset.py:150 assets/models/asset.py:226
#: assets/models/base.py:237 assets/models/cluster.py:29 #: assets/models/base.py:237 assets/models/cluster.py:29
#: assets/models/cmd_filter.py:23 assets/models/cmd_filter.py:56 #: assets/models/cmd_filter.py:23 assets/models/cmd_filter.py:57
#: assets/models/domain.py:21 assets/models/domain.py:54 #: assets/models/domain.py:21 assets/models/domain.py:54
#: assets/models/group.py:23 assets/models/label.py:23 ops/models/adhoc.py:37 #: assets/models/group.py:23 assets/models/label.py:23 ops/models/adhoc.py:37
#: orgs/models.py:18 perms/models/base.py:56 settings/models.py:32 #: orgs/models.py:18 perms/models/base.py:56 settings/models.py:32
@ -104,7 +104,7 @@ msgstr "数据库应用"
#: assets/serializers/admin_user.py:32 assets/serializers/asset_user.py:47 #: assets/serializers/admin_user.py:32 assets/serializers/asset_user.py:47
#: assets/serializers/asset_user.py:84 assets/serializers/system_user.py:44 #: assets/serializers/asset_user.py:84 assets/serializers/system_user.py:44
#: assets/serializers/system_user.py:176 audits/models.py:38 #: assets/serializers/system_user.py:176 audits/models.py:38
#: perms/forms/asset_permission.py:89 perms/models/asset_permission.py:80 #: perms/forms/asset_permission.py:89 perms/models/asset_permission.py:90
#: templates/index.html:82 terminal/backends/command/models.py:19 #: templates/index.html:82 terminal/backends/command/models.py:19
#: terminal/backends/command/serializers.py:13 terminal/models.py:187 #: terminal/backends/command/serializers.py:13 terminal/models.py:187
#: users/templates/users/user_asset_permission.html:40 #: users/templates/users/user_asset_permission.html:40
@ -130,7 +130,7 @@ msgstr "参数"
#: applications/models/remote_app.py:39 assets/models/asset.py:224 #: applications/models/remote_app.py:39 assets/models/asset.py:224
#: assets/models/base.py:240 assets/models/cluster.py:28 #: assets/models/base.py:240 assets/models/cluster.py:28
#: assets/models/cmd_filter.py:26 assets/models/cmd_filter.py:59 #: assets/models/cmd_filter.py:26 assets/models/cmd_filter.py:60
#: assets/models/group.py:21 common/mixins/models.py:49 orgs/models.py:16 #: assets/models/group.py:21 common/mixins/models.py:49 orgs/models.py:16
#: perms/models/base.py:54 users/models/user.py:508 #: perms/models/base.py:54 users/models/user.py:508
#: users/serializers/group.py:35 users/templates/users/user_detail.html:97 #: users/serializers/group.py:35 users/templates/users/user_detail.html:97
@ -233,7 +233,7 @@ msgid "Domain"
msgstr "网域" msgstr "网域"
#: assets/models/asset.py:195 assets/models/user.py:109 #: assets/models/asset.py:195 assets/models/user.py:109
#: perms/models/asset_permission.py:81 #: perms/models/asset_permission.py:91
#: xpack/plugins/change_auth_plan/models.py:56 #: xpack/plugins/change_auth_plan/models.py:56
#: xpack/plugins/gathered_user/models.py:24 #: xpack/plugins/gathered_user/models.py:24
msgid "Nodes" msgid "Nodes"
@ -247,7 +247,7 @@ msgstr "激活"
#: assets/models/asset.py:199 assets/models/cluster.py:19 #: assets/models/asset.py:199 assets/models/cluster.py:19
#: assets/models/user.py:65 templates/_nav.html:44 #: assets/models/user.py:65 templates/_nav.html:44
#: xpack/plugins/cloud/models.py:133 xpack/plugins/cloud/serializers.py:82 #: xpack/plugins/cloud/models.py:133 xpack/plugins/cloud/serializers.py:83
msgid "Admin user" msgid "Admin user"
msgstr "管理用户" msgstr "管理用户"
@ -441,48 +441,48 @@ msgstr "北京电信"
msgid "BGP full netcom" msgid "BGP full netcom"
msgstr "BGP全网通" msgstr "BGP全网通"
#: assets/models/cmd_filter.py:32 assets/models/user.py:119 #: assets/models/cmd_filter.py:33 assets/models/user.py:119
msgid "Command filter" msgid "Command filter"
msgstr "命令过滤器" msgstr "命令过滤器"
#: assets/models/cmd_filter.py:39 #: assets/models/cmd_filter.py:40
msgid "Regex" msgid "Regex"
msgstr "正则表达式" msgstr "正则表达式"
#: assets/models/cmd_filter.py:40 ops/models/command.py:23 #: assets/models/cmd_filter.py:41 ops/models/command.py:23
#: terminal/backends/command/serializers.py:15 terminal/models.py:196 #: terminal/backends/command/serializers.py:15 terminal/models.py:196
msgid "Command" msgid "Command"
msgstr "命令" msgstr "命令"
#: assets/models/cmd_filter.py:45 #: assets/models/cmd_filter.py:46
msgid "Deny" msgid "Deny"
msgstr "拒绝" msgstr "拒绝"
#: assets/models/cmd_filter.py:46 #: assets/models/cmd_filter.py:47
msgid "Allow" msgid "Allow"
msgstr "允许" msgstr "允许"
#: assets/models/cmd_filter.py:50 #: assets/models/cmd_filter.py:51
msgid "Filter" msgid "Filter"
msgstr "过滤器" msgstr "过滤器"
#: assets/models/cmd_filter.py:52 assets/models/user.py:113 #: assets/models/cmd_filter.py:53 assets/models/user.py:113
msgid "Priority" msgid "Priority"
msgstr "优先级" msgstr "优先级"
#: assets/models/cmd_filter.py:52 #: assets/models/cmd_filter.py:53
msgid "1-100, the higher will be match first" msgid "1-100, the higher will be match first"
msgstr "优先级可选范围为1-1001最低优先级100最高优先级" msgstr "优先级可选范围为1-1001最低优先级100最高优先级"
#: assets/models/cmd_filter.py:54 xpack/plugins/license/models.py:29 #: assets/models/cmd_filter.py:55 xpack/plugins/license/models.py:29
msgid "Content" msgid "Content"
msgstr "内容" msgstr "内容"
#: assets/models/cmd_filter.py:54 #: assets/models/cmd_filter.py:55
msgid "One line one command" msgid "One line one command"
msgstr "每行一个命令" msgstr "每行一个命令"
#: assets/models/cmd_filter.py:55 audits/models.py:57 #: assets/models/cmd_filter.py:56 audits/models.py:57
#: authentication/templates/authentication/_access_key_modal.html:34 #: authentication/templates/authentication/_access_key_modal.html:34
#: perms/forms/asset_permission.py:20 #: perms/forms/asset_permission.py:20
#: tickets/serializers/request_asset_perm.py:54 #: tickets/serializers/request_asset_perm.py:54
@ -497,7 +497,7 @@ msgstr "每行一个命令"
msgid "Action" msgid "Action"
msgstr "动作" msgstr "动作"
#: assets/models/cmd_filter.py:63 #: assets/models/cmd_filter.py:64
msgid "Command filter rule" msgid "Command filter rule"
msgstr "命令过滤规则" msgstr "命令过滤规则"
@ -590,7 +590,7 @@ msgstr "键"
#: users/templates/users/user_asset_permission.html:41 #: users/templates/users/user_asset_permission.html:41
#: users/templates/users/user_asset_permission.html:73 #: users/templates/users/user_asset_permission.html:73
#: users/templates/users/user_asset_permission.html:158 #: users/templates/users/user_asset_permission.html:158
#: xpack/plugins/cloud/models.py:129 xpack/plugins/cloud/serializers.py:83 #: xpack/plugins/cloud/models.py:129 xpack/plugins/cloud/serializers.py:84
msgid "Node" msgid "Node"
msgstr "节点" msgstr "节点"
@ -643,7 +643,7 @@ msgstr "SFTP根路径"
#: assets/models/user.py:195 audits/models.py:39 #: assets/models/user.py:195 audits/models.py:39
#: perms/forms/asset_permission.py:95 perms/forms/remote_app_permission.py:49 #: perms/forms/asset_permission.py:95 perms/forms/remote_app_permission.py:49
#: perms/models/asset_permission.py:82 #: perms/models/asset_permission.py:92
#: perms/models/database_app_permission.py:22 #: perms/models/database_app_permission.py:22
#: perms/models/remote_app_permission.py:16 templates/_nav.html:45 #: perms/models/remote_app_permission.py:16 templates/_nav.html:45
#: terminal/backends/command/models.py:20 #: terminal/backends/command/models.py:20
@ -1000,7 +1000,7 @@ msgstr "Agent"
#: authentication/templates/authentication/_mfa_confirm_modal.html:14 #: authentication/templates/authentication/_mfa_confirm_modal.html:14
#: authentication/templates/authentication/login_otp.html:6 #: authentication/templates/authentication/login_otp.html:6
#: users/forms/profile.py:52 users/models/user.py:489 #: users/forms/profile.py:52 users/models/user.py:489
#: users/serializers/user.py:216 users/templates/users/user_detail.html:77 #: users/serializers/user.py:220 users/templates/users/user_detail.html:77
#: users/templates/users/user_profile.html:87 #: users/templates/users/user_profile.html:87
msgid "MFA" msgid "MFA"
msgstr "多因子认证" msgstr "多因子认证"
@ -1224,7 +1224,7 @@ msgid "Show"
msgstr "显示" msgstr "显示"
#: authentication/templates/authentication/_access_key_modal.html:66 #: authentication/templates/authentication/_access_key_modal.html:66
#: users/models/user.py:387 users/serializers/user.py:213 #: users/models/user.py:387 users/serializers/user.py:217
#: users/templates/users/user_profile.html:94 #: users/templates/users/user_profile.html:94
#: users/templates/users/user_profile.html:163 #: users/templates/users/user_profile.html:163
#: users/templates/users/user_profile.html:166 #: users/templates/users/user_profile.html:166
@ -1233,7 +1233,7 @@ msgid "Disable"
msgstr "禁用" msgstr "禁用"
#: authentication/templates/authentication/_access_key_modal.html:67 #: authentication/templates/authentication/_access_key_modal.html:67
#: users/models/user.py:388 users/serializers/user.py:214 #: users/models/user.py:388 users/serializers/user.py:218
#: users/templates/users/user_profile.html:92 #: users/templates/users/user_profile.html:92
#: users/templates/users/user_profile.html:170 #: users/templates/users/user_profile.html:170
msgid "Enable" msgid "Enable"
@ -1675,31 +1675,43 @@ msgstr "资产和节点至少选一个"
msgid "System users" msgid "System users"
msgstr "系统用户" msgstr "系统用户"
#: perms/models/asset_permission.py:31 settings/serializers/settings.py:56 #: perms/models/asset_permission.py:35 settings/serializers/settings.py:56
msgid "All" msgid "All"
msgstr "全部" msgstr "全部"
#: perms/models/asset_permission.py:32 #: perms/models/asset_permission.py:36
msgid "Connect" msgid "Connect"
msgstr "连接" msgstr "连接"
#: perms/models/asset_permission.py:33 #: perms/models/asset_permission.py:37
msgid "Upload file" msgid "Upload file"
msgstr "上传文件" msgstr "上传文件"
#: perms/models/asset_permission.py:34 #: perms/models/asset_permission.py:38
msgid "Download file" msgid "Download file"
msgstr "下载文件" msgstr "下载文件"
#: perms/models/asset_permission.py:35 #: perms/models/asset_permission.py:39
msgid "Upload download" msgid "Upload download"
msgstr "上传下载" msgstr "上传下载"
#: perms/models/asset_permission.py:83 #: perms/models/asset_permission.py:40
msgid "Clipboard copy"
msgstr "剪切板复制"
#: perms/models/asset_permission.py:41
msgid "Clipboard paste"
msgstr "剪切板粘贴"
#: perms/models/asset_permission.py:42
msgid "Clipboard copy paste"
msgstr "剪切板复制粘贴"
#: perms/models/asset_permission.py:93
msgid "Actions" msgid "Actions"
msgstr "动作" msgstr "动作"
#: perms/models/asset_permission.py:87 templates/_nav.html:78 #: perms/models/asset_permission.py:97 templates/_nav.html:78
#: users/templates/users/_user_detail_nav_header.html:31 #: users/templates/users/_user_detail_nav_header.html:31
msgid "Asset permission" msgid "Asset permission"
msgstr "资产授权" msgstr "资产授权"
@ -2704,8 +2716,8 @@ msgid "Public key should not be the same as your old one."
msgstr "不能和原来的密钥相同" msgstr "不能和原来的密钥相同"
#: users/forms/profile.py:137 users/forms/user.py:90 #: users/forms/profile.py:137 users/forms/user.py:90
#: users/serializers/user.py:177 users/serializers/user.py:258 #: users/serializers/user.py:181 users/serializers/user.py:262
#: users/serializers/user.py:316 #: users/serializers/user.py:320
msgid "Not a valid ssh public key" msgid "Not a valid ssh public key"
msgstr "SSH密钥不合法" msgstr "SSH密钥不合法"
@ -2795,7 +2807,7 @@ msgstr "最后更新密码日期"
msgid "Administrator is the super user of system" msgid "Administrator is the super user of system"
msgstr "Administrator是初始的超级管理员" msgstr "Administrator是初始的超级管理员"
#: users/serializers/user.py:69 users/serializers/user.py:229 #: users/serializers/user.py:69 users/serializers/user.py:233
msgid "Is first login" msgid "Is first login"
msgstr "首次登录" msgstr "首次登录"
@ -2823,19 +2835,19 @@ msgstr "用户来源名"
msgid "Role name" msgid "Role name"
msgstr "角色名" msgstr "角色名"
#: users/serializers/user.py:97 #: users/serializers/user.py:101
msgid "Role limit to {}" msgid "Role limit to {}"
msgstr "角色只能为 {}" msgstr "角色只能为 {}"
#: users/serializers/user.py:109 users/serializers/user.py:282 #: users/serializers/user.py:113 users/serializers/user.py:286
msgid "Password does not match security rules" msgid "Password does not match security rules"
msgstr "密码不满足安全规则" msgstr "密码不满足安全规则"
#: users/serializers/user.py:274 #: users/serializers/user.py:278
msgid "The old password is incorrect" msgid "The old password is incorrect"
msgstr "旧密码错误" msgstr "旧密码错误"
#: users/serializers/user.py:288 #: users/serializers/user.py:292
msgid "The newly set password is inconsistent" msgid "The newly set password is inconsistent"
msgstr "两次密码不一致" msgstr "两次密码不一致"
@ -2849,7 +2861,7 @@ msgstr "安全令牌验证"
#: users/templates/users/_base_otp.html:14 users/templates/users/_user.html:13 #: users/templates/users/_base_otp.html:14 users/templates/users/_user.html:13
#: users/templates/users/user_profile_update.html:55 #: users/templates/users/user_profile_update.html:55
#: xpack/plugins/cloud/models.py:119 xpack/plugins/cloud/serializers.py:81 #: xpack/plugins/cloud/models.py:119 xpack/plugins/cloud/serializers.py:82
msgid "Account" msgid "Account"
msgstr "账户" msgstr "账户"
@ -3736,7 +3748,7 @@ msgstr ""
msgid "Cloud account" msgid "Cloud account"
msgstr "云账号" msgstr "云账号"
#: xpack/plugins/cloud/models.py:122 xpack/plugins/cloud/serializers.py:58 #: xpack/plugins/cloud/models.py:122 xpack/plugins/cloud/serializers.py:59
msgid "Regions" msgid "Regions"
msgstr "地域" msgstr "地域"
@ -3744,7 +3756,7 @@ msgstr "地域"
msgid "Instances" msgid "Instances"
msgstr "实例" msgstr "实例"
#: xpack/plugins/cloud/models.py:137 xpack/plugins/cloud/serializers.py:85 #: xpack/plugins/cloud/models.py:137 xpack/plugins/cloud/serializers.py:86
msgid "Always update" msgid "Always update"
msgstr "总是更新" msgstr "总是更新"
@ -3860,15 +3872,15 @@ msgstr "拉美-圣地亚哥"
msgid "Tencent Cloud" msgid "Tencent Cloud"
msgstr "腾讯云" msgstr "腾讯云"
#: xpack/plugins/cloud/serializers.py:56 #: xpack/plugins/cloud/serializers.py:57
msgid "History count" msgid "History count"
msgstr "执行次数" msgstr "执行次数"
#: xpack/plugins/cloud/serializers.py:57 #: xpack/plugins/cloud/serializers.py:58
msgid "Instance count" msgid "Instance count"
msgstr "实例个数" msgstr "实例个数"
#: xpack/plugins/cloud/serializers.py:84 #: xpack/plugins/cloud/serializers.py:85
#: xpack/plugins/gathered_user/serializers.py:20 #: xpack/plugins/gathered_user/serializers.py:20
msgid "Periodic display" msgid "Periodic display"
msgstr "定时执行" msgstr "定时执行"
@ -3957,6 +3969,12 @@ msgstr "企业版"
msgid "Ultimate edition" msgid "Ultimate edition"
msgstr "旗舰版" msgstr "旗舰版"
#~ msgid "GUI copy"
#~ msgstr "GUI 复制"
#~ msgid "GUI paste"
#~ msgstr "GUI 粘贴"
#~ msgid "Covered always" #~ msgid "Covered always"
#~ msgstr "总是被覆盖" #~ msgstr "总是被覆盖"

View File

@ -0,0 +1,28 @@
# Generated by Django 2.2.10 on 2020-07-21 09:39
from django.db import migrations, models
from django.db.models import F
from ..models.asset_permission import Action
def migrate_asset_permission(apps, schema_editor):
# 已有的资产权限默认拥有剪切板复制粘贴动作
AssetPermission = apps.get_model('perms', 'AssetPermission')
AssetPermission.objects.all().update(actions=F('actions').bitor(Action.CLIPBOARD_COPY_PASTE))
class Migration(migrations.Migration):
dependencies = [
('perms', '0010_auto_20191218_1705'),
]
operations = [
migrations.AlterField(
model_name='assetpermission',
name='actions',
field=models.IntegerField(choices=[(255, 'All'), (1, 'Connect'), (2, 'Upload file'), (4, 'Download file'), (6, 'Upload download'), (8, 'Clipboard copy'), (16, 'Clipboard paste'), (24, 'Clipboard copy paste')], default=255, verbose_name='Actions'),
),
migrations.RunPython(migrate_asset_permission)
]

View File

@ -21,11 +21,15 @@ logger = logging.getLogger(__name__)
class Action: class Action:
NONE = 0 NONE = 0
CONNECT = 0b00000001
UPLOAD = 0b00000010 CONNECT = 0b1
DOWNLOAD = 0b00000100 UPLOAD = 0b1 << 1
DOWNLOAD = 0b1 << 2
CLIPBOARD_COPY = 0b1 << 3
CLIPBOARD_PASTE = 0b1 << 4
ALL = 0xff
UPDOWNLOAD = UPLOAD | DOWNLOAD UPDOWNLOAD = UPLOAD | DOWNLOAD
ALL = 0b11111111 CLIPBOARD_COPY_PASTE = CLIPBOARD_COPY | CLIPBOARD_PASTE
DB_CHOICES = ( DB_CHOICES = (
(ALL, _('All')), (ALL, _('All')),
@ -33,6 +37,9 @@ class Action:
(UPLOAD, _('Upload file')), (UPLOAD, _('Upload file')),
(DOWNLOAD, _('Download file')), (DOWNLOAD, _('Download file')),
(UPDOWNLOAD, _("Upload download")), (UPDOWNLOAD, _("Upload download")),
(CLIPBOARD_COPY, _('Clipboard copy')),
(CLIPBOARD_PASTE, _('Clipboard paste')),
(CLIPBOARD_COPY_PASTE, _('Clipboard copy paste'))
) )
NAME_MAP = { NAME_MAP = {
@ -41,9 +48,12 @@ class Action:
UPLOAD: "upload_file", UPLOAD: "upload_file",
DOWNLOAD: "download_file", DOWNLOAD: "download_file",
UPDOWNLOAD: "updownload", UPDOWNLOAD: "updownload",
CLIPBOARD_COPY: 'clipboard_copy',
CLIPBOARD_PASTE: 'clipboard_paste',
CLIPBOARD_COPY_PASTE: 'clipboard_copy_paste'
} }
NAME_MAP_REVERSE = dict({v: k for k, v in NAME_MAP.items()}) NAME_MAP_REVERSE = {v: k for k, v in NAME_MAP.items()}
CHOICES = [] CHOICES = []
for i, j in DB_CHOICES: for i, j in DB_CHOICES:
CHOICES.append((NAME_MAP[i], j)) CHOICES.append((NAME_MAP[i], j))