????

Your IP : 216.73.216.114


Current Path : C:/opt/pgsql/pgAdmin 4/web/pgadmin/utils/
Upload File :
Current File : C:/opt/pgsql/pgAdmin 4/web/pgadmin/utils/csrf.py

##########################################################################
#
# pgAdmin 4 - PostgreSQL Tools
#
# Copyright (C) 2013 - 2024, The pgAdmin Development Team
# This software is released under the PostgreSQL Licence
#
#########################################################################

from flask_wtf.csrf import CSRFProtect
from flask import request, current_app


class _PGCSRFProtect(CSRFProtect):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)

    def init_app(self, app):
        super().init_app(app)
        self._pg_csrf_exempt(app)

    def _pg_csrf_exempt(self, app):
        """Exempt some of the Views/blueprints from CSRF protection
        """

        exempt_views = [
            'flask.app.<lambda>',
            'flask.scaffold.send_static_file',  # For Flask 2.*
            'flask.blueprints.send_static_file',
            'flask_security.views.login',
            'flask_security.views.logout',
            'pgadmin.tools.translations',
            app.blueprints['redirects'],
            'pgadmin.browser.server_groups.servers.supported_servers-js',
            'pgadmin.tools.sqleditor.initialize_sqleditor',
            'pgadmin.tools.datagrid.panel',
            'pgadmin.tools.sqleditor.panel',
            'pgadmin.tools.debugger.initialize_target',
            'pgadmin.tools.debugger.direct_new',
            'pgadmin.tools.schema_diff.panel',
            'pgadmin.tools.schema_diff.ddl_compare',
            'pgadmin.authenticate.login',
            'pgadmin.tools.erd.panel',
            'pgadmin.tools.psql.panel',
            'pgadmin.preferences.get_all_cli',
        ]

        for exempt in exempt_views:
            self.exempt(exempt)


pgCSRFProtect = _PGCSRFProtect()