feat: add whether to enable self registration toggle (#760)

* refactor(frontend): extract RegistrationDisabled as reusable component
- Create RegistrationDisabled component with i18n support
- Add registrationClosed and registrationClosedMessage translations
- Replace inline JSX in App.tsx with new component
- Improve code maintainability and reusability
- Add hover effect to back button for better UX
* fix(frontend): add registration toggle to LoginModal component
- Add useSystemConfig hook to LoginModal
- Conditionally render registration button based on registration_enabled config
- Ensures consistency with HeaderBar and LoginPage registration controls
- Completes registration toggle feature implementation across all entry points
* feat(frontend): add registration toggle UI support
- Add registration disabled page in App.tsx when registration is closed
- Hide registration link in LoginPage when registration is disabled
- Add registration_enabled field to SystemConfig interface
- Frontend conditionally shows/hides registration UI based on backend config
* feat: add registration toggle feature
Add system-level registration enable/disable control:
- Add registration_enabled config to system_config table (default: true)
- Add registration check in handleRegister API endpoint
- Expose registration_enabled status in /api/config endpoint
- Frontend can use this config to conditionally show/hide registration UI
This allows administrators to control user registration without code changes.
* fix(frontend): add registration toggle to HeaderBar and RegisterPage
- Add useSystemConfig hook and registrationEnabled check to HeaderBar
- Conditionally show/hide signup buttons in both desktop and mobile views
- Add registration check to RegisterPage to show RegistrationDisabled component
- This completes the registration toggle feature across all UI components
* test(frontend): add comprehensive unit tests for registration toggle feature
- Add RegistrationDisabled component tests (rendering, navigation, styling)
- Add registrationToggle logic tests (config handling, edge cases, multi-location consistency)
- Configure Vitest with jsdom environment for React component testing
- All 80 tests passing (9 new tests for RegistrationDisabled + 21 for toggle logic)
This commit is contained in:
Lawrence Liu
2025-11-13 01:37:24 +08:00
committed by tangmengqiu
parent b282045b66
commit ced6c3d9de
13 changed files with 437 additions and 750 deletions

View File

@@ -496,6 +496,9 @@ export const translations = {
exitLogin: 'Sign Out',
signIn: 'Sign In',
signUp: 'Sign Up',
registrationClosed: 'Registration Closed',
registrationClosedMessage:
'User registration is currently disabled. Please contact the administrator for access.',
// Hero Section
githubStarsInDays: '2.5K+ GitHub Stars in 3 days',
@@ -1305,6 +1308,8 @@ export const translations = {
exitLogin: '退出登录',
signIn: '登录',
signUp: '注册',
registrationClosed: '注册已关闭',
registrationClosedMessage: '平台当前不开放新用户注册,如需访问请联系管理员获取账号。',
// Hero Section
githubStarsInDays: '3 天内 2.5K+ GitHub Stars',