User Story
As the LightDM greeter,
I need to handle offline mode in the UI,
So that users know when they're authenticating locally vs SSO.
Acceptance Criteria
Technical Details
Online Mode (First Login)
┌─────────────────────────────────────┐
│ [iframe SSO LLNG] │
│ ... SSO authentication ... │
│ │
│ ✓ Authentication successful │
│ │
│ Create a local password for │
│ offline access: │
│ │
│ Password: [______________] │
│ Confirm: [______________] │
│ │
│ [Skip] [Create] │
└─────────────────────────────────────┘
Offline Mode
┌─────────────────────────────────────┐
│ ⚠ Offline Mode │
│ (SSO server unreachable) │
│ │
│ Username: [______________] │
│ Password: [______________] │
│ │
│ [Login] │
│ │
│ Cache valid until: 2024-12-23 │
└─────────────────────────────────────┘
Implementation
// greeter/js/offline.js
async function checkServerAvailability() {
try {
await fetch(portalUrl + '/ping', { timeout: 5000 });
return true;
} catch {
return false;
}
}
async function initGreeter() {
const online = await checkServerAvailability();
if (online) {
showSSOFrame();
} else {
showOfflineLogin();
}
}
Files to Create
- greeter/js/offline.js (new)
- Modifications to greeter/index.html
- Modifications to greeter/css/style.css
Component
Repo: llng-pam-module
User Story
As the LightDM greeter,
I need to handle offline mode in the UI,
So that users know when they're authenticating locally vs SSO.
Acceptance Criteria
Technical Details
Online Mode (First Login)
Offline Mode
Implementation
Files to Create
Component
Repo: llng-pam-module