From f1e29a91f71342d19268b4b09f1926b25445baf6 Mon Sep 17 00:00:00 2001 From: xinwen Date: Fri, 7 Aug 2020 17:40:10 +0800 Subject: [PATCH] =?UTF-8?q?fix(users):=20=E7=94=A8=E6=88=B7=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=E6=B7=BB=E5=8A=A0=E6=B1=87=E6=80=BB=E8=A7=92=E8=89=B2?= =?UTF-8?q?=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/locale/zh/LC_MESSAGES/django.mo | Bin 56492 -> 56543 bytes apps/locale/zh/LC_MESSAGES/django.po | 98 ++++++++++++++------------- apps/users/serializers/user.py | 6 +- 3 files changed, 56 insertions(+), 48 deletions(-) diff --git a/apps/locale/zh/LC_MESSAGES/django.mo b/apps/locale/zh/LC_MESSAGES/django.mo index 10950173da98413cd8ba4da1ad59f6963a7ed21a..70a1cb7e6a2a57ee6f9fef158505be694af3221c 100644 GIT binary patch delta 13517 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 delta 13453 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 diff --git a/apps/locale/zh/LC_MESSAGES/django.po b/apps/locale/zh/LC_MESSAGES/django.po index 2ab609743..d7e1584ed 100644 --- a/apps/locale/zh/LC_MESSAGES/django.po +++ b/apps/locale/zh/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: JumpServer 0.3.3\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-08-05 16:43+0800\n" +"POT-Creation-Date: 2020-08-07 18:48+0800\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: ibuler \n" "Language-Team: JumpServer team\n" @@ -212,7 +212,7 @@ msgstr "IP" #: assets/models/asset.py:187 assets/serializers/asset_user.py:45 #: assets/serializers/gathered_user.py:20 settings/serializers/settings.py:51 -#: tickets/serializers/request_asset_perm.py:21 +#: tickets/serializers/request_asset_perm.py:25 #: users/templates/users/_granted_assets.html:25 #: users/templates/users/user_asset_permission.html:157 msgid "Hostname" @@ -487,7 +487,7 @@ msgstr "每行一个命令" #: assets/models/cmd_filter.py:56 audits/models.py:57 #: authentication/templates/authentication/_access_key_modal.html:34 #: perms/forms/asset_permission.py:20 -#: tickets/serializers/request_asset_perm.py:60 +#: tickets/serializers/request_asset_perm.py:64 #: tickets/serializers/ticket.py:30 #: users/templates/users/_granted_assets.html:29 #: users/templates/users/user_asset_permission.html:44 @@ -543,7 +543,7 @@ msgstr "默认资产组" #: templates/index.html:78 terminal/backends/command/models.py:18 #: terminal/backends/command/serializers.py:12 terminal/models.py:185 #: tickets/models/ticket.py:30 tickets/models/ticket.py:137 -#: tickets/serializers/request_asset_perm.py:61 +#: tickets/serializers/request_asset_perm.py:65 #: tickets/serializers/ticket.py:31 users/forms/group.py:15 #: users/models/user.py:157 users/models/user.py:643 #: users/serializers/group.py:20 @@ -651,7 +651,7 @@ msgstr "SFTP根路径" #: perms/models/remote_app_permission.py:16 templates/_nav.html:45 #: terminal/backends/command/models.py:20 #: terminal/backends/command/serializers.py:14 terminal/models.py:189 -#: tickets/serializers/request_asset_perm.py:23 +#: tickets/serializers/request_asset_perm.py:27 #: users/templates/users/_granted_assets.html:27 #: users/templates/users/user_asset_permission.html:42 #: users/templates/users/user_asset_permission.html:76 @@ -922,7 +922,7 @@ msgid "Success" msgstr "成功" #: audits/models.py:43 ops/models/command.py:28 perms/models/base.py:52 -#: terminal/models.py:199 tickets/serializers/request_asset_perm.py:25 +#: terminal/models.py:199 tickets/serializers/request_asset_perm.py:29 #: xpack/plugins/change_auth_plan/models.py:177 #: xpack/plugins/change_auth_plan/models.py:308 #: xpack/plugins/gathered_user/models.py:76 @@ -1003,7 +1003,7 @@ msgstr "Agent" #: authentication/templates/authentication/_mfa_confirm_modal.html:14 #: authentication/templates/authentication/login_otp.html:6 #: users/forms/profile.py:52 users/models/user.py:511 -#: users/serializers/user.py:234 users/templates/users/user_detail.html:77 +#: users/serializers/user.py:240 users/templates/users/user_detail.html:77 #: users/templates/users/user_profile.html:87 msgid "MFA" msgstr "多因子认证" @@ -1013,7 +1013,7 @@ msgstr "多因子认证" msgid "Reason" msgstr "原因" -#: audits/models.py:106 tickets/serializers/request_asset_perm.py:59 +#: audits/models.py:106 tickets/serializers/request_asset_perm.py:63 #: tickets/serializers/ticket.py:29 xpack/plugins/cloud/models.py:211 #: xpack/plugins/cloud/models.py:269 msgid "Status" @@ -1176,6 +1176,10 @@ msgstr "登录复核 {}" msgid "SSO auth closed" msgstr "SSO 认证关闭了" +#: authentication/errors.py:218 authentication/views/login.py:237 +msgid "Your password is too simple, please change it for security" +msgstr "你的密码过于简单,为了安全,请修改" + #: authentication/forms.py:26 authentication/forms.py:34 #: authentication/templates/authentication/login.html:38 #: authentication/templates/authentication/xpack_login.html:118 @@ -1242,7 +1246,7 @@ msgid "Show" msgstr "显示" #: authentication/templates/authentication/_access_key_modal.html:66 -#: users/models/user.py:409 users/serializers/user.py:231 +#: users/models/user.py:409 users/serializers/user.py:237 #: users/templates/users/user_profile.html:94 #: users/templates/users/user_profile.html:163 #: users/templates/users/user_profile.html:166 @@ -1251,7 +1255,7 @@ msgid "Disable" msgstr "禁用" #: authentication/templates/authentication/_access_key_modal.html:67 -#: users/models/user.py:410 users/serializers/user.py:232 +#: users/models/user.py:410 users/serializers/user.py:238 #: users/templates/users/user_profile.html:92 #: users/templates/users/user_profile.html:170 msgid "Enable" @@ -1387,10 +1391,6 @@ msgstr "退出登录成功,返回到登录页面" msgid "Please change your password" msgstr "请修改密码" -#: authentication/views/login.py:237 -msgid "Your password is too simple, please change it for security" -msgstr "你的密码过于简单,为了安全,请修改" - #: common/const/__init__.py:6 #, python-format msgid "%(name)s was created successfully" @@ -1703,7 +1703,7 @@ msgstr "提示:RDP 协议不支持单独控制上传或下载文件" #: perms/forms/asset_permission.py:86 perms/forms/database_app_permission.py:41 #: perms/forms/remote_app_permission.py:43 perms/models/base.py:50 #: templates/_nav.html:21 users/forms/user.py:168 users/models/group.py:31 -#: users/models/user.py:495 users/serializers/user.py:48 +#: users/models/user.py:495 users/serializers/user.py:49 #: users/templates/users/_select_user_modal.html:16 #: users/templates/users/user_asset_permission.html:39 #: users/templates/users/user_asset_permission.html:67 @@ -1769,7 +1769,7 @@ msgstr "动作" msgid "Asset permission" msgstr "资产授权" -#: perms/models/base.py:53 tickets/serializers/request_asset_perm.py:27 +#: perms/models/base.py:53 tickets/serializers/request_asset_perm.py:31 #: users/models/user.py:527 users/templates/users/user_detail.html:93 #: users/templates/users/user_profile.html:120 msgid "Date expired" @@ -2514,36 +2514,36 @@ msgstr "结束日期" msgid "Args" msgstr "参数" -#: tickets/api/request_asset_perm.py:44 +#: tickets/api/request_asset_perm.py:45 #, python-format msgid "Ticket has %s" msgstr "工单已%s" -#: tickets/api/request_asset_perm.py:89 +#: tickets/api/request_asset_perm.py:90 msgid "Confirm assets first" msgstr "请先确认资产" -#: tickets/api/request_asset_perm.py:92 +#: tickets/api/request_asset_perm.py:93 msgid "Confirmed assets changed" msgstr "确认的资产变更了" -#: tickets/api/request_asset_perm.py:96 +#: tickets/api/request_asset_perm.py:97 msgid "Confirm system-user first" msgstr "请先确认系统用户" -#: tickets/api/request_asset_perm.py:100 +#: tickets/api/request_asset_perm.py:101 msgid "Confirmed system-user changed" msgstr "确认的系统用户变更了" -#: tickets/api/request_asset_perm.py:103 xpack/plugins/cloud/models.py:202 +#: tickets/api/request_asset_perm.py:104 xpack/plugins/cloud/models.py:202 msgid "Succeed" msgstr "成功" -#: tickets/api/request_asset_perm.py:110 +#: tickets/api/request_asset_perm.py:112 msgid "From request ticket: {} {}" msgstr "来自工单申请: {} {}" -#: tickets/api/request_asset_perm.py:112 +#: tickets/api/request_asset_perm.py:114 msgid "{} request assets, approved by {}" msgstr "{} 申请资产,通过人 {}" @@ -2619,27 +2619,27 @@ msgstr "{} {} 这个工单" msgid "this ticket" msgstr "这个工单" -#: tickets/serializers/request_asset_perm.py:19 +#: tickets/serializers/request_asset_perm.py:23 msgid "IP group" msgstr "IP组" -#: tickets/serializers/request_asset_perm.py:31 +#: tickets/serializers/request_asset_perm.py:35 msgid "Confirmed assets" msgstr "确认的资产" -#: tickets/serializers/request_asset_perm.py:34 +#: tickets/serializers/request_asset_perm.py:38 msgid "Confirmed system user" msgstr "确认的系统用户" -#: tickets/serializers/request_asset_perm.py:83 +#: tickets/serializers/request_asset_perm.py:87 msgid "Invalid `org_id`" msgstr "无效的 `org_id`" -#: tickets/serializers/request_asset_perm.py:92 +#: tickets/serializers/request_asset_perm.py:96 msgid "Field `assignees` must be organization admin or superuser" msgstr "字段 assignees 必须是组织管理员或者超级管理员" -#: tickets/serializers/request_asset_perm.py:142 +#: tickets/serializers/request_asset_perm.py:146 #, python-brace-format msgid "" "\n" @@ -2808,8 +2808,8 @@ msgid "Public key should not be the same as your old one." msgstr "不能和原来的密钥相同" #: users/forms/profile.py:137 users/forms/user.py:90 -#: users/serializers/user.py:194 users/serializers/user.py:276 -#: users/serializers/user.py:334 +#: users/serializers/user.py:200 users/serializers/user.py:282 +#: users/serializers/user.py:340 msgid "Not a valid ssh public key" msgstr "SSH密钥不合法" @@ -2833,15 +2833,15 @@ msgstr "添加到用户组" msgid "* Your password does not meet the requirements" msgstr "* 您的密码不符合要求" -#: users/forms/user.py:124 users/serializers/user.py:36 +#: users/forms/user.py:124 users/serializers/user.py:37 msgid "Reset link will be generated and sent to the user" msgstr "生成重置密码链接,通过邮件发送给用户" -#: users/forms/user.py:125 users/serializers/user.py:37 +#: users/forms/user.py:125 users/serializers/user.py:38 msgid "Set password" msgstr "设置密码" -#: users/forms/user.py:132 users/serializers/user.py:44 +#: users/forms/user.py:132 users/serializers/user.py:45 #: xpack/plugins/change_auth_plan/models.py:61 #: xpack/plugins/change_auth_plan/serializers.py:30 msgid "Password strategy" @@ -2887,51 +2887,55 @@ msgstr "管理员" msgid "Administrator is the super user of system" msgstr "Administrator是初始的超级管理员" -#: users/serializers/user.py:54 users/serializers/user.py:90 +#: users/serializers/user.py:55 users/serializers/user.py:93 msgid "Organization role name" msgstr "组织角色名称" -#: users/serializers/user.py:81 users/serializers/user.py:247 +#: users/serializers/user.py:59 +msgid "Total role name" +msgstr "汇总角色名称" + +#: users/serializers/user.py:84 users/serializers/user.py:253 msgid "Is first login" msgstr "首次登录" -#: users/serializers/user.py:82 +#: users/serializers/user.py:85 msgid "Is valid" msgstr "账户是否有效" -#: users/serializers/user.py:83 +#: users/serializers/user.py:86 msgid "Is expired" msgstr " 是否过期" -#: users/serializers/user.py:84 +#: users/serializers/user.py:87 msgid "Avatar url" msgstr "头像路径" -#: users/serializers/user.py:88 +#: users/serializers/user.py:91 msgid "Groups name" msgstr "用户组名" -#: users/serializers/user.py:89 +#: users/serializers/user.py:92 msgid "Source name" msgstr "用户来源名" -#: users/serializers/user.py:91 +#: users/serializers/user.py:94 msgid "Super role name" msgstr "超级角色名称" -#: users/serializers/user.py:114 +#: users/serializers/user.py:120 msgid "Role limit to {}" msgstr "角色只能为 {}" -#: users/serializers/user.py:126 users/serializers/user.py:300 +#: users/serializers/user.py:132 users/serializers/user.py:306 msgid "Password does not match security rules" msgstr "密码不满足安全规则" -#: users/serializers/user.py:292 +#: users/serializers/user.py:298 msgid "The old password is incorrect" msgstr "旧密码错误" -#: users/serializers/user.py:306 +#: users/serializers/user.py:312 msgid "The newly set password is inconsistent" msgstr "两次密码不一致" diff --git a/apps/users/serializers/user.py b/apps/users/serializers/user.py index 65a8ee4ea..908978d75 100644 --- a/apps/users/serializers/user.py +++ b/apps/users/serializers/user.py @@ -56,6 +56,7 @@ class UserSerializer(CommonBulkSerializerMixin, serializers.ModelSerializer): allow_null=True, required=False, allow_blank=True, choices=ORG_ROLE.choices ) + total_role_display = serializers.SerializerMethodField(label=_('Total role name')) key_prefix_block = "_LOGIN_BLOCK_{}" class Meta: @@ -67,7 +68,7 @@ class UserSerializer(CommonBulkSerializerMixin, serializers.ModelSerializer): fields_small = fields_mini + [ 'password', 'email', 'public_key', 'wechat', 'phone', 'mfa_level', 'mfa_enabled', 'mfa_level_display', 'mfa_force_enabled', 'role_display', 'org_role_display', - 'comment', 'source', 'is_valid', 'is_expired', + 'total_role_display', 'comment', 'source', 'is_valid', 'is_expired', 'is_active', 'created_by', 'is_first_login', 'password_strategy', 'date_password_last_updated', 'date_expired', 'avatar_url', 'source_display', 'date_joined', 'last_login' @@ -109,6 +110,9 @@ class UserSerializer(CommonBulkSerializerMixin, serializers.ModelSerializer): choices.pop(User.ROLE.AUDITOR, None) role._choices = choices + def get_total_role_display(self, instance): + return ' | '.join({str(instance.role_display), str(instance.org_role_display)}) + def validate_role(self, value): request = self.context.get('request') if not request.user.is_superuser and value != User.ROLE.USER: