/// Account role as reported by MarianumConnect. Only used for display and for /// deriving policies; features gate on capabilities and requirements instead /// of comparing roles. enum UserRole { student, teacher, staff, parent, unknown; /// Unknown or missing values map to [unknown] so a new server-side role /// never breaks older app versions. static UserRole parse(String? wire) => switch (wire) { 'STUDENT' => UserRole.student, 'TEACHER' => UserRole.teacher, 'STAFF' => UserRole.staff, 'PARENT' => UserRole.parent, _ => UserRole.unknown, }; }