修复"安全"设置页退出登录无二次确认,单击立即登出
现象:从 account-settings-view.jsx"账户设置"、info-view.jsx,以及第2章系统消息列表"前往
安全设置"跳转按钮都能到达 acc-security-view.jsx 这个"安全"页(并非废弃页面,是与
personal-settings-view.jsx"设置"页并存的独立入口),点击"登出"没有任何二次确认,单击
图标就会立即退出登录,且没有任何撤销机会。
根因:该文件里"登出"按钮的 onClick 直接调用 this.props.onLogout(),而同文件里紧挨着的
"删除帐户"按钮走的是 onShowAlert 弹确认框(handleDeleteAccount)。此前 46a98782 那一轮
已经把 personal-settings-view.jsx"设置"页的登出从原生 window.confirm() 改成了自己的
ConfirmSheet/LogoutConfirm,但漏改了这个仍然可达的旧版"安全"页入口。
修复:新增 handleLogoutRequest,复用本文件已有的 onShowAlert 机制弹确认框,文案
("退出登录"/"确定要退出当前登录吗?")与 personal-settings-view.jsx 的 LogoutConfirm
保持一致,不新造一套措辞。
验证:本地登录后访问 #security,点击"登出"确认弹出对话框(标题/正文/按钮文案核对无误);
点击"取消"保持登录态且仍停留在安全页;点击"好"确认后正确清除 auth-token 并退回登录/租户
判断逻辑接管的空 hash。
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 5
parent
51e0fc420f
commit
a71aee9487
@@ -43,6 +43,7 @@ class AccSecurityView extends React.Component {
|
|||||||
this.handleHidePermissionsEditor = this.handleHidePermissionsEditor.bind(this);
|
this.handleHidePermissionsEditor = this.handleHidePermissionsEditor.bind(this);
|
||||||
this.handlePermissionsChanged = this.handlePermissionsChanged.bind(this);
|
this.handlePermissionsChanged = this.handlePermissionsChanged.bind(this);
|
||||||
this.handleDeleteAccount = this.handleDeleteAccount.bind(this);
|
this.handleDeleteAccount = this.handleDeleteAccount.bind(this);
|
||||||
|
this.handleLogoutRequest = this.handleLogoutRequest.bind(this);
|
||||||
this.handleCheckboxClick = this.handleCheckboxClick.bind(this);
|
this.handleCheckboxClick = this.handleCheckboxClick.bind(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -89,6 +90,26 @@ class AccSecurityView extends React.Component {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// "退出登录"这个按钮原来是 onClick 里直接 `this.props.onLogout()`,没有任何二次确认——同一个文件里
|
||||||
|
// 紧挨着的"删除帐户"按钮反而是走 onShowAlert 弹确认框的(见上面 handleDeleteAccount)。本页
|
||||||
|
// ('security' 路由)并不是废弃页面:account-settings-view.jsx、info-view.jsx 的"安全"入口,以及
|
||||||
|
// 第2章系统消息列表里"前往安全设置"跳转按钮(message-center-view.jsx)都会真的落到这个页面,
|
||||||
|
// 跟 personal-settings-view.jsx 的"设置"页(那边的退出登录已经在别的改造里换成了自己的
|
||||||
|
// ConfirmSheet/LogoutConfirm)是两条并存的独立路径——用户从系统消息点"前往安全设置"进来,单击一下
|
||||||
|
// 图标就会被立即退出登录,且没有任何撤销机会。改成跟"删除帐户"一样走 onShowAlert,文案与
|
||||||
|
// personal-settings-view.jsx 的 LogoutConfirm 保持一致,不新造一套措辞。
|
||||||
|
handleLogoutRequest(e) {
|
||||||
|
e.preventDefault();
|
||||||
|
this.props.onShowAlert(
|
||||||
|
'退出登录',
|
||||||
|
'确定要退出当前登录吗?',
|
||||||
|
(_ => this.props.onLogout()),
|
||||||
|
null, // use default text "OK"
|
||||||
|
true, // Show Reject button
|
||||||
|
null // use default text "Cancel"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
render() {
|
render() {
|
||||||
return (
|
return (
|
||||||
<>{this.state.showPermissionEditorFor ?
|
<>{this.state.showPermissionEditorFor ?
|
||||||
@@ -143,7 +164,7 @@ class AccSecurityView extends React.Component {
|
|||||||
</div>
|
</div>
|
||||||
<div className="hr" />
|
<div className="hr" />
|
||||||
<div className="panel-form-column">
|
<div className="panel-form-column">
|
||||||
<a href="#" className="danger flat-button" onClick={(e) => {e.preventDefault(); this.props.onLogout();}}>
|
<a href="#" className="danger flat-button" onClick={this.handleLogoutRequest}>
|
||||||
<i className="material-icons">exit_to_app</i> <FormattedMessage id="button_logout"
|
<i className="material-icons">exit_to_app</i> <FormattedMessage id="button_logout"
|
||||||
defaultMessage="Logout" description="Button [Logout]" />
|
defaultMessage="Logout" description="Button [Logout]" />
|
||||||
</a>
|
</a>
|
||||||
|
|||||||
@@ -56,6 +56,7 @@ class AccSecurityView extends (react__WEBPACK_IMPORTED_MODULE_0___default().Comp
|
|||||||
this.handleHidePermissionsEditor = this.handleHidePermissionsEditor.bind(this);
|
this.handleHidePermissionsEditor = this.handleHidePermissionsEditor.bind(this);
|
||||||
this.handlePermissionsChanged = this.handlePermissionsChanged.bind(this);
|
this.handlePermissionsChanged = this.handlePermissionsChanged.bind(this);
|
||||||
this.handleDeleteAccount = this.handleDeleteAccount.bind(this);
|
this.handleDeleteAccount = this.handleDeleteAccount.bind(this);
|
||||||
|
this.handleLogoutRequest = this.handleLogoutRequest.bind(this);
|
||||||
this.handleCheckboxClick = this.handleCheckboxClick.bind(this);
|
this.handleCheckboxClick = this.handleCheckboxClick.bind(this);
|
||||||
}
|
}
|
||||||
handlePasswordUpdate(pwd) {
|
handlePasswordUpdate(pwd) {
|
||||||
@@ -95,6 +96,10 @@ class AccSecurityView extends (react__WEBPACK_IMPORTED_MODULE_0___default().Comp
|
|||||||
} = this.props.intl;
|
} = this.props.intl;
|
||||||
this.props.onShowAlert(formatMessage(messages.delete_account), formatMessage(messages.delete_account_warning), _ => this.props.onDeleteAccount(), null, true, null);
|
this.props.onShowAlert(formatMessage(messages.delete_account), formatMessage(messages.delete_account_warning), _ => this.props.onDeleteAccount(), null, true, null);
|
||||||
}
|
}
|
||||||
|
handleLogoutRequest(e) {
|
||||||
|
e.preventDefault();
|
||||||
|
this.props.onShowAlert('退出登录', '确定要退出当前登录吗?', _ => this.props.onLogout(), null, true, null);
|
||||||
|
}
|
||||||
render() {
|
render() {
|
||||||
return (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_5__.jsxDEV)(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_5__.Fragment, {
|
return (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_5__.jsxDEV)(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_5__.Fragment, {
|
||||||
children: this.state.showPermissionEditorFor ? (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_5__.jsxDEV)(_widgets_permissions_editor_jsx__WEBPACK_IMPORTED_MODULE_4__["default"], {
|
children: this.state.showPermissionEditorFor ? (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_5__.jsxDEV)(_widgets_permissions_editor_jsx__WEBPACK_IMPORTED_MODULE_4__["default"], {
|
||||||
@@ -203,10 +208,7 @@ class AccSecurityView extends (react__WEBPACK_IMPORTED_MODULE_0___default().Comp
|
|||||||
children: [(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_5__.jsxDEV)("a", {
|
children: [(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_5__.jsxDEV)("a", {
|
||||||
href: "#",
|
href: "#",
|
||||||
className: "danger flat-button",
|
className: "danger flat-button",
|
||||||
onClick: e => {
|
onClick: this.handleLogoutRequest,
|
||||||
e.preventDefault();
|
|
||||||
this.props.onLogout();
|
|
||||||
},
|
|
||||||
children: [(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_5__.jsxDEV)("i", {
|
children: [(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_5__.jsxDEV)("i", {
|
||||||
className: "material-icons",
|
className: "material-icons",
|
||||||
children: "exit_to_app"
|
children: "exit_to_app"
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user