The add / edit user drawer now exposes a Source select (Local / OIDC /
SAML / CAS) so an admin can flip an existing account between Local
password and an external IdP without touching the database. Mirrors
the matching `PUT /v1/users/{id}` change on the backend.
Password field follows the selected source:
* Hidden when source != Local — those users authenticate via the IdP
and a local password row would be a /login bypass.
* Required when CREATE-with-Local, or when EDIT is switching an SSO
user back to Local (the backend rejects SSO -> Local without a
fresh password to avoid locking the user out of /login).
* Optional when editing an already-Local user, matching today's
behaviour.
A switch in EDIT mode surfaces a tip explaining the side effect
(password cleared / new password required) so the consequence isn't
hidden. The Source select is disabled on self-edit — same guard the
role column already uses — so an admin can't lock themselves out by
flipping their own row to an external source.
Strings are added to all five locales; the IdP protocol acronyms
(OIDC / SAML / CAS) render verbatim and don't need translation keys.
60 lines
3.4 KiB
TypeScript
60 lines
3.4 KiB
TypeScript
export default {
|
|
'users.title': 'ユーザー',
|
|
'users.button.create': 'ユーザーを追加',
|
|
'users.form.edit': 'ユーザーを編集',
|
|
'users.form.create': 'ユーザーを追加',
|
|
'users.table.username': 'ユーザー名',
|
|
'users.table.role': '役割',
|
|
'users.table.status': 'ステータス',
|
|
'users.status.active': 'アクティブ',
|
|
'users.status.inactive': '非アクティブ',
|
|
'users.form.active': 'アクティブアカウント',
|
|
'users.form.active.description':
|
|
'このユーザーアカウントを有効または無効にする',
|
|
'users.form.fullname': 'フルネーム',
|
|
'users.form.source': 'ソース',
|
|
'users.form.source.local': 'ローカル',
|
|
'users.form.source.tip.switchToLocal':
|
|
'ローカルに切り替えるには新しいパスワードが必要です。以後、ユーザーは標準のログインフォームからサインインします。',
|
|
'users.form.source.tip.switchToExternal':
|
|
'外部ソースに切り替えるとユーザーのローカルパスワードが削除され、設定済みの ID プロバイダーからサインインするようになります。',
|
|
'users.table.user': 'ユーザー',
|
|
'users.form.admin': '管理者',
|
|
'users.form.user': '一般ユーザー',
|
|
'users.form.newpassword': '新しいパスワード',
|
|
'users.form.currentpassword': '現在のパスワード',
|
|
'users.form.updatepassword': 'パスワードを変更',
|
|
'users.form.rule.password':
|
|
'大文字と小文字、数字、特殊文字(!@#$%^&*_+)を含む6〜64文字で、スペースは使用できません。',
|
|
'users.password.uppcase': '少なくとも1つの大文字を含む',
|
|
'users.password.lowercase': '少なくとも1つの小文字を含む',
|
|
'users.password.number': '少なくとも1つの数字を含む',
|
|
'users.password.special': '少なくとも1つの特殊文字を含む',
|
|
'users.password.length': '6〜64文字の長さ',
|
|
'users.password.modify.title': 'パスワードを変更',
|
|
'users.password.modify.description':
|
|
'アカウントのセキュリティのため、初期パスワードを変更してください。',
|
|
'users.password.modify.tips':
|
|
'パスワードを定期的に更新すると、アカウントの安全を保てます。',
|
|
'users.password.confirm': '新しいパスワードを確認',
|
|
'users.password.confirm.empty': '新しいパスワードを確認してください。',
|
|
'users.password.confirm.error': '入力された2つのパスワードが一致しません。',
|
|
'users.login.title': 'ログイン',
|
|
'users.version.islatest': 'GPUStack {version} は最新バージョンです',
|
|
'users.version.update': 'GPUStack {version} が利用可能です',
|
|
'users.settings.title': 'User Settings',
|
|
'users.status.activate': 'Activate Account',
|
|
'users.status.deactivate': 'Deactivate Account',
|
|
'users.status.inactiveAccount': 'Inactive Account',
|
|
'users.login.getInitialPassword':
|
|
'Run the following command on your GPUStack Server to retrieve the initial admin password.'
|
|
};
|
|
|
|
// ========== To-Do: Translate Keys (Remove After Translation) ==========
|
|
// 1. 'users.settings.title': 'User Settings',
|
|
// 2. 'users.status.activate': 'Activate Account',
|
|
// 3. 'users.status.deactivate': 'Deactivate Account',
|
|
// 4. 'users.status.inactiveAccount': 'Inactive Account',
|
|
// 5. 'users.login.getInitialPassword': 'Run the following command on your GPUStack Server to retrieve the initial admin password.'
|
|
// ========== End of To-Do List ==========
|