"""Flag-based permission resolution. Replaces the permission logic in authprovider.js: find_config_flags, find_database_flags, impersonate, effective_permissions. """ import logging logger = logging.getLogger(__name__) def find_config_flags(ctx): """Assign permission flags from config based on username. Replaces find_config_flags() in authprovider.js. """ # TODO Phase 4 raise NotImplementedError def find_database_flags(ctx): """Look up user in DB and assign _member_ / _astronaut_ / _passive_ flags. Replaces find_database_flags() in authprovider.js. """ # TODO Phase 4 raise NotImplementedError def impersonate(ctx): """Handle ?impersonate= query parameter. Replaces impersonate() in authprovider.js. """ # TODO Phase 4 raise NotImplementedError def effective_permissions(ctx): """Determine the effective permission set (lowest level wins). Replaces effective_permissions() in authprovider.js. """ # TODO Phase 4 raise NotImplementedError