47 lines
1 KiB
Python
47 lines
1 KiB
Python
|
|
"""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
|