{"id":31916907,"url":"https://github.com/rknightion/intunemanager","last_synced_at":"2026-05-09T16:07:08.471Z","repository":{"id":318335064,"uuid":"1060360210","full_name":"rknightion/IntuneManager","owner":"rknightion","description":"MacOS / iOS Intune configuration utility to improve on some of their UI flows","archived":false,"fork":false,"pushed_at":"2025-10-06T14:34:43.000Z","size":2578,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-10-06T16:28:45.641Z","etag":null,"topics":["intune","intune-administrator","intune-macos","intune-mgt","macos","macos-app"],"latest_commit_sha":null,"homepage":"","language":"Swift","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rknightion.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"docs/contributing.md","funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":"docs/supported-entities.md","governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2025-09-19T19:27:24.000Z","updated_at":"2025-10-06T14:34:47.000Z","dependencies_parsed_at":"2025-10-06T16:38:53.814Z","dependency_job_id":null,"html_url":"https://github.com/rknightion/IntuneManager","commit_stats":null,"previous_names":["rknightion/intunemanager"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/rknightion/IntuneManager","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rknightion%2FIntuneManager","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rknightion%2FIntuneManager/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rknightion%2FIntuneManager/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rknightion%2FIntuneManager/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rknightion","download_url":"https://codeload.github.com/rknightion/IntuneManager/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rknightion%2FIntuneManager/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279016939,"owners_count":26085906,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-13T02:00:06.723Z","response_time":61,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["intune","intune-administrator","intune-macos","intune-mgt","macos","macos-app"],"created_at":"2025-10-13T20:14:57.215Z","updated_at":"2025-10-13T20:15:12.354Z","avatar_url":"https://github.com/rknightion.png","language":"Swift","funding_links":[],"categories":[],"sub_categories":[],"readme":"# IntuneManager - Xcode Project\n\n## Project Setup Complete! ✅\n\nAll source files have been successfully migrated from the Package.swift structure to the Xcode project structure.\n\n## Next Steps in Xcode\n\n### 1. Add Package Dependencies\n1. Open `IntuneManager.xcodeproj` in Xcode\n2. Select the project in the navigator\n3. Go to **Package Dependencies** tab\n4. Click **+** and add these packages:\n   - `https://github.com/AzureAD/microsoft-authentication-library-for-objc.git` (Version: 1.3.0+)\n   - `https://github.com/kishikawakatsumi/KeychainAccess.git` (Version: 4.2.2+)\n\n### 2. Configure Build Settings\n1. Select each target (iOS and macOS)\n2. Go to **Build Settings**\n3. Set these important settings:\n   - Swift Language Version: **Swift 6**\n   - Minimum Deployments: **iOS 18.0**, **macOS 15.0**\n   - Enable **Strict Concurrency** checking\n\n### 3. Configure Signing \u0026 Capabilities\nFor **both iOS and macOS targets**:\n\n1. Go to **Signing \u0026 Capabilities**\n2. Select your team\n3. Add these capabilities:\n   - ✅ Keychain Sharing\n   - ✅ App Groups (create group: `group.$(PRODUCT_BUNDLE_IDENTIFIER)`)\n\nFor **macOS only**:\n   - ✅ App Sandbox\n   - ✅ Outgoing Connections (Client)\n\n### 4. Update Info.plist Location\n1. Select each target\n2. Go to **Build Settings**\n3. Search for \"Info.plist\"\n4. Set path to: `IntuneManager/Info.plist`\n\n### 5. Update Entitlements\n1. Select each target\n2. Go to **Build Settings**\n3. Search for \"Entitlements\"\n4. Set path to: `IntuneManager/IntuneManager.entitlements`\n\n## Project Structure\n\n```\nIntuneManager/\n├── App/                    # Main app files\n│   ├── IntuneManagerApp.swift  # @main entry point\n│   ├── UnifiedContentView.swift # Root content view\n│   └── SettingsView.swift\n├── Core/                   # Core functionality\n│   ├── Authentication/     # MSAL auth\n│   ├── DataLayer/         # SwiftData models\n│   ├── Networking/        # Graph API client\n│   ├── Security/          # Credential management\n│   └── CrossPlatform/     # Platform compatibility\n├── Features/              # Feature modules\n│   ├── Dashboard/\n│   ├── Devices/\n│   ├── Applications/\n│   ├── Groups/\n│   ├── Assignments/\n│   └── Setup/\n├── Services/              # Business logic\n└── Utilities/             # Helper utilities\n```\n\n## Configuration\n\n### MSAL Setup\n1. Register your app in Azure AD\n2. Get your Client ID and Tenant ID\n3. Update `MSALConfiguration.swift` with your values\n4. Or use the in-app configuration screen on first launch\n\n### Bundle Identifier\nMake sure your bundle identifier matches what's registered in Azure AD for the redirect URI:\n- Redirect URI format: `msauth.{your-bundle-id}://auth`\n\n### Required Microsoft Graph API Permissions\n\nThe application requires the following Graph API permissions to function properly:\n\n#### Device Management\n- **DeviceManagementManagedDevices.Read.All** - Read device information\n- **DeviceManagementManagedDevices.ReadWrite.All** - Update device information\n- **DeviceManagementManagedDevices.PrivilegedOperations.All** - Perform device sync, wipe, restart operations\n\n#### Application Management\n- **DeviceManagementApps.Read.All** - Read application information\n- **DeviceManagementApps.ReadWrite.All** - Manage application assignments\n\n#### Groups \u0026 Users\n- **Group.Read.All** - Read group information\n- **GroupMember.Read.All** - Read group membership\n- **User.Read.All** - Read user profiles\n\n#### Audit \u0026 Reports\n- **AuditLog.Read.All** - Read audit logs and activity reports\n\n#### Core Permissions (automatically included)\n- **User.Read** - Sign in and read user profile\n- **offline_access** - Maintain access to data\n\nConfigure these permissions in Azure AD:\n1. Go to Azure Portal → App registrations\n2. Select your application\n3. Navigate to API permissions\n4. Add permissions → Microsoft Graph → Delegated permissions\n5. Select all required permissions listed above\n6. Grant admin consent if required by your organization\n\n## Building \u0026 Running\n\n### iOS\n1. Select an iOS Simulator or device\n2. Press ⌘R to build and run\n\n### macOS\n1. Select \"My Mac\" as the destination\n2. Press ⌘R to build and run\n\n## Troubleshooting\n\n### \"No such module 'MSAL'\"\n- Make sure you've added the package dependencies (see step 1 above)\n- Clean build folder: ⌘⇧K\n- Reset package caches: File → Packages → Reset Package Caches\n\n### App doesn't launch\n- Check that Info.plist path is correctly set\n- Verify entitlements file path is set\n- Check Console.app for crash logs\n\n### MSAL Authentication fails\n- Verify your redirect URI matches: `msauth.{bundle-id}://auth`\n- Check keychain sharing is enabled\n- Ensure Client ID and Tenant ID are correct\n\n## Testing\n\n### Unit Tests\nLocated in `IntuneManagerTests/`\n\n### UI Tests\nLocated in `IntuneManagerUITests/`\n\nRun tests with ⌘U\n\n## Distribution\n\n### TestFlight (iOS)\n1. Archive the app (Product → Archive)\n2. Upload to App Store Connect\n3. Submit for TestFlight review\n\n### Mac App Store\n1. Archive the app (Product → Archive)\n2. Upload to App Store Connect\n3. Submit for review\n\n### Direct Distribution (macOS)\n1. Archive the app\n2. Export with Developer ID\n3. Notarize with Apple\n4. Distribute .dmg or .pkg\n\n## Important Files\n\n- `Info.plist` - App configuration and permissions\n- `IntuneManager.entitlements` - App capabilities and sandbox settings\n- `MSALConfiguration.swift` - MSAL/Azure AD configuration\n- `IntuneManagerApp.swift` - Main app entry point\n\n## Notes\n\n- All files have been moved from `/Users/rob/repos/IntuneManager`\n- The original Package.swift structure is no longer needed\n- This is now a standard Xcode project ready for App Store distribution\n- SwiftData models are included and configured\n- MSAL authentication is ready to use\n\n## Support\n\nFor issues, check:\n1. Xcode's Issue navigator (⌘5)\n2. Console.app for runtime logs\n3. The Logger output in Xcode's console\n\nGood luck with your app! 🚀","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frknightion%2Fintunemanager","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frknightion%2Fintunemanager","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frknightion%2Fintunemanager/lists"}