SkillsLao TVET Back-office
Staff accounts are provisioned by administrators.
Contact your Super Administrator if you need access.
Uses sub-flows:
Screen Flow (from flow.puml):
๐ Spec notes โ UC-IDP.07 / SCR-IDP.29 (fields, actions, requirements)
- Screen: SCR-IDP.29 โ Staff Login
- Use case: UC-IDP.07 โ Login โ Staff
Back-office portal login page for staff (Instructor, Program Administrator, Super Administrator) โ displays email and password input fields as the primary credential, and a "Sign in with Google" button as an optional single sign-on channel. No verification code or PIN options because staff access only through a web browser (per FEAT-IDP.01), unlike the learner login page (SCR-IDP.07). When authentication fails, feedback is shown inline on the same page (no redirect): AF-3B (wrong password) โ inline "Invalid email or password" message; AF-3C (5 failed attempts) โ 15-minute countdown + Sign in button disabled; AF-3A (account not found) โ directs to contact an Admin (staff cannot self-register); AF-3D (account suspended/revoked) โ directs to contact the Super Administrator. Includes a "Forgot Password?" link for password reset (โ UC-IDP.22).
email"Email" โ text ยท required ยท always visible ยท validation: format:email, max_length:255password"Password" โ password ยท (not persisted โ compared againstAuthIdentity.credential) ยท required ยท always visible ยท validation: min_length:8error_message"Error Message" โ text ยท read-only ยท visible whenauth_failed == true && lockout_active == false && account_not_found == false && account_suspended == false && account_revoked == falseยท fallback: "Invalid email or password"lockout_countdown"Lockout Countdown" โ computed ยท read-only ยท visible whenlockout_active == trueยท real-time MM:SS countdown (see additional req. 2)account_not_found_notice"Account Not Found" โ text ยท read-only ยท visible whenaccount_not_found == trueยท fallback: "Please contact your administrator to create an account for you."account_suspended_notice"Account Status" โ computed ยท read-only ยท visible whenaccount_suspended == true || account_revoked == trueยท fallback: "Your account cannot be accessed. Please contact your Super Administrator to restore access."
sign_in"Sign in" โ enabled whenrequired_fields_valid && lockout_active == falseยท triggers UC-IDP.07-M-2 โ /home/ (UC-IDP.26 โ View Staff Portal Home)sign_in_google"Sign in with Google" โ always enabled ยท triggers UC-IDP.07-A-2A-1 โ SUC-IDP-03 (/authenticate-via-google-sso/)forgot_password"Forgot Password?" โ always enabled ยท triggers UC-IDP.22-M-1 โ /forgot-password/
- Error messages (wrong password, suspended account, account not found, revoked account) must be displayed inline in the Login state feedback region โ not as browser alert dialogs. [refs: NFR-11]
- When an account is temporarily suspended (AF-3C,
lockout_active == true): the "Sign in" button must be disabled and a real-time MM:SS countdown shown until the 15-minute lock expires. [refs: SS-IDP.13] - Keyboard focus order: Email โ Password โ "Sign in" โ "Sign in with Google" โ "Forgot Password?" โ Tab/Shift+Tab must navigate in this order. [refs: NFR-11]
- The "Sign in with Google" button must use the Google-branded button style (Google icon + "Sign in with Google" text) per Google Sign-In Branding Guidelines.
- Error message for wrong password (AF-3B) must always read "Invalid email or password" regardless of whether the email or password is incorrect โ to prevent account enumeration.
AF-4A (staff assigned to multiple institutes) now hands off to its own standalone page โ
see /login-staff/select-institute (SCR-IDP.77) for its Spec notes.