You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@superset.apache.org by su...@apache.org on 2021/12/11 09:47:46 UTC
[superset] branch guest-token-authz updated (2d565a8 -> d687340)
This is an automated email from the ASF dual-hosted git repository.
suddjian pushed a change to branch guest-token-authz
in repository https://gitbox.apache.org/repos/asf/superset.git.
discard 2d565a8 helper methods and dashboard access
add 29358f7 Make guest role name configurable
add 2f3df2c fake being a non-anonymous user
add 1920623 just one log entry
add 814d314 customizable algo
add 271913e lint
add 45d016e lint again
add e660ea2 fix(legacy-plugin-chart-calendar): fix timestamp timezone in Calendar (#17664)
add 9121e45 chore: Remove unreachable return statements (#17622)
add 3350076 fix: javascript file suffixes to extract (#17673)
add 418c0b4 Update query_context_processor.py (#17657)
add cd88b8e feat(prophet): enable confidence intervals and y_hat without forecast (#17658)
add 12f1d91 chore: update babel doc (#17679)
add c4b0495 feat: customize recent activity access (#17589)
add 8c25f2f fix: extract tables doesn't work with reserved keywords (#17654)
add aee5c9a chore: removing redundant docker-entrypoint (#17687)
add 46cdc77 fix: Redirect on 401 (#17597)
add aad2abe Fix undefined error (#17692)
add b7ae7f9 chore: convert feature flag tests to unit tests (#17689)
add 04e3cfa refactor(monorepo): relocate deckgl to Superset (#17596)
add 1af99ea chore: unblock ci on postgres lint (#17705)
add 3a42071 chore(sql): clean up invalid filter clause exception types (#17702)
add f476ba2 fix(select): select component sort functionality on certain options (#17638)
add 12bd1fc fix: Save properties after applying changes in Dashboard (#17570)
add 3873cdf feat: convert dataframe tests (#17655)
add d2e088c Merge branch 'master' into embedded
add d76bbf2 Merge branch 'embedded' into embed-token
add df2f49a 403 works now!
add bcba0fa get guest token from header instead of cookie
new d687340 helper methods and dashboard access
This update added new revisions after undoing existing revisions.
That is to say, some revisions that were in the old version of the
branch are not in the new version. This situation occurs
when a user --force pushes a change and generates a repository
containing something like this:
* -- * -- B -- O -- O -- O (2d565a8)
\
N -- N -- N refs/heads/guest-token-authz (d687340)
You should already have received notification emails for all of the O
revisions, and so the following emails describe only the N revisions
from the common base, B.
Any revisions marked "omit" are not gone; other references still
refer to them. Any revisions marked "discard" are gone forever.
The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails. The revisions
listed as "add" were already present in the repository and have only
been added to this reference.
Summary of changes:
.github/workflows/superset-translations.yml | 5 +-
CONTRIBUTING.md | 15 +-
Dockerfile | 6 +-
UPDATING.md | 1 +
docker/docker-bootstrap.sh | 2 +-
docker/docker-ci.sh | 15 +-
docker/docker-entrypoint.sh | 34 -
.../unit_tests/conftest.py => docker/run-server.sh | 30 +-
helm/superset/Chart.yaml | 2 +-
helm/superset/values.yaml | 2 +-
requirements/base.txt | 2 +-
scripts/{babel_extract.sh => babel_update.sh} | 12 +-
setup.py | 5 +-
.../integration/dashboard/edit_properties.test.ts | 8 +-
.../cypress/integration/dashboard/save.test.js | 14 +-
superset-frontend/jest.config.js | 2 +-
superset-frontend/package-lock.json | 443 +-
.../src/shared-controls/index.tsx | 2 +
.../superset-ui-chart-controls/src/types.ts | 2 +-
.../src/connection/SupersetClientClass.ts | 12 +
.../callApi/callApiAndParseWithTimeout.test.ts | 8 +-
.../packages/superset-ui-demo/package.json | 1 +
.../legacy-preset-chart-deckgl/Arc/Stories.tsx | 101 +
.../legacy-preset-chart-deckgl/Arc/payload.js | 19 +
.../legacy-preset-chart-deckgl/Grid/Stories.tsx | 72 +
.../legacy-preset-chart-deckgl/Grid}/payload.js | 19 +
.../legacy-preset-chart-deckgl/Hex/Stories.tsx | 73 +
.../legacy-preset-chart-deckgl/Hex}/payload.js | 19 +
.../legacy-preset-chart-deckgl/Path/Stories.tsx | 81 +
.../legacy-preset-chart-deckgl/Path/payload.js | 19 +
.../legacy-preset-chart-deckgl/Polygon/Stories.tsx | 141 +
.../Polygon/geojsonPayload.js | 19 +
.../legacy-preset-chart-deckgl/Polygon/payload.js | 19 +
.../legacy-preset-chart-deckgl/Scatter/Stories.tsx | 80 +
.../legacy-preset-chart-deckgl/Scatter/payload.js | 19 +
.../Screengrid/Stories.tsx | 72 +
.../Screengrid/payload.js | 19 +
.../legacy-plugin-chart-calendar/src/Calendar.js | 44 +-
.../src/transformProps.js | 10 +-
.../legacy-plugin-chart-calendar/src/utils.ts} | 19 +-
.../test/getFormattedUTCTime.ts} | 17 +-
.../src/controlPanel.ts | 4 +-
.../legacy-preset-chart-deckgl}/README.md | 23 +-
.../legacy-preset-chart-deckgl}/package.json | 35 +-
.../src/AnimatableDeckGLContainer.jsx | 4 +-
.../src/CategoricalDeckGLContainer.jsx | 35 +-
.../src/DeckGLContainer.jsx | 5 +-
.../src/Multi/Multi.jsx | 9 +-
.../src/Multi/controlPanel.js | 7 +-
.../src/Multi/images/thumbnail.png | Bin
.../src/Multi/images/thumbnailLarge.png | Bin
.../legacy-preset-chart-deckgl}/src/Multi/index.js | 0
.../legacy-preset-chart-deckgl}/src/TooltipRow.jsx | 0
.../src/components/BootstrapSliderWrapper.css | 0
.../src/components/BootstrapSliderWrapper.jsx | 0
.../src/components/Legend.css | 0
.../src/components/Legend.jsx | 9 +-
.../src/components/PlaySlider.css | 0
.../src/components/PlaySlider.jsx | 24 +-
.../src/components/Tooltip.tsx | 19 +
.../legacy-preset-chart-deckgl}/src/css/deckgl.css | 0
.../legacy-preset-chart-deckgl/src/factory.tsx} | 111 +-
.../legacy-preset-chart-deckgl/src/index.js} | 22 +-
.../src/layers/Arc/Arc.jsx | 11 +-
.../src/layers/Arc/controlPanel.ts} | 27 +-
.../src/layers/Arc/images/thumbnail.png | Bin
.../src/layers/Arc/images/thumbnailLarge.png | Bin
.../src/layers/Arc/index.js | 4 +-
.../src/layers/Geojson/Geojson.jsx | 7 +-
.../src/layers/Geojson/controlPanel.ts} | 27 +-
.../src/layers/Geojson/images/thumbnail.png | Bin
.../src/layers/Geojson/images/thumbnailLarge.png | Bin
.../src/layers/Geojson/index.js | 0
.../src/layers/Grid/Grid.jsx | 5 +-
.../src/layers/Grid/controlPanel.ts} | 21 +-
.../src/layers/Grid/images/thumbnail.png | Bin
.../src/layers/Grid/images/thumbnailLarge.png | Bin
.../src/layers/Grid/index.js | 0
.../src/layers/Hex/Hex.jsx | 5 +-
.../src/layers/Hex/controlPanel.ts} | 25 +-
.../src/layers/Hex/images/thumbnail.png | Bin
.../src/layers/Hex/images/thumbnailLarge.png | Bin
.../src/layers/Hex/index.js | 0
.../src/layers/Path/Path.jsx | 0
.../src/layers/Path/controlPanel.ts} | 19 +-
.../src/layers/Path/images/thumbnail.png | Bin
.../src/layers/Path/images/thumbnailLarge.png | Bin
.../src/layers/Path/index.js | 0
.../src/layers/Polygon/Polygon.jsx | 47 +-
.../src/layers/Polygon/controlPanel.ts} | 21 +-
.../src/layers/Polygon/images/thumbnail.png | Bin
.../src/layers/Polygon/images/thumbnailLarge.png | Bin
.../src/layers/Polygon/index.js | 8 +-
.../src/layers/Scatter/Scatter.jsx | 23 +-
.../src/layers/Scatter/controlPanel.ts} | 34 +-
.../src/layers/Scatter/images/thumbnail.png | Bin
.../src/layers/Scatter/images/thumbnailLarge.png | Bin
.../src/layers/Scatter/index.js | 0
.../src/layers/Screengrid/Screengrid.jsx | 33 +-
.../src/layers/Screengrid/controlPanel.ts} | 21 +-
.../src/layers/Screengrid/images/thumbnail.png | Bin
.../layers/Screengrid/images/thumbnailLarge.png | Bin
.../src/layers/Screengrid/index.js | 8 +-
.../src/layers/common.jsx | 11 +-
.../src/layers/index.js | 0
.../legacy-preset-chart-deckgl}/src/preset.js | 0
.../src/transformProps.js | 3 +-
.../legacy-preset-chart-deckgl/src/types.ts} | 10 +-
.../src/utilities/Shared_DeckGL.jsx | 27 +-
.../src/utilities/controls.jsx | 8 +-
.../src/utilities/sharedDndControls.jsx | 0
.../src/utilities/utils.js | 4 +-
.../legacy-preset-chart-deckgl}/src/utils.js | 23 +-
.../src/utils/colors.js | 0
.../src/utils/computeBoundsFromPoints.ts | 56 +
.../src/utils/explore.js | 30 +-
.../src/utils/fitViewport.ts | 76 +
.../legacy-preset-chart-deckgl}/src/utils/geo.js | 3 +-
.../src/utils/getPointsFromPolygon.ts} | 41 +-
.../src/utils/safeStringify.js | 0
.../src/utils/sandbox.js | 0
.../legacy-preset-chart-deckgl}/src/utils/time.js | 18 +-
.../legacy-preset-chart-deckgl}/src/utils/utils.js | 5 +-
.../test/utils/colors.test.js} | 12 +-
.../test/utils/getPointsFromPolygon.test.ts} | 59 +-
.../legacy-preset-chart-deckgl/tsconfig.json | 26 +
.../types/external.d.ts} | 5 +-
.../plugin-chart-table/src/controlPanel.tsx | 4 +
.../dashboard/components/PropertiesModal_spec.jsx | 3 +-
.../explore/components/SelectControl_spec.jsx | 41 +-
superset-frontend/src/components/Select/Select.tsx | 7 +-
.../components/TableLoader/TableLoader.test.tsx | 32 +-
.../src/components/TableLoader/index.tsx | 17 +-
.../src/dashboard/actions/dashboardState.js | 212 +-
.../dashboard/components/Header/Header.test.tsx | 64 +-
.../src/dashboard/components/Header/index.jsx | 83 +-
.../PropertiesModal/PropertiesModal.test.tsx | 20 +-
.../dashboard/components/PropertiesModal/index.jsx | 614 -
.../dashboard/components/PropertiesModal/index.tsx | 603 +
.../src/dashboard/components/SaveModal.tsx | 23 +-
.../FiltersConfigForm/ColumnSelect.test.tsx | 6 +-
.../FiltersConfigForm/DefaultValue.tsx | 2 +-
.../ExploreChartHeader/ExploreChartHeader.test.tsx | 3 -
.../components/ExploreChartHeader/index.jsx | 40 +-
.../PropertiesModal/PropertiesModal.test.tsx | 29 +-
.../index.tsx | 8 +-
.../explore/components/controls/SelectControl.jsx | 6 +-
.../src/utils/getClientErrorObject.ts | 1 +
.../src/index.js | 10 -
.../src/utils/computeBoundsFromPoints.ts | 23 -
.../src/utils/fitViewport.ts | 50 -
.../src/utils/getPointsFromPolygon.ts | 26 -
.../src/utils/types.ts | 5 -
.../test/utils/colors.test.js | 7 -
.../test/utils/getPointsFromPolygon.test.ts | 38 -
.../types/external.d.ts | 1 -
.../yarn.lock | 1062 -
.../legacy-preset-chart-deckgl/Arc/Stories.tsx | 81 -
.../legacy-preset-chart-deckgl/Arc/index.js | 8 -
.../legacy-preset-chart-deckgl/Grid/Stories.tsx | 52 -
.../legacy-preset-chart-deckgl/Grid/index.js | 8 -
.../legacy-preset-chart-deckgl/Hex/Stories.tsx | 53 -
.../legacy-preset-chart-deckgl/Hex/index.js | 8 -
.../legacy-preset-chart-deckgl/Path/Stories.tsx | 61 -
.../legacy-preset-chart-deckgl/Path/index.js | 8 -
.../legacy-preset-chart-deckgl/Polygon/Stories.tsx | 124 -
.../legacy-preset-chart-deckgl/Polygon/index.js | 8 -
.../legacy-preset-chart-deckgl/Scatter/Stories.tsx | 60 -
.../legacy-preset-chart-deckgl/Scatter/index.js | 8 -
.../Screengrid/Stories.tsx | 51 -
.../legacy-preset-chart-deckgl/Screengrid/index.js | 8 -
superset/charts/schemas.py | 2 +-
superset/common/query_context_processor.py | 4 +
superset/common/query_object.py | 16 +-
superset/config.py | 9 +-
superset/dashboards/api.py | 12 +-
superset/dashboards/commands/update.py | 7 +
superset/dashboards/dao.py | 141 +-
superset/dashboards/schemas.py | 2 +
superset/db_engine_specs/postgres.py | 2 +-
superset/errors.py | 1 +
superset/exceptions.py | 4 +
superset/security/guest_token.py | 36 +-
superset/security/manager.py | 41 +-
superset/sql_parse.py | 38 +-
superset/translations/babel.cfg | 18 +-
superset/translations/de/LC_MESSAGES/messages.po | 3919 ++-
superset/translations/en/LC_MESSAGES/messages.po | 15980 ++++++++----
superset/translations/es/LC_MESSAGES/messages.po | 19856 ++++++++++-----
superset/translations/fr/LC_MESSAGES/messages.po | 22019 ++++++++++------
superset/translations/it/LC_MESSAGES/messages.po | 17854 +++++++++----
superset/translations/ja/LC_MESSAGES/messages.po | 18620 +++++++++-----
superset/translations/ko/LC_MESSAGES/messages.po | 17520 +++++++++----
superset/translations/messages.pot | 3630 ++-
.../translations/pt_BR/LC_MESSAGES/messages.po | 20689 ++++++++++-----
superset/translations/ru/LC_MESSAGES/messages.po | 20154 ++++++++++-----
superset/translations/sk/LC_MESSAGES/messages.po | 16230 ++++++++----
superset/translations/sl/LC_MESSAGES/messages.po | 25475 +++++++++----------
superset/translations/zh/LC_MESSAGES/messages.po | 20595 +++++++++------
superset/utils/network.py | 6 +-
superset/utils/pandas_postprocessing.py | 4 +-
superset/views/core.py | 59 +-
superset/viz.py | 11 +
tests/integration_tests/charts/data/api_tests.py | 22 +
tests/integration_tests/core_tests.py | 54 +-
tests/integration_tests/dashboards/api_tests.py | 2 +-
tests/integration_tests/databases/api_tests.py | 2 +-
tests/integration_tests/dataframe_test.py | 53 -
tests/integration_tests/datasets/api_tests.py | 12 +-
tests/integration_tests/feature_flag_tests.py | 83 -
tests/integration_tests/log_api_tests.py | 4 +-
.../pandas_postprocessing_tests.py | 24 +-
tests/integration_tests/security/api_tests.py | 2 +-
tests/integration_tests/sql_parse_tests.py | 757 -
tests/unit_tests/conftest.py | 12 +-
tests/unit_tests/dataframe_test.py | 55 +
tests/unit_tests/feature_flag_test.py | 65 +
tests/unit_tests/sql_parse_tests.py | 1116 +-
218 files changed, 153933 insertions(+), 77417 deletions(-)
delete mode 100755 docker/docker-entrypoint.sh
copy tests/unit_tests/conftest.py => docker/run-server.sh (54%)
rename scripts/{babel_extract.sh => babel_update.sh} (88%)
create mode 100644 superset-frontend/packages/superset-ui-demo/storybook/stories/plugins/legacy-preset-chart-deckgl/Arc/Stories.tsx
rename superset-frontend/{temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-plugins-demo/storybook/stories => packages/superset-ui-demo/storybook/stories/plugins}/legacy-preset-chart-deckgl/Arc/payload.js (89%)
create mode 100644 superset-frontend/packages/superset-ui-demo/storybook/stories/plugins/legacy-preset-chart-deckgl/Grid/Stories.tsx
rename superset-frontend/{temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-plugins-demo/storybook/stories/legacy-preset-chart-deckgl/Hex => packages/superset-ui-demo/storybook/stories/plugins/legacy-preset-chart-deckgl/Grid}/payload.js (83%)
create mode 100644 superset-frontend/packages/superset-ui-demo/storybook/stories/plugins/legacy-preset-chart-deckgl/Hex/Stories.tsx
rename superset-frontend/{temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-plugins-demo/storybook/stories/legacy-preset-chart-deckgl/Grid => packages/superset-ui-demo/storybook/stories/plugins/legacy-preset-chart-deckgl/Hex}/payload.js (83%)
create mode 100644 superset-frontend/packages/superset-ui-demo/storybook/stories/plugins/legacy-preset-chart-deckgl/Path/Stories.tsx
rename superset-frontend/{temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-plugins-demo/storybook/stories => packages/superset-ui-demo/storybook/stories/plugins}/legacy-preset-chart-deckgl/Path/payload.js (88%)
create mode 100644 superset-frontend/packages/superset-ui-demo/storybook/stories/plugins/legacy-preset-chart-deckgl/Polygon/Stories.tsx
rename superset-frontend/{temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-plugins-demo/storybook/stories => packages/superset-ui-demo/storybook/stories/plugins}/legacy-preset-chart-deckgl/Polygon/geojsonPayload.js (76%)
rename superset-frontend/{temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-plugins-demo/storybook/stories => packages/superset-ui-demo/storybook/stories/plugins}/legacy-preset-chart-deckgl/Polygon/payload.js (93%)
create mode 100644 superset-frontend/packages/superset-ui-demo/storybook/stories/plugins/legacy-preset-chart-deckgl/Scatter/Stories.tsx
rename superset-frontend/{temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-plugins-demo/storybook/stories => packages/superset-ui-demo/storybook/stories/plugins}/legacy-preset-chart-deckgl/Scatter/payload.js (87%)
create mode 100644 superset-frontend/packages/superset-ui-demo/storybook/stories/plugins/legacy-preset-chart-deckgl/Screengrid/Stories.tsx
rename superset-frontend/{temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-plugins-demo/storybook/stories => packages/superset-ui-demo/storybook/stories/plugins}/legacy-preset-chart-deckgl/Screengrid/payload.js (88%)
copy superset-frontend/{temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-legacy-preset-chart-deckgl/src/utils/colors.js => plugins/legacy-plugin-chart-calendar/src/utils.ts} (70%)
copy superset-frontend/{temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-legacy-preset-chart-deckgl/src/utils/colors.js => plugins/legacy-plugin-chart-calendar/test/getFormattedUTCTime.ts} (69%)
rename superset-frontend/{temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-legacy-preset-chart-deckgl => plugins/legacy-preset-chart-deckgl}/README.md (61%)
rename superset-frontend/{temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-legacy-preset-chart-deckgl => plugins/legacy-preset-chart-deckgl}/package.json (96%)
rename superset-frontend/{temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-legacy-preset-chart-deckgl => plugins/legacy-preset-chart-deckgl}/src/AnimatableDeckGLContainer.jsx (96%)
rename superset-frontend/{temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-legacy-preset-chart-deckgl => plugins/legacy-preset-chart-deckgl}/src/CategoricalDeckGLContainer.jsx (91%)
rename superset-frontend/{temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-legacy-preset-chart-deckgl => plugins/legacy-preset-chart-deckgl}/src/DeckGLContainer.jsx (96%)
rename superset-frontend/{temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-legacy-preset-chart-deckgl => plugins/legacy-preset-chart-deckgl}/src/Multi/Multi.jsx (94%)
rename superset-frontend/{temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-legacy-preset-chart-deckgl => plugins/legacy-preset-chart-deckgl}/src/Multi/controlPanel.js (89%)
rename superset-frontend/{temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-legacy-preset-chart-deckgl => plugins/legacy-preset-chart-deckgl}/src/Multi/images/thumbnail.png (100%)
rename superset-frontend/{temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-legacy-preset-chart-deckgl => plugins/legacy-preset-chart-deckgl}/src/Multi/images/thumbnailLarge.png (100%)
rename superset-frontend/{temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-legacy-preset-chart-deckgl => plugins/legacy-preset-chart-deckgl}/src/Multi/index.js (100%)
rename superset-frontend/{temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-legacy-preset-chart-deckgl => plugins/legacy-preset-chart-deckgl}/src/TooltipRow.jsx (100%)
copy superset-frontend/{temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-legacy-preset-chart-deckgl => plugins/legacy-preset-chart-deckgl}/src/components/BootstrapSliderWrapper.css (100%)
copy superset-frontend/{temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-legacy-preset-chart-deckgl => plugins/legacy-preset-chart-deckgl}/src/components/BootstrapSliderWrapper.jsx (100%)
rename superset-frontend/{temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-legacy-preset-chart-deckgl => plugins/legacy-preset-chart-deckgl}/src/components/Legend.css (100%)
rename superset-frontend/{temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-legacy-preset-chart-deckgl => plugins/legacy-preset-chart-deckgl}/src/components/Legend.jsx (93%)
rename superset-frontend/{temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-legacy-preset-chart-deckgl => plugins/legacy-preset-chart-deckgl}/src/components/PlaySlider.css (100%)
rename superset-frontend/{temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-legacy-preset-chart-deckgl => plugins/legacy-preset-chart-deckgl}/src/components/PlaySlider.jsx (90%)
rename superset-frontend/{temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-legacy-preset-chart-deckgl => plugins/legacy-preset-chart-deckgl}/src/components/Tooltip.tsx (62%)
copy superset-frontend/{temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-legacy-preset-chart-deckgl => plugins/legacy-preset-chart-deckgl}/src/css/deckgl.css (100%)
rename superset-frontend/{temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-legacy-preset-chart-deckgl/src/factory.jsx => plugins/legacy-preset-chart-deckgl/src/factory.tsx} (60%)
rename superset-frontend/{temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-legacy-preset-chart-deckgl/src/components/BootstrapSliderWrapper.jsx => plugins/legacy-preset-chart-deckgl/src/index.js} (56%)
rename superset-frontend/{temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-legacy-preset-chart-deckgl => plugins/legacy-preset-chart-deckgl}/src/layers/Arc/Arc.jsx (87%)
rename superset-frontend/{temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-legacy-preset-chart-deckgl/src/layers/Arc/controlPanel.js => plugins/legacy-preset-chart-deckgl/src/layers/Arc/controlPanel.ts} (86%)
rename superset-frontend/{temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-legacy-preset-chart-deckgl => plugins/legacy-preset-chart-deckgl}/src/layers/Arc/images/thumbnail.png (100%)
rename superset-frontend/{temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-legacy-preset-chart-deckgl => plugins/legacy-preset-chart-deckgl}/src/layers/Arc/images/thumbnailLarge.png (100%)
rename superset-frontend/{temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-legacy-preset-chart-deckgl => plugins/legacy-preset-chart-deckgl}/src/layers/Arc/index.js (93%)
rename superset-frontend/{temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-legacy-preset-chart-deckgl => plugins/legacy-preset-chart-deckgl}/src/layers/Geojson/Geojson.jsx (97%)
rename superset-frontend/{temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-legacy-preset-chart-deckgl/src/layers/Geojson/controlPanel.js => plugins/legacy-preset-chart-deckgl/src/layers/Geojson/controlPanel.ts} (82%)
rename superset-frontend/{temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-legacy-preset-chart-deckgl => plugins/legacy-preset-chart-deckgl}/src/layers/Geojson/images/thumbnail.png (100%)
rename superset-frontend/{temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-legacy-preset-chart-deckgl => plugins/legacy-preset-chart-deckgl}/src/layers/Geojson/images/thumbnailLarge.png (100%)
rename superset-frontend/{temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-legacy-preset-chart-deckgl => plugins/legacy-preset-chart-deckgl}/src/layers/Geojson/index.js (100%)
rename superset-frontend/{temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-legacy-preset-chart-deckgl => plugins/legacy-preset-chart-deckgl}/src/layers/Grid/Grid.jsx (95%)
rename superset-frontend/{temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-legacy-preset-chart-deckgl/src/layers/Grid/controlPanel.js => plugins/legacy-preset-chart-deckgl/src/layers/Grid/controlPanel.ts} (79%)
rename superset-frontend/{temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-legacy-preset-chart-deckgl => plugins/legacy-preset-chart-deckgl}/src/layers/Grid/images/thumbnail.png (100%)
rename superset-frontend/{temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-legacy-preset-chart-deckgl => plugins/legacy-preset-chart-deckgl}/src/layers/Grid/images/thumbnailLarge.png (100%)
rename superset-frontend/{temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-legacy-preset-chart-deckgl => plugins/legacy-preset-chart-deckgl}/src/layers/Grid/index.js (100%)
rename superset-frontend/{temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-legacy-preset-chart-deckgl => plugins/legacy-preset-chart-deckgl}/src/layers/Hex/Hex.jsx (95%)
rename superset-frontend/{temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-legacy-preset-chart-deckgl/src/layers/Hex/controlPanel.js => plugins/legacy-preset-chart-deckgl/src/layers/Hex/controlPanel.ts} (80%)
rename superset-frontend/{temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-legacy-preset-chart-deckgl => plugins/legacy-preset-chart-deckgl}/src/layers/Hex/images/thumbnail.png (100%)
rename superset-frontend/{temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-legacy-preset-chart-deckgl => plugins/legacy-preset-chart-deckgl}/src/layers/Hex/images/thumbnailLarge.png (100%)
rename superset-frontend/{temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-legacy-preset-chart-deckgl => plugins/legacy-preset-chart-deckgl}/src/layers/Hex/index.js (100%)
rename superset-frontend/{temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-legacy-preset-chart-deckgl => plugins/legacy-preset-chart-deckgl}/src/layers/Path/Path.jsx (100%)
rename superset-frontend/{temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-legacy-preset-chart-deckgl/src/layers/Path/controlPanel.js => plugins/legacy-preset-chart-deckgl/src/layers/Path/controlPanel.ts} (82%)
rename superset-frontend/{temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-legacy-preset-chart-deckgl => plugins/legacy-preset-chart-deckgl}/src/layers/Path/images/thumbnail.png (100%)
rename superset-frontend/{temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-legacy-preset-chart-deckgl => plugins/legacy-preset-chart-deckgl}/src/layers/Path/images/thumbnailLarge.png (100%)
copy superset-frontend/{temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-legacy-preset-chart-deckgl => plugins/legacy-preset-chart-deckgl}/src/layers/Path/index.js (100%)
rename superset-frontend/{temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-legacy-preset-chart-deckgl => plugins/legacy-preset-chart-deckgl}/src/layers/Polygon/Polygon.jsx (90%)
rename superset-frontend/{temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-legacy-preset-chart-deckgl/src/layers/Polygon/controlPanel.js => plugins/legacy-preset-chart-deckgl/src/layers/Polygon/controlPanel.ts} (90%)
rename superset-frontend/{temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-legacy-preset-chart-deckgl => plugins/legacy-preset-chart-deckgl}/src/layers/Polygon/images/thumbnail.png (100%)
rename superset-frontend/{temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-legacy-preset-chart-deckgl => plugins/legacy-preset-chart-deckgl}/src/layers/Polygon/images/thumbnailLarge.png (100%)
rename superset-frontend/{temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-legacy-preset-chart-deckgl => plugins/legacy-preset-chart-deckgl}/src/layers/Polygon/index.js (93%)
rename superset-frontend/{temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-legacy-preset-chart-deckgl => plugins/legacy-preset-chart-deckgl}/src/layers/Scatter/Scatter.jsx (84%)
rename superset-frontend/{temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-legacy-preset-chart-deckgl/src/layers/Scatter/controlPanel.js => plugins/legacy-preset-chart-deckgl/src/layers/Scatter/controlPanel.ts} (83%)
rename superset-frontend/{temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-legacy-preset-chart-deckgl => plugins/legacy-preset-chart-deckgl}/src/layers/Scatter/images/thumbnail.png (100%)
rename superset-frontend/{temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-legacy-preset-chart-deckgl => plugins/legacy-preset-chart-deckgl}/src/layers/Scatter/images/thumbnailLarge.png (100%)
rename superset-frontend/{temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-legacy-preset-chart-deckgl => plugins/legacy-preset-chart-deckgl}/src/layers/Scatter/index.js (100%)
rename superset-frontend/{temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-legacy-preset-chart-deckgl => plugins/legacy-preset-chart-deckgl}/src/layers/Screengrid/Screengrid.jsx (90%)
rename superset-frontend/{temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-legacy-preset-chart-deckgl/src/layers/Screengrid/controlPanel.js => plugins/legacy-preset-chart-deckgl/src/layers/Screengrid/controlPanel.ts} (81%)
rename superset-frontend/{temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-legacy-preset-chart-deckgl => plugins/legacy-preset-chart-deckgl}/src/layers/Screengrid/images/thumbnail.png (100%)
rename superset-frontend/{temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-legacy-preset-chart-deckgl => plugins/legacy-preset-chart-deckgl}/src/layers/Screengrid/images/thumbnailLarge.png (100%)
rename superset-frontend/{temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-legacy-preset-chart-deckgl => plugins/legacy-preset-chart-deckgl}/src/layers/Screengrid/index.js (93%)
rename superset-frontend/{temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-legacy-preset-chart-deckgl => plugins/legacy-preset-chart-deckgl}/src/layers/common.jsx (91%)
rename superset-frontend/{temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-legacy-preset-chart-deckgl => plugins/legacy-preset-chart-deckgl}/src/layers/index.js (100%)
rename superset-frontend/{temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-legacy-preset-chart-deckgl => plugins/legacy-preset-chart-deckgl}/src/preset.js (100%)
rename superset-frontend/{temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-legacy-preset-chart-deckgl => plugins/legacy-preset-chart-deckgl}/src/transformProps.js (98%)
copy superset-frontend/{temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-legacy-preset-chart-deckgl/src/components/BootstrapSliderWrapper.css => plugins/legacy-preset-chart-deckgl/src/types.ts} (82%)
rename superset-frontend/{temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-legacy-preset-chart-deckgl => plugins/legacy-preset-chart-deckgl}/src/utilities/Shared_DeckGL.jsx (94%)
rename superset-frontend/{temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-legacy-preset-chart-deckgl => plugins/legacy-preset-chart-deckgl}/src/utilities/controls.jsx (89%)
copy superset-frontend/{temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-legacy-preset-chart-deckgl => plugins/legacy-preset-chart-deckgl}/src/utilities/sharedDndControls.jsx (100%)
rename superset-frontend/{temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-legacy-preset-chart-deckgl => plugins/legacy-preset-chart-deckgl}/src/utilities/utils.js (97%)
rename superset-frontend/{temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-legacy-preset-chart-deckgl => plugins/legacy-preset-chart-deckgl}/src/utils.js (87%)
rename superset-frontend/{temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-legacy-preset-chart-deckgl => plugins/legacy-preset-chart-deckgl}/src/utils/colors.js (100%)
create mode 100644 superset-frontend/plugins/legacy-preset-chart-deckgl/src/utils/computeBoundsFromPoints.ts
rename superset-frontend/{temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-legacy-preset-chart-deckgl => plugins/legacy-preset-chart-deckgl}/src/utils/explore.js (52%)
create mode 100644 superset-frontend/plugins/legacy-preset-chart-deckgl/src/utils/fitViewport.ts
rename superset-frontend/{temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-legacy-preset-chart-deckgl => plugins/legacy-preset-chart-deckgl}/src/utils/geo.js (94%)
rename superset-frontend/{temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-legacy-preset-chart-deckgl/src/utilities/sharedDndControls.jsx => plugins/legacy-preset-chart-deckgl/src/utils/getPointsFromPolygon.ts} (58%)
rename superset-frontend/{temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-legacy-preset-chart-deckgl => plugins/legacy-preset-chart-deckgl}/src/utils/safeStringify.js (100%)
rename superset-frontend/{temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-legacy-preset-chart-deckgl => plugins/legacy-preset-chart-deckgl}/src/utils/sandbox.js (100%)
rename superset-frontend/{temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-legacy-preset-chart-deckgl => plugins/legacy-preset-chart-deckgl}/src/utils/time.js (91%)
rename superset-frontend/{temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-legacy-preset-chart-deckgl => plugins/legacy-preset-chart-deckgl}/src/utils/utils.js (88%)
rename superset-frontend/{temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-legacy-preset-chart-deckgl/src/components/BootstrapSliderWrapper.css => plugins/legacy-preset-chart-deckgl/test/utils/colors.test.js} (81%)
rename superset-frontend/{temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-legacy-preset-chart-deckgl/src/layers/Path/index.js => plugins/legacy-preset-chart-deckgl/test/utils/getPointsFromPolygon.test.ts} (53%)
create mode 100644 superset-frontend/plugins/legacy-preset-chart-deckgl/tsconfig.json
rename superset-frontend/{temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-legacy-preset-chart-deckgl/src/css/deckgl.css => plugins/legacy-preset-chart-deckgl/types/external.d.ts} (91%)
delete mode 100644 superset-frontend/src/dashboard/components/PropertiesModal/index.jsx
create mode 100644 superset-frontend/src/dashboard/components/PropertiesModal/index.tsx
delete mode 100644 superset-frontend/temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-legacy-preset-chart-deckgl/src/index.js
delete mode 100644 superset-frontend/temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-legacy-preset-chart-deckgl/src/utils/computeBoundsFromPoints.ts
delete mode 100644 superset-frontend/temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-legacy-preset-chart-deckgl/src/utils/fitViewport.ts
delete mode 100644 superset-frontend/temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-legacy-preset-chart-deckgl/src/utils/getPointsFromPolygon.ts
delete mode 100644 superset-frontend/temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-legacy-preset-chart-deckgl/src/utils/types.ts
delete mode 100644 superset-frontend/temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-legacy-preset-chart-deckgl/test/utils/colors.test.js
delete mode 100644 superset-frontend/temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-legacy-preset-chart-deckgl/test/utils/getPointsFromPolygon.test.ts
delete mode 100644 superset-frontend/temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-legacy-preset-chart-deckgl/types/external.d.ts
delete mode 100644 superset-frontend/temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-legacy-preset-chart-deckgl/yarn.lock
delete mode 100644 superset-frontend/temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-plugins-demo/storybook/stories/legacy-preset-chart-deckgl/Arc/Stories.tsx
delete mode 100644 superset-frontend/temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-plugins-demo/storybook/stories/legacy-preset-chart-deckgl/Arc/index.js
delete mode 100644 superset-frontend/temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-plugins-demo/storybook/stories/legacy-preset-chart-deckgl/Grid/Stories.tsx
delete mode 100644 superset-frontend/temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-plugins-demo/storybook/stories/legacy-preset-chart-deckgl/Grid/index.js
delete mode 100644 superset-frontend/temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-plugins-demo/storybook/stories/legacy-preset-chart-deckgl/Hex/Stories.tsx
delete mode 100644 superset-frontend/temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-plugins-demo/storybook/stories/legacy-preset-chart-deckgl/Hex/index.js
delete mode 100644 superset-frontend/temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-plugins-demo/storybook/stories/legacy-preset-chart-deckgl/Path/Stories.tsx
delete mode 100644 superset-frontend/temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-plugins-demo/storybook/stories/legacy-preset-chart-deckgl/Path/index.js
delete mode 100644 superset-frontend/temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-plugins-demo/storybook/stories/legacy-preset-chart-deckgl/Polygon/Stories.tsx
delete mode 100644 superset-frontend/temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-plugins-demo/storybook/stories/legacy-preset-chart-deckgl/Polygon/index.js
delete mode 100644 superset-frontend/temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-plugins-demo/storybook/stories/legacy-preset-chart-deckgl/Scatter/Stories.tsx
delete mode 100644 superset-frontend/temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-plugins-demo/storybook/stories/legacy-preset-chart-deckgl/Scatter/index.js
delete mode 100644 superset-frontend/temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-plugins-demo/storybook/stories/legacy-preset-chart-deckgl/Screengrid/Stories.tsx
delete mode 100644 superset-frontend/temporary_superset_ui/superset-ui-plugins-deckgl/packages/superset-ui-plugins-demo/storybook/stories/legacy-preset-chart-deckgl/Screengrid/index.js
delete mode 100644 tests/integration_tests/dataframe_test.py
delete mode 100644 tests/integration_tests/feature_flag_tests.py
delete mode 100644 tests/integration_tests/sql_parse_tests.py
create mode 100644 tests/unit_tests/dataframe_test.py
create mode 100644 tests/unit_tests/feature_flag_test.py
[superset] 01/01: helper methods and dashboard access
Posted by su...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
suddjian pushed a commit to branch guest-token-authz
in repository https://gitbox.apache.org/repos/asf/superset.git
commit d68734041224f4e90a542635f328fb7bed693c7d
Author: David Aaron Suddjian <aa...@gmail.com>
AuthorDate: Tue Dec 7 14:13:44 2021 -0800
helper methods and dashboard access
---
superset/common/request_contexed_based.py | 16 +---------------
superset/config.py | 2 +-
superset/dashboards/filters.py | 24 +++++++++++++++++++-----
superset/security/api.py | 2 +-
superset/security/guest_token.py | 14 +++++++++++---
superset/security/manager.py | 23 +++++++++++++++++------
superset/views/base.py | 9 +--------
superset/views/core.py | 5 +++--
8 files changed, 54 insertions(+), 41 deletions(-)
diff --git a/superset/common/request_contexed_based.py b/superset/common/request_contexed_based.py
index 0b06a0c..5d8405e 100644
--- a/superset/common/request_contexed_based.py
+++ b/superset/common/request_contexed_based.py
@@ -16,24 +16,10 @@
# under the License.
from __future__ import annotations
-from typing import List, TYPE_CHECKING
-
-from flask import g
-
from superset import conf, security_manager
-if TYPE_CHECKING:
- from flask_appbuilder.security.sqla.models import Role
-
-
-def get_user_roles() -> List[Role]:
- if g.user.is_anonymous:
- public_role = conf.get("AUTH_ROLE_PUBLIC")
- return [security_manager.get_public_role()] if public_role else []
- return g.user.roles
-
def is_user_admin() -> bool:
- user_roles = [role.name.lower() for role in get_user_roles()]
+ user_roles = [role.name.lower() for role in security_manager.get_user_roles()]
admin_role = conf.get("AUTH_ROLE_ADMIN").lower()
return admin_role in user_roles
diff --git a/superset/config.py b/superset/config.py
index f9b7343..2ff2f1a 100644
--- a/superset/config.py
+++ b/superset/config.py
@@ -389,7 +389,7 @@ DEFAULT_FEATURE_FLAGS: Dict[str, bool] = {
# a custom security config could potentially give access to setting filters on
# tables that users do not have access to.
"ROW_LEVEL_SECURITY": True,
- "EMBEDDED_SUPERSET": False,
+ "EMBEDDED_SUPERSET": False, # This requires that the public role be available
# Enables Alerts and reports new implementation
"ALERT_REPORTS": False,
# Enable experimental feature to search for other dashboards
diff --git a/superset/dashboards/filters.py b/superset/dashboards/filters.py
index 9658478..3d49978 100644
--- a/superset/dashboards/filters.py
+++ b/superset/dashboards/filters.py
@@ -16,6 +16,7 @@
# under the License.
from typing import Any, Optional
+from flask import g
from flask_appbuilder.security.sqla.models import Role
from flask_babel import lazy_gettext as _
from sqlalchemy import and_, or_
@@ -25,7 +26,8 @@ from superset import db, is_feature_enabled, security_manager
from superset.models.core import FavStar
from superset.models.dashboard import Dashboard
from superset.models.slice import Slice
-from superset.views.base import BaseFilter, get_user_roles, is_user_admin
+from superset.security.guest_token import GuestTokenResourceType, GuestUser
+from superset.views.base import BaseFilter, is_user_admin
from superset.views.base_api import BaseFavoriteFilter
@@ -112,7 +114,7 @@ class DashboardAccessFilter(BaseFilter): # pylint: disable=too-few-public-metho
)
)
- dashboard_rbac_or_filters = []
+ feature_flagged_filters = []
if is_feature_enabled("DASHBOARD_RBAC"):
roles_based_query = (
db.session.query(Dashboard.id)
@@ -121,19 +123,31 @@ class DashboardAccessFilter(BaseFilter): # pylint: disable=too-few-public-metho
and_(
Dashboard.published.is_(True),
dashboard_has_roles,
- Role.id.in_([x.id for x in get_user_roles()]),
+ Role.id.in_([x.id for x in security_manager.get_user_roles()]),
),
)
)
- dashboard_rbac_or_filters.append(Dashboard.id.in_(roles_based_query))
+ feature_flagged_filters.append(Dashboard.id.in_(roles_based_query))
+
+ if is_feature_enabled("EMBEDDED_SUPERSET") and security_manager.is_guest_user(
+ g.user
+ ):
+ guest_user: GuestUser = g.user
+ embedded_dashboard_ids = [
+ r["id"]
+ for r in guest_user.resources
+ if r["type"] == GuestTokenResourceType.DASHBOARD
+ ]
+ if len(embedded_dashboard_ids) != 0:
+ feature_flagged_filters.append(Dashboard.id.in_(embedded_dashboard_ids))
query = query.filter(
or_(
Dashboard.id.in_(owner_ids_query),
Dashboard.id.in_(datasource_perm_query),
Dashboard.id.in_(users_favorite_dash_query),
- *dashboard_rbac_or_filters,
+ *feature_flagged_filters,
)
)
diff --git a/superset/security/api.py b/superset/security/api.py
index c0a4a77..54efcd0 100644
--- a/superset/security/api.py
+++ b/superset/security/api.py
@@ -35,7 +35,7 @@ class UserSchema(Schema):
class ResourceSchema(Schema):
- type = fields.String(required=True)
+ type = fields.String(required=True) # todo figure out how to make this an enum
id = fields.String(required=True)
rls = fields.String()
diff --git a/superset/security/guest_token.py b/superset/security/guest_token.py
index cbef52f..60add81 100644
--- a/superset/security/guest_token.py
+++ b/superset/security/guest_token.py
@@ -14,6 +14,7 @@
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
+from enum import Enum
from typing import List, Optional, TypedDict, Union
from flask_appbuilder.security.sqla.models import Role
@@ -26,17 +27,24 @@ class GuestTokenUser(TypedDict, total=False):
last_name: str
+class GuestTokenResourceType(Enum):
+ DASHBOARD = "dashboard"
+
+
class GuestTokenResource(TypedDict):
- type: str
+ type: GuestTokenResourceType
id: Union[str, int]
rls: Optional[str]
+GuestTokenResources = List[GuestTokenResource]
+
+
class GuestToken(TypedDict):
iat: float
exp: float
user: GuestTokenUser
- resources: List[GuestTokenResource]
+ resources: GuestTokenResources
class GuestUser(AnonymousUserMixin):
@@ -50,7 +58,7 @@ class GuestUser(AnonymousUserMixin):
def is_authenticated(self) -> bool:
"""
This is set to true because guest users should be considered authenticated,
- at least in most places. The treatment of this flag is pretty inconsistent.
+ at least in most places. The treatment of this flag is kind of inconsistent.
"""
return True
diff --git a/superset/security/manager.py b/superset/security/manager.py
index 96363d2..95bcbeb 100644
--- a/superset/security/manager.py
+++ b/superset/security/manager.py
@@ -68,6 +68,7 @@ from superset.exceptions import SupersetSecurityException
from superset.security.guest_token import (
GuestToken,
GuestTokenResource,
+ GuestTokenResources,
GuestTokenUser,
GuestUser,
)
@@ -278,7 +279,7 @@ class SupersetSecurityManager( # pylint: disable=too-many-public-methods
"""
user = g.user
- if user.is_anonymous:
+ if user.is_anonymous and not self.is_guest_user(user):
return self.is_item_public(permission_name, view_name)
return self._has_view_access(user, permission_name, view_name)
@@ -1097,6 +1098,12 @@ class SupersetSecurityManager( # pylint: disable=too-many-public-methods
def get_anonymous_user(self) -> User: # pylint: disable=no-self-use
return AnonymousUserMixin()
+ def get_user_roles(self) -> List[Role]:
+ if g.user.is_anonymous:
+ public_role = current_app.config.get("AUTH_ROLE_PUBLIC")
+ return [self.get_public_role()] if public_role else []
+ return g.user.roles
+
def get_rls_filters(self, table: "BaseDatasource") -> List[SqlaQuery]:
"""
Retrieves the appropriate row level security filters for the current user and
@@ -1195,8 +1202,7 @@ class SupersetSecurityManager( # pylint: disable=too-many-public-methods
)
)
- @staticmethod
- def raise_for_dashboard_access(dashboard: "Dashboard") -> None:
+ def raise_for_dashboard_access(self, dashboard: "Dashboard") -> None:
"""
Raise an exception if the user cannot access the dashboard.
@@ -1206,14 +1212,15 @@ class SupersetSecurityManager( # pylint: disable=too-many-public-methods
# pylint: disable=import-outside-toplevel
from superset import is_feature_enabled
from superset.dashboards.commands.exceptions import DashboardAccessDeniedError
- from superset.views.base import get_user_roles, is_user_admin
+ from superset.views.base import is_user_admin
from superset.views.utils import is_owner
has_rbac_access = True
if is_feature_enabled("DASHBOARD_RBAC"):
has_rbac_access = any(
- dashboard_role.id in [user_role.id for user_role in get_user_roles()]
+ dashboard_role.id
+ in [user_role.id for user_role in self.get_user_roles()]
for dashboard_role in dashboard.roles
)
@@ -1255,7 +1262,7 @@ class SupersetSecurityManager( # pylint: disable=too-many-public-methods
return time.time()
def create_guest_access_token(
- self, user: GuestTokenUser, resources: List[GuestTokenResource]
+ self, user: GuestTokenUser, resources: GuestTokenResources
) -> bytes:
secret = current_app.config["GUEST_TOKEN_JWT_SECRET"]
algo = current_app.config["GUEST_TOKEN_JWT_ALGO"]
@@ -1319,3 +1326,7 @@ class SupersetSecurityManager( # pylint: disable=too-many-public-methods
if token.get("resources") is None:
raise ValueError("Guest token does not contain a resources claim")
return cast(GuestToken, token)
+
+ @staticmethod
+ def is_guest_user(user: Any) -> bool:
+ return hasattr(user, "is_guest_user") and user.is_guest_user
diff --git a/superset/views/base.py b/superset/views/base.py
index 72dc805..e5fc082 100644
--- a/superset/views/base.py
+++ b/superset/views/base.py
@@ -263,15 +263,8 @@ def create_table_permissions(table: models.SqlaTable) -> None:
security_manager.add_permission_view_menu("schema_access", table.schema_perm)
-def get_user_roles() -> List[Role]:
- if g.user.is_anonymous:
- public_role = conf.get("AUTH_ROLE_PUBLIC")
- return [security_manager.find_role(public_role)] if public_role else []
- return g.user.roles
-
-
def is_user_admin() -> bool:
- user_roles = [role.name.lower() for role in list(get_user_roles())]
+ user_roles = [role.name.lower() for role in list(security_manager.get_user_roles())]
return "admin" in user_roles
diff --git a/superset/views/core.py b/superset/views/core.py
index 9557c30..68f6e78 100755
--- a/superset/views/core.py
+++ b/superset/views/core.py
@@ -135,7 +135,6 @@ from superset.views.base import (
data_payload_response,
generate_download_headers,
get_error_msg,
- get_user_roles,
handle_api_exception,
json_error_response,
json_errors_response,
@@ -1886,7 +1885,9 @@ class Superset(BaseSupersetView): # pylint: disable=too-many-public-methods
f"ERROR: cannot find dashboard {dashboard_id}", status=404
)
- edit_perm = is_owner(dash, g.user) or admin_role in get_user_roles()
+ edit_perm = (
+ is_owner(dash, g.user) or admin_role in security_manager.get_user_roles()
+ )
if not edit_perm:
username = g.user.username if hasattr(g.user, "username") else "user"
return json_error_response(