mirror of
https://github.com/DRYTRIX/TimeTracker.git
synced 2026-05-19 04:40:32 -05:00
ae9ee9dec1
- Add user_clients table and UserClient model for many-to-many user-client assignment - Add 'subcontractor' system role; users with this role see only assigned clients and their projects - User helpers: is_scope_restricted, get_allowed_client_ids(), get_allowed_project_ids() - Admin user form: assign clients when role is Subcontractor (multi-select, JS toggle) - Scope filtering: clients, projects, time entries, reports, invoices, timer, API v1 - Direct access to out-of-scope client/project returns 403 (web and API) - Migration 127_add_user_clients_table; scope_filter utility and ProjectService scope_client_ids - Docs: SUBCONTRACTOR_ROLE.md, ADVANCED_PERMISSIONS.md, RBAC, CLIENT_PORTAL, README, CHANGELOG Addresses GitHub Discussion #476 (user with limited clients/projects).
Developer Documentation
Complete documentation for developers contributing to TimeTracker.
📖 Getting Started
- Contributing Guidelines - How to contribute to TimeTracker
- Code of Conduct - Community standards
- Project Structure - Codebase organization
- Local Testing with SQLite - Quick local testing setup
- Local Development with Analytics - Development setup with analytics
🏗️ Development Resources
Testing
- See testing/ for testing documentation
CI/CD
- See cicd/ for CI/CD setup and workflows
Architecture
- See implementation-notes/ for architecture decisions and notes
📚 Related Documentation
- Main Documentation Index - Complete documentation overview
- API Documentation - REST API reference
- Admin Documentation - Administrator guides