Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

missing authorization headers issue fixed #725

Closed
wants to merge 2 commits into from
Closed
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 6 additions & 2 deletions resources/js/tryitout.js
Original file line number Diff line number Diff line change
Expand Up @@ -231,8 +231,12 @@ async function executeTryOut(endpointId, form) {
const urlParameters = form.querySelectorAll('input[data-component=url]');
urlParameters.forEach(el => (path = path.replace(new RegExp(`\\{${el.name}\\??}`), el.value)));

const headers = Object.fromEntries(Array.from(form.querySelectorAll('input[data-component=header]'))
.map(el => [el.name, el.value]));
const headers = JSON.parse(form.dataset.headers);
// Check for auth param that might go in header
if (form.dataset.authed === "1") {
const authHeaderEl = form.querySelector('input[data-component=header]');
if (authHeaderEl) headers[authHeaderEl.name] = authHeaderEl.dataset.prefix + authHeaderEl.value;
}
Comment on lines +234 to +239
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think this PR is right. Where does form.dataset.headers come from? There's no data-headers attribute on the form. And how do we know the auth header is the first item matching 'input[data-component=header]'?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It comes from config

config/scribe.php Line no 76

and output is like

<form id="form-POSTapi-login" data-method="POST"
      data-path="api/login"
      data-authed="0"
      data-hasfiles="0"
      data-isarraybody="0"
      data-headers='{"Content-Type":"application\/json","Accept":"application\/json"}'
      autocomplete="off"
      onsubmit="event.preventDefault(); executeTryOut('POSTapi-login', this);">

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

and also this was in older version but removed in newer version don't know why...

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

const headers = JSON.parse(form.dataset.headers);

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I've added missing data-headers='@JSON($endpoint->headers)' parameter

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Dude, you can't just add back something that was removed without trying to find out why. This is not good work. I'm sorry, I'll be closing this. You've made me waste time investigating this, only to find that you just copied an older version of these files. WTF. I suspect you're on an older version of Scribe and trying to change something in a newer version.

I'm closing this PR. If you wish to try again, please include a proper explanation of the issue you faced (with screenshots of before and after), and then explain how your fix actually changes things, not just copy/paste from an older version.


// When using FormData, the browser sets the correct content-type + boundary
let method = form.dataset.method;
Expand Down
Loading