mostopalove opened a new issue, #32552:
URL: https://github.com/apache/superset/issues/32552
### Bug description
When using Apache Superset in embedded mode with the Gamma role assigned to
the guest user, charts fail to load data with a `403` error. The error message
displayed is:
```
This endpoint requires the datasource *, database or all_datasource_access
permission
```
Granting the `all_datasource_access` permission does not resolve the issue.
### Steps to Reproduce
1. Pull the latest Superset code from GitHub.
2. Configure the application to work in embedded mode by setting:
```python
FEATURE_FLAGS = {"EMBEDDED_SUPERSET": True}
GUEST_ROLE_NAME = "Gamma"
```
3. Use the `Gamma` role for the guest user.
4. Start the application using the following command:
```bash
docker compose up --build
```
5. Open any dashboard and enable embedding.
6. Use the dashboard ID in the frontend application (in this case, using
`@superset-ui/embedded-sdk`).
7. Open the frontend application in the browser.
### Expected Behavior
The user should be able to view all charts with data.
### Actual Behavior
All charts fail to load and display the following error:
```
This endpoint requires the datasource *, database or all_datasource_access
permission
```
Granting the `all_datasource_access` permission does not fix the issue.
### Screenshots/recordings
### Root Cause Analysis
This bug appeared after the `<Charts/>` component was refactored. The issue
occurs because the request is sent to the backend without the `dashboardID` in
the `form_data` object. In the previous working implementation, this was
correctly set, as seen in:
[Previous working
implementation](https://github.com/apache/superset/blob/superset-helm-chart-0.13.4/superset-frontend/src/dashboard/containers/Chart.jsx#L90)
The refactored implementation can be found here:
[Refactored `<Charts/>`
component](https://github.com/apache/superset/blob/master/superset-frontend/src/dashboard/components/gridComponents/Chart.jsx)
### Proposed Solution
The fix is simple and requires only two lines of code to ensure
`dashboardID` is included in `form_data`:
```javascript
const dashboardInfo = useSelector(state => state.dashboardInfo);
formData.dashboardId = dashboardInfo.id;
```
### Screenshots
#### Before Fix:
<img width="1512" alt="Image"
src="https://github.com/user-attachments/assets/11a464e2-7668-4bb8-977d-72c68c75e7ac"
/>
#### After Fix:
<img width="1506" alt="Image"
src="https://github.com/user-attachments/assets/6b485e0e-7b2a-4244-8951-5ae3a5004e67"
/>
### Superset version
master / latest-dev
### Python version
3.9
### Node version
16
### Browser
Chrome
### Additional context
_No response_
### Checklist
- [x] I have searched Superset docs and Slack and didn't find a solution to
my problem.
- [x] I have searched the GitHub issue tracker and didn't find a similar bug
report.
- [x] I have checked Superset's logs for errors and if I found a relevant
Python stacktrace, I included it here as text in the "additional context"
section.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]