You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Single audited privilege boundary. The CLI already resolves the real user from PKEXEC_UID, so pkexec secureEye -U <user> … is the transport. In C++ this means an async QProcess wrapper plus strict parsing,which requires the CLI to emit structured output.
Tasks
GuiBackend class (QObject): async run(command, args) via QProcess, signals for finished/failed/cancelled; never blocks the UI thread
Add/verify --plain or JSON output on the CLI commands the GUI consumes (list has --plain; audit add, remove, clear, disable, set, version), parse with QJsonDocument, never scrape human-readable text
Ship polkit policy com.github.vhrabar.secureeye.policy with separate action IDs for read vs write (…manage-models, …modify-config, …control-service)
Map pkexec exit codes (126 dismissed, 127 not authorized) and CLI non-zero exits to distinct user-visible errors
Refuse to start if launched as root (check geteuid() at startup, explain why)
Acceptance criteria
Cancelling the polkit dialog leaves every view consistent
All CLI interaction goes through GuiBackend; no raw QProcess calls elsewhere
Policy file installed by meson and listed in packaging
Description
Single audited privilege boundary. The CLI already resolves the real user from
PKEXEC_UID, sopkexec secureEye -U <user> …is the transport. In C++ this means an asyncQProcesswrapper plus strict parsing,which requires the CLI to emit structured output.Tasks
GuiBackendclass (QObject): asyncrun(command, args)viaQProcess, signals for finished/failed/cancelled; never blocks the UI thread--plainor JSON output on the CLI commands the GUI consumes (listhas--plain; auditadd,remove,clear,disable,set,version), parse withQJsonDocument, never scrape human-readable textcom.github.vhrabar.secureeye.policywith separate action IDs for read vs write (…manage-models,…modify-config,…control-service)geteuid()at startup, explain why)Acceptance criteria
GuiBackend; no rawQProcesscalls elsewhere