mirror of
https://github.com/Frooodle/Stirling-PDF.git
synced 2025-11-16 01:21:16 +01:00
# Description of Changes New Features Audit System: Complete audit logging with dashboard, event tracking, and export capabilities Invite Links: Secure invite system with email notifications and expiration Usage Analytics: Endpoint usage statistics and visualization License Management: User counting with grandfathering and license enforcement ## Checklist ### General - [ ] I have read the [Contribution Guidelines](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/CONTRIBUTING.md) - [ ] I have read the [Stirling-PDF Developer Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/devGuide/DeveloperGuide.md) (if applicable) - [ ] I have read the [How to add new languages to Stirling-PDF](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/devGuide/HowToAddNewLanguage.md) (if applicable) - [ ] I have performed a self-review of my own code - [ ] My changes generate no new warnings ### Documentation - [ ] I have updated relevant docs on [Stirling-PDF's doc repo](https://github.com/Stirling-Tools/Stirling-Tools.github.io/blob/main/docs/) (if functionality has heavily changed) - [ ] I have read the section [Add New Translation Tags](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/devGuide/HowToAddNewLanguage.md#add-new-translation-tags) (for new translation tags only) ### UI Changes (if applicable) - [ ] Screenshots or videos demonstrating the UI changes are attached (e.g., as comments or direct attachments in the PR) ### Testing (if applicable) - [ ] I have tested my changes locally. Refer to the [Testing Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/devGuide/DeveloperGuide.md#6-testing) for more details. --------- Co-authored-by: James Brunton <jbrunton96@gmail.com>
54 lines
1.7 KiB
TypeScript
54 lines
1.7 KiB
TypeScript
import React from 'react';
|
|
import { Stack, Text, Button } from '@mantine/core';
|
|
import { useTranslation } from 'react-i18next';
|
|
import { useAuth } from '@app/auth/UseSession';
|
|
import { useNavigate } from 'react-router-dom';
|
|
import CoreGeneralSection from '@core/components/shared/config/configSections/GeneralSection';
|
|
|
|
/**
|
|
* Proprietary extension of GeneralSection that adds account management
|
|
*/
|
|
const GeneralSection: React.FC = () => {
|
|
const { t } = useTranslation();
|
|
const { signOut, user } = useAuth();
|
|
const navigate = useNavigate();
|
|
|
|
const handleLogout = async () => {
|
|
try {
|
|
await signOut();
|
|
navigate('/login');
|
|
} catch (error) {
|
|
console.error('Logout error:', error);
|
|
}
|
|
};
|
|
|
|
return (
|
|
<Stack gap="lg">
|
|
<div style={{ display: 'flex', justifyContent: 'space-between', alignItems: 'flex-start' }}>
|
|
<div>
|
|
<Text fw={600} size="lg">{t('settings.general.title', 'General')}</Text>
|
|
<Text size="sm" c="dimmed">
|
|
{t('settings.general.description', 'Configure general application preferences.')}
|
|
</Text>
|
|
</div>
|
|
|
|
{user && (
|
|
<Stack gap="xs" align="flex-end">
|
|
<Text size="sm" c="dimmed">
|
|
{t('settings.general.user', 'User')}: <strong>{user.email || user.username}</strong>
|
|
</Text>
|
|
<Button color="red" variant="outline" size="xs" onClick={handleLogout}>
|
|
{t('settings.general.logout', 'Log out')}
|
|
</Button>
|
|
</Stack>
|
|
)}
|
|
</div>
|
|
|
|
{/* Render core general section preferences (without title since we show it above) */}
|
|
<CoreGeneralSection hideTitle />
|
|
</Stack>
|
|
);
|
|
};
|
|
|
|
export default GeneralSection;
|