def unauthenticated_userid( request: pyramid.request.Request) -> Optional[str]: route_url = "" try: route_url = request.current_route_url(_query=request.GET) except ValueError: route_url = request.route_url("base", _query=request.GET) LOG.debug( "Call OAuth verify_request with:\nurl: %s\nmethod: %s\nbody:\n%s", route_url, request.method, request.body, ) valid, oauth2_request = oauth2.get_oauth_client( request.registry.settings).verify_request( route_url, request.method, request.body, request.headers, [], ) LOG.debug("OAuth verify_request: %s", valid) if valid: request.user_ = oauth2_request.user return cast(str, request.user_.username) return None
def _url(request: pyramid.request.Request, route: str, params: Optional[Dict[str, str]] = None) -> Optional[str]: try: return request.route_url(route, _query=params) # type: ignore except KeyError: return None
def check_access_config(request: pyramid.request.Request, auth_config: AuthConfig) -> bool: """Check if the user has access to the resource.""" auth, user = is_auth_user(request) if not auth: return False settings = request.registry.settings oauth = OAuth2Session( env_or_settings(settings, GITHUB_CLIENT_ID_ENV, GITHUB_CLIENT_ID_PROP, ""), scope=[ env_or_settings(settings, GITHUB_SCOPE_ENV, GITHUB_SCOPE_PROP, GITHUB_SCOPE_DEFAULT) ], redirect_uri=request.route_url("c2c_github_callback"), token=user["token"], ) repo_url = env_or_settings( settings, GITHUB_REPO_URL_ENV, GITHUB_REPO_URL_PROP, "https://api.github.com/repos", ) repository = oauth.get( f"{repo_url}/{auth_config.get('github_repository')}").json() return not ("permissions" not in repository or repository["permissions"][ auth_config.get("github_access_type")] is not True)
def treeitem_edit_url(request: pyramid.request.Request, treeitem): if treeitem.item_type is None: return None table = ITEM_TYPE_ROUTE_MAP.get(treeitem.item_type, None) if table is None: LOG.warning("%s not found in ITEM_TYPE_ROUTE_MAP", treeitem.item_type) return None return request.route_url( "c2cgeoform_item", table=ITEM_TYPE_ROUTE_MAP[treeitem.item_type], id=treeitem.id, )
def treeitem_edit_url(request: pyramid.request.Request, treeitem: TreeGroup) -> Optional[str]: """Get the tree item editing URL.""" if treeitem.item_type is None: return None table = ITEM_TYPE_ROUTE_MAP.get(treeitem.item_type, None) if table is None: LOG.warning("%s not found in ITEM_TYPE_ROUTE_MAP", treeitem.item_type) return None return request.route_url( # type: ignore "c2cgeoform_item", table=ITEM_TYPE_ROUTE_MAP[treeitem.item_type], id=treeitem.id, )
def redirect_view(request: pyramid.request.Request) -> HTTPFound: return HTTPFound(location=request.route_url(to))
def home_view(request: pyramid.request.Request) -> HTTPFound: """Get the main administration view, redirect to the layertree.""" return HTTPFound(request.route_url("layertree", application="admin"))
def _url(request: pyramid.request.Request, route: str) -> Optional[str]: try: return request.route_url(route) # type: ignore except KeyError: return None
def home_view(request: pyramid.request.Request) -> HTTPFound: return HTTPFound(request.route_url("layertree", application="admin"))