fix(auth): support for oauth2 relative url (#6546)

* Handle relative urls for oauth authorization

The full URL is computed based on the current selected server
if a relative URL is used as authorizationUrl
or tokenUrl


Co-authored-by: Eliot Berriot <contact@eliotberriot.com>
This commit is contained in:
Tim Lai
2020-10-21 15:46:31 -07:00
committed by GitHub
parent 07a0416ff6
commit 0a807d6237
4 changed files with 46 additions and 6 deletions

View File

@@ -1,8 +1,9 @@
import parseUrl from "url-parse"
import win from "core/window"
import Im from "immutable"
import { btoa, sanitizeUrl, generateCodeVerifier, createCodeChallenge } from "core/utils"
export default function authorize ( { auth, authActions, errActions, configs, authConfigs={} } ) {
export default function authorize ( { auth, authActions, errActions, configs, authConfigs={}, currentServer } ) {
let { schema, scopes, name, clientId } = auth
let flow = schema.get("flow")
let query = []
@@ -95,7 +96,17 @@ export default function authorize ( { auth, authActions, errActions, configs, au
}
const authorizationUrl = schema.get("authorizationUrl")
const sanitizedAuthorizationUrl = sanitizeUrl(authorizationUrl)
let sanitizedAuthorizationUrl
if (currentServer) {
// OpenAPI 3
sanitizedAuthorizationUrl = parseUrl(
sanitizeUrl(authorizationUrl),
currentServer,
true
).toString()
} else {
sanitizedAuthorizationUrl = sanitizeUrl(authorizationUrl)
}
let url = [sanitizedAuthorizationUrl, query.join("&")].join(authorizationUrl.indexOf("?") === -1 ? "?" : "&")
// pass action authorizeOauth2 and authentication data through window