anhuiqiang 1 nedēļu atpakaļ
vecāks
revīzija
153cabe140

+ 6 - 1
web/components/SettingsModal.tsx

@@ -290,20 +290,23 @@ export const SettingsModal: React.FC<SettingsModalProps> = ({
                     {t('changePassword')}
                 </h3>
                 <form onSubmit={handleChangePassword} className="space-y-4 max-w-sm">
+                    <input type="hidden" name="username" value="current-user" autoComplete="username" />
                     <div>
                         <input
                             type="password"
+                            name="currentPassword"
                             placeholder={t('currentPassword')}
                             value={passwordForm.current}
                             onChange={e => setPasswordForm({ ...passwordForm, current: e.target.value })}
                             className="w-full px-3 py-2 text-sm border border-slate-300 rounded-md focus:ring-2 focus:ring-blue-500 outline-none"
                             required
-                            autoComplete="new-password"
+                            autoComplete="current-password"
                         />
                     </div>
                     <div>
                         <input
                             type="password"
+                            name="newPassword"
                             placeholder={t('newPassword')}
                             value={passwordForm.new}
                             onChange={e => setPasswordForm({ ...passwordForm, new: e.target.value })}
@@ -315,6 +318,7 @@ export const SettingsModal: React.FC<SettingsModalProps> = ({
                     <div>
                         <input
                             type="password"
+                            name="confirmPassword"
                             placeholder={t('confirmPassword')}
                             value={passwordForm.confirm}
                             onChange={e => setPasswordForm({ ...passwordForm, confirm: e.target.value })}
@@ -372,6 +376,7 @@ export const SettingsModal: React.FC<SettingsModalProps> = ({
                         onChange={e => setNewUser({ ...newUser, username: e.target.value })}
                         className="w-full px-3 py-2 text-sm border border-slate-300 rounded-md"
                         required
+                        autoComplete="username"
                     />
                     <input
                         type="password"

+ 8 - 2
web/components/views/SettingsView.tsx

@@ -563,7 +563,7 @@ export const SettingsView: React.FC<SettingsViewProps> = ({
     };
 
     const handleRemoveTenant = async (tenantId: string) => {
-        if (!(await confirm('Delete this organization?'))) return;
+        if (!(await confirm(t('confirmDeleteTenant')))) return;
         try {
             await apiClient.delete(`/v1/tenants/${tenantId}`);
             setSelectedTenantId(null);
@@ -756,20 +756,23 @@ export const SettingsView: React.FC<SettingsViewProps> = ({
                     {t('changePassword')}
                 </h3>
                 <form onSubmit={handleChangePassword} className="space-y-4 max-w-sm">
+                    <input type="hidden" name="username" value="current-user" autoComplete="username" />
                     <div>
                         <input
                             type="password"
+                            name="currentPassword"
                             placeholder={t('currentPassword')}
                             value={passwordForm.current}
                             onChange={e => setPasswordForm({ ...passwordForm, current: e.target.value })}
                             className="w-full px-3 py-2 text-sm border border-slate-300 rounded-md focus:ring-2 focus:ring-blue-500 outline-none"
                             required
-                            autoComplete="new-password"
+                            autoComplete="current-password"
                         />
                     </div>
                     <div>
                         <input
                             type="password"
+                            name="newPassword"
                             placeholder={t('newPassword')}
                             value={passwordForm.new}
                             onChange={e => setPasswordForm({ ...passwordForm, new: e.target.value })}
@@ -781,6 +784,7 @@ export const SettingsView: React.FC<SettingsViewProps> = ({
                     <div>
                         <input
                             type="password"
+                            name="confirmPassword"
                             placeholder={t('confirmPassword')}
                             value={passwordForm.confirm}
                             onChange={e => setPasswordForm({ ...passwordForm, confirm: e.target.value })}
@@ -896,6 +900,7 @@ export const SettingsView: React.FC<SettingsViewProps> = ({
                             onChange={e => setNewUser({ ...newUser, username: e.target.value })}
                             className="w-full px-4 py-3 bg-slate-50 border border-slate-200 rounded-2xl text-sm font-medium focus:ring-4 focus:ring-indigo-500/10 focus:border-indigo-500/50 outline-none transition-all"
                             required
+                            autoComplete="username"
                         />
                         <input
                             type="text"
@@ -904,6 +909,7 @@ export const SettingsView: React.FC<SettingsViewProps> = ({
                             onChange={e => setNewUser({ ...newUser, displayName: e.target.value })}
                             className="w-full px-4 py-3 bg-slate-50 border border-slate-200 rounded-2xl text-sm font-medium focus:ring-4 focus:ring-indigo-500/10 focus:border-indigo-500/50 outline-none transition-all"
                             required
+                            autoComplete="name"
                         />
                         <input
                             type="password"

+ 3 - 0
web/utils/translations.ts

@@ -150,6 +150,7 @@ export const translations = {
     userDemotedFromAdmin: "用户已降级为普通用户",
     updateUserFailed: "更新用户失败",
     confirmDeleteUser: "确定要删除此用户吗?",
+    confirmDeleteTenant: "确定要删除此组织吗?",
     deleteUser: "删除用户",
     deleteUserFailed: "删除用户失败",
     editUser: "编辑用户",
@@ -1014,6 +1015,7 @@ export const translations = {
     userDemotedFromAdmin: "User demoted from administrator",
     updateUserFailed: "Failed to update user",
     confirmDeleteUser: "Are you sure you want to delete this user?",
+    confirmDeleteTenant: "Are you sure you want to delete this organization?",
     deleteUser: "Delete User",
     deleteUserFailed: "Failed to delete user",
     userDeletedSuccessfully: "User deleted successfully",
@@ -1806,6 +1808,7 @@ export const translations = {
     userDemotedFromAdmin: "ユーザーを一般ユーザーに降格しました",
     updateUserFailed: "ユーザー情報の更新に失敗しました",
     confirmDeleteUser: "このユーザーを削除してもよろしいですか?",
+    confirmDeleteTenant: "この組織を削除してもよろしいですか?",
     deleteUser: "ユーザー削除",
     deleteUserFailed: "ユーザーの削除に失敗しました",
     userDeletedSuccessfully: "ユーザーを削除しました",