34 lines
819 B
TypeScript
34 lines
819 B
TypeScript
![]() |
import { Redirect, Route } from 'umi';
|
||
|
|
||
|
import React from 'react';
|
||
|
import Authorized from './Authorized';
|
||
|
import type { IAuthorityType } from './CheckPermissions';
|
||
|
|
||
|
type AuthorizedRouteProps = {
|
||
|
currentAuthority: string;
|
||
|
component: React.ComponentClass<any, any>;
|
||
|
render: (props: any) => React.ReactNode;
|
||
|
redirectPath: string;
|
||
|
authority: IAuthorityType;
|
||
|
};
|
||
|
|
||
|
const AuthorizedRoute: React.SFC<AuthorizedRouteProps> = ({
|
||
|
component: Component,
|
||
|
render,
|
||
|
authority,
|
||
|
redirectPath,
|
||
|
...rest
|
||
|
}) => (
|
||
|
<Authorized
|
||
|
authority={authority}
|
||
|
noMatch={<Route {...rest} render={() => <Redirect to={{ pathname: redirectPath }} />} />}
|
||
|
>
|
||
|
<Route
|
||
|
{...rest}
|
||
|
render={(props: any) => (Component ? <Component {...props} /> : render(props))}
|
||
|
/>
|
||
|
</Authorized>
|
||
|
);
|
||
|
|
||
|
export default AuthorizedRoute;
|