{"ok": true, "database": "docs", "table": "sections", "rows": [{"id": "upgrade-1.0a20:permission-allowed-hook-is-replaced-by-permission-resources-sql", "page": "upgrade-1.0a20", "ref": "permission-allowed-hook-is-replaced-by-permission-resources-sql", "title": "permission_allowed() hook is replaced by permission_resources_sql()", "content": "The following old code: \n             @hookimpl\ndef permission_allowed(action):\n    if action == \"permissions-debug\":\n        return True\n \n             Can be replaced by: \n             from datasette.permissions import PermissionSQL\n\n@hookimpl\ndef permission_resources_sql(action):\n    return PermissionSQL.allow(reason=\"datasette-allow-permissions-debug\")\n \n             A  .deny(reason=\"\")  class method is also available. \n             For more complex permission checks consult the documentation for that plugin hook:\n                 https://docs.datasette.io/en/latest/plugin_hooks.html#permission-resources-sql-datasette-actor-action", "breadcrumbs": "[\"Datasette 1.0a20 plugin upgrade guide\"]", "references": "[{\"href\": \"https://docs.datasette.io/en/latest/plugin_hooks.html#permission-resources-sql-datasette-actor-action\", \"label\": \"https://docs.datasette.io/en/latest/plugin_hooks.html#permission-resources-sql-datasette-actor-action\"}]"}], "primary_keys": ["id"], "primary_key_values": ["upgrade-1.0a20:permission-allowed-hook-is-replaced-by-permission-resources-sql"], "query_ms": 4.6936400003687595, "truncated": false}