Esempio n. 1
0
    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
Esempio n. 2
0
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
Esempio n. 3
0
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)
Esempio n. 4
0
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,
    )
Esempio n. 5
0
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,
    )
Esempio n. 6
0
 def redirect_view(request: pyramid.request.Request) -> HTTPFound:
     return HTTPFound(location=request.route_url(to))
Esempio n. 7
0
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"))
Esempio n. 8
0
def _url(request: pyramid.request.Request, route: str) -> Optional[str]:
    try:
        return request.route_url(route)  # type: ignore
    except KeyError:
        return None
Esempio n. 9
0
def home_view(request: pyramid.request.Request) -> HTTPFound:
    return HTTPFound(request.route_url("layertree", application="admin"))