AuthManagement.tsx 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. import React from 'react';
  2. import { AuthProvider } from '../hooks/AuthProvider';
  3. import { LoginPage } from './LoginPage';
  4. type AuthManagementProps = {
  5. children?: React.ReactNode;
  6. /**
  7. * 自定义登录页面组件
  8. * 如果未提供,将使用默认的LoginPage
  9. */
  10. customLoginPage?: React.ComponentType;
  11. /**
  12. * 登录成功后重定向的路径
  13. * 默认为 '/admin/dashboard'
  14. */
  15. redirectPath?: string;
  16. /**
  17. * 默认租户ID
  18. * 如果提供,将在登录时使用该租户ID
  19. */
  20. defaultTenantId?: number;
  21. };
  22. // 内部组件:处理默认租户ID设置
  23. const AuthManagementContent: React.FC<Omit<AuthManagementProps, 'defaultTenantId'>> = ({
  24. children,
  25. customLoginPage: CustomLoginPage
  26. }) => {
  27. return (
  28. <>
  29. {children ? (
  30. children
  31. ) : (
  32. CustomLoginPage ? (
  33. <CustomLoginPage />
  34. ) : (
  35. <LoginPage />
  36. )
  37. )}
  38. </>
  39. );
  40. };
  41. /**
  42. * 认证管理主组件
  43. * 提供完整的认证管理功能,包括登录页面和认证状态管理
  44. */
  45. export const AuthManagement: React.FC<AuthManagementProps> = ({
  46. children,
  47. customLoginPage: CustomLoginPage,
  48. defaultTenantId
  49. }) => {
  50. return (
  51. <AuthProvider>
  52. <AuthManagementContent
  53. children={children}
  54. customLoginPage={CustomLoginPage}
  55. />
  56. </AuthProvider>
  57. );
  58. };