index.d.ts 885 Bytes
Newer Older
sin's avatar
sin committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
import * as React from 'react';
import AuthorizedRoute, { authority } from './AuthorizedRoute';
export type IReactComponent<P = any> =
  | React.StatelessComponent<P>
  | React.ComponentClass<P>
  | React.ClassicComponentClass<P>;

type Secured = (
  authority: authority,
  error?: React.ReactNode
) => <T extends IReactComponent>(target: T) => T;

type check = <T extends IReactComponent, S extends IReactComponent>(
  authority: authority,
  target: T,
  Exception: S
) => T | S;

export interface IAuthorizedProps {
  authority: authority;
  noMatch?: React.ReactNode;
}

export class Authorized extends React.Component<IAuthorizedProps, any> {
  public static Secured: Secured;
  public static AuthorizedRoute: typeof AuthorizedRoute;
  public static check: check;
}

declare function renderAuthorize(currentAuthority: string): typeof Authorized;

export default renderAuthorize;