A comprehensive web-based application access control management system that allows administrators to manage applications, users, and their access privileges with detailed reporting capabilities.
- Add, edit, and remove applications
- Categorize applications by type (Customer Service, HR, Productivity, etc.)
- Set application URLs and descriptions
- Enable/disable applications
- Configure custom permissions per application
- Create and manage user accounts
- Set user roles and departments
- Track user status (active/inactive)
- Monitor user creation dates and last login times
- View user access across all applications
- Grant and revoke user access to applications
- Set access levels (Viewer, Editor, Manager, Administrator)
- Configure custom permissions with checkboxes
- Set access expiration dates
- Bulk access management with filtering
- Generate detailed access reports for any application
- View users by access level
- Export reports in JSON format
- Quick statistics for all applications
- Custom permission tracking
- Responsive design with Tailwind CSS
- Intuitive navigation and workflows
- Modal-based forms for data entry
- Real-time filtering and search
- Beautiful data visualization
- Frontend: React 18 with TypeScript
- Styling: Tailwind CSS
- Build Tool: Vite
- Icons: Lucide React
- State Management: React Context + useReducer
- Routing: React Router DOM
- Node.js 16+
- npm or yarn
-
Clone the repository
git clone <repository-url> cd AccessDogApp
-
Install dependencies
npm install
-
Start the development server
npm run dev
-
Open your browser Navigate to
http://localhost:3000
npm run dev- Start development servernpm run build- Build for productionnpm run preview- Preview production buildnpm run lint- Run ESLintnpm run lint:fix- Fix ESLint issues
src/
βββ components/ # Reusable UI components
β βββ Navigation.tsx
β βββ ApplicationModal.tsx
β βββ UserModal.tsx
β βββ AccessControlModal.tsx
βββ contexts/ # React context providers
β βββ AccessContext.tsx
βββ data/ # Mock data and initial state
β βββ mockData.ts
βββ pages/ # Main application pages
β βββ Dashboard.tsx
β βββ Applications.tsx
β βββ Users.tsx
β βββ AccessControl.tsx
β βββ Reports.tsx
βββ types/ # TypeScript type definitions
β βββ index.ts
βββ App.tsx # Main application component
βββ main.tsx # Application entry point
βββ index.css # Global styles
The system uses predefined access levels that determine what users can do:
- Viewer: Basic read-only access
- Editor: Can view and edit data
- Manager: Full access except admin functions
- Administrator: Complete access to all features
Applications can have custom permissions beyond the standard access levels:
- Resource-specific permissions (e.g., "View Salary Info")
- Action-based permissions (read, write, delete, admin)
- Granular control over user capabilities
- Users can have different access levels for different applications
- Access can be granted with expiration dates
- Custom permissions can be added to standard access levels
- Access can be temporarily disabled without deletion
- Navigate to Applications page
- Click "Add Application"
- Fill in name, description, category, and URL
- Set active status
- Save to create the application
- Go to Access Control page
- Click "Grant Access"
- Select user and application
- Choose access level
- Add custom permissions if needed
- Set expiration date (optional)
- Save to grant access
- Visit Reports page
- Select an application from dropdown
- Click "Generate Report"
- View detailed access information
- Export report as JSON if needed
interface User {
id: string;
name: string;
email: string;
role: string;
department?: string;
isActive: boolean;
createdAt: Date;
lastLogin?: Date;
}interface Application {
id: string;
name: string;
description: string;
url?: string;
category: string;
isActive: boolean;
createdAt: Date;
accessLevels: AccessLevel[];
customPermissions: Permission[];
}interface UserAccess {
id: string;
userId: string;
applicationId: string;
accessLevelId: string;
grantedBy: string;
grantedAt: Date;
expiresAt?: Date;
isActive: boolean;
customPermissions: string[];
}- Modify the
mockAccessLevelsarray insrc/data/mockData.ts - Add new permissions to
mockPermissions - Update the access level definitions
- Update the category options in
ApplicationModal.tsx - Add new categories to the select dropdown
- Add new permissions to applications in
mockData.ts - Define resource and action types
- Update permission handling in components
- All access changes are logged with timestamps
- Access can be revoked immediately
- Expiration dates prevent long-term access
- Custom permissions provide granular control
- User status can be disabled without deletion
- Authentication & Authorization: Real user authentication system
- Audit Logging: Comprehensive access change tracking
- Role-Based Access Control: Advanced RBAC implementation
- API Integration: Connect to real application systems
- Bulk Operations: Mass user access management
- Advanced Reporting: Charts, graphs, and analytics
- Email Notifications: Access change alerts
- Mobile App: Native mobile application
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests if applicable
- Submit a pull request
This project is licensed under the MIT License - see the LICENSE file for details.
For questions or support, please open an issue in the repository or contact the development team.
Access Control Hub - Secure, scalable, and user-friendly application access management.