Commit 493b2b9a authored by rainbowmorel@163.com's avatar rainbowmorel@163.com

添加 Logout func

parent fa2e3e9f
...@@ -97,44 +97,47 @@ export function render(oldRender: Function) { ...@@ -97,44 +97,47 @@ export function render(oldRender: Function) {
isAuthenticated() isAuthenticated()
setAuthInfo() setAuthInfo()
.finally(() => {
const { pathname } = history.location
const { pathname } = history.location // 白名单页面不进行权限校验
if (whiteLists.includes(pathname)) {
// 白名单页面不进行权限校验 oldRender()
if (whiteLists.includes(pathname)) { return;
oldRender() }
return; const authInfo = getAuth()
} if (authInfo) {
const authInfo = getAuth() getMemberLoginReget({}, { useCache: true, ttl: 1000 }).then(res => {
if (authInfo) { const { data, code } = res
getMemberLoginReget({}, { useCache: true, ttl: 1000 }).then(res => { if (code === 1000) {
const { data, code } = res setAuth(data as any)
if (code === 1000) { setRouters(data.auth)
setAuth(data as any) } else {
setRouters(data.auth) removeAuth()
removeRouters()
// history.replace('/user/login')
SpaLogin()
}
oldRender()
}).catch(() => {
oldRender()
})
getManagePaasSiteEnableMultiTenancy({ siteId: GlobalConfig.global.siteInfo.id.toString() }).then(res => {
if (res.code !== 1000) {
return
}
setEnableMultiTenancy(res.data);
})
} else { } else {
removeAuth() removeAuth()
removeRouters() removeRouters()
// history.replace('/user/login') removeEnableMultiTenancy()
SpaLogin() oldRender()
} }
oldRender()
}).catch(() => {
oldRender()
}) })
getManagePaasSiteEnableMultiTenancy({ siteId: GlobalConfig.global.siteInfo.id.toString() }).then(res => {
if (res.code !== 1000) {
return
}
setEnableMultiTenancy(res.data);
})
} else {
removeAuth()
removeRouters()
removeEnableMultiTenancy()
oldRender()
}
}) })
......
...@@ -8,6 +8,7 @@ import { removeAuth, removeRouters, getAuth } from '@/utils/auth'; ...@@ -8,6 +8,7 @@ import { removeAuth, removeRouters, getAuth } from '@/utils/auth';
import { inject, observer } from 'mobx-react' import { inject, observer } from 'mobx-react'
import Icon from '@ant-design/icons'; import Icon from '@ant-design/icons';
import { ReactComponent as DefaultAvatar } from '@/assets/imgs/default_avatar.svg'; import { ReactComponent as DefaultAvatar } from '@/assets/imgs/default_avatar.svg';
import { SpaLogout } from '@/utils/keycloak-js';
const AvatarDropdown = (props) => { const AvatarDropdown = (props) => {
...@@ -16,11 +17,12 @@ const AvatarDropdown = (props) => { ...@@ -16,11 +17,12 @@ const AvatarDropdown = (props) => {
const logout = () => { const logout = () => {
removeAuth() removeAuth()
removeRouters() removeRouters()
SpaLogout()
history.replace('/user/login') history.replace('/user/login')
} }
const currentUser = { const currentUser = {
name: userAuth.name || userAuth?.company || intl.formatMessage({id: 'common.weizhiyonghu'}), name: userAuth.name || userAuth?.company || intl.formatMessage({ id: 'common.weizhiyonghu' }),
avatar: props.UserStore.avatar || '', avatar: props.UserStore.avatar || '',
} }
...@@ -36,11 +38,11 @@ const AvatarDropdown = (props) => { ...@@ -36,11 +38,11 @@ const AvatarDropdown = (props) => {
</Menu.Item> </Menu.Item>
<Menu.Divider /> */} <Menu.Divider /> */}
<Menu.Item key="changePwd"> <Menu.Item key="changePwd">
<Link to="/memberCenter/systemSetting/accountSetting"><LockOutlined />{intl.formatMessage({id: 'common.xiugaimima'})}</Link> <Link to="/memberCenter/systemSetting/accountSetting"><LockOutlined />{intl.formatMessage({ id: 'common.xiugaimima' })}</Link>
</Menu.Item> </Menu.Item>
<Menu.Item onClick={logout} key="logout"> <Menu.Item onClick={logout} key="logout">
<LogoutOutlined /> <LogoutOutlined />
{intl.formatMessage({id: 'common.tuichudenglu'})} {intl.formatMessage({ id: 'common.tuichudenglu' })}
</Menu.Item> </Menu.Item>
</Menu> </Menu>
) )
...@@ -50,8 +52,8 @@ const AvatarDropdown = (props) => { ...@@ -50,8 +52,8 @@ const AvatarDropdown = (props) => {
<span className={`${styles.action} ${styles.account}`}> <span className={`${styles.action} ${styles.account}`}>
{ {
currentUser.avatar currentUser.avatar
? <Avatar size="small" className={styles.avatar} src={currentUser.avatar} alt="avatar" /> ? <Avatar size="small" className={styles.avatar} src={currentUser.avatar} alt="avatar" />
: <Icon component={() => <DefaultAvatar className={styles.logo} />} /> : <Icon component={() => <DefaultAvatar className={styles.logo} />} />
} }
<span className={styles.name}>{currentUser?.name}</span> <span className={styles.name}>{currentUser?.name}</span>
......
import { getMemberInReturnForToken } from '@/services/MemberV2Api'; import { getMemberInReturnForToken } from '@/services/MemberV2Api';
import { message } from 'antd';
import Keycloak from 'keycloak-js'; import Keycloak from 'keycloak-js';
let _keycloak = null; let _keycloak = null;
...@@ -35,17 +36,28 @@ export function getKeycloakToken(): string { ...@@ -35,17 +36,28 @@ export function getKeycloakToken(): string {
return getKeycloak().token return getKeycloak().token
} }
export function setAuthInfo() { export function setAuthInfo(): Promise<any> {
getMemberInReturnForToken({}, { return getMemberInReturnForToken({}, {
headers: { headers: {
keycloakToken: getKeycloakToken() keycloakToken: getKeycloakToken()
} }
}).then(res => res.data) }).then(res => {
.then(res => { if (res.code !== 1000) {
message.error(res.message);
return
}
return res.data;
}).then(res => {
if (undefined != res) {
localStorage.setItem('AUTH', JSON.stringify(res)) localStorage.setItem('AUTH', JSON.stringify(res))
}) }
})
} }
export function SpaLogin() { export function SpaLogin() {
getKeycloak().login({ redirectUri: window.location.origin }) getKeycloak().login({ redirectUri: window.location.origin })
}
export function SpaLogout() {
getKeycloak().logout()
} }
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment