move out the code according @bodnia guide

This commit is contained in:
Mészáros Mihály
2017-04-06 13:08:23 +02:00
parent 9b35b7bf5c
commit 4066d1920e
2 changed files with 47 additions and 40 deletions

View File

@@ -1,7 +1,7 @@
import win from "core/window" import win from "core/window"
export default function authorize ( auth, authActions, errActions, configs ) { export default function authorize ( auth, authActions, errActions, configs ) {
let { schema, scopes, name, clientId, clientSecret } = auth let { schema, scopes, name, clientId } = auth
let redirectUrl = configs.oauth2RedirectUrl let redirectUrl = configs.oauth2RedirectUrl
let scopeSeparator = " " let scopeSeparator = " "
@@ -14,6 +14,11 @@ export default function authorize ( auth, authActions, errActions, configs ) {
return return
} }
if (flow === "application") {
authActions.authorizeOauth2Application(auth)
return
}
// todo move to parser // todo move to parser
if ( !redirectUrl ) { if ( !redirectUrl ) {
errActions.newAuthErr( { errActions.newAuthErr( {
@@ -34,35 +39,6 @@ export default function authorize ( auth, authActions, errActions, configs ) {
+ "&state=" + encodeURIComponent(state) + "&state=" + encodeURIComponent(state)
+ "&client_id=" + encodeURIComponent(clientId) + "&client_id=" + encodeURIComponent(clientId)
if (flow === "application") {
fetch(schema.get("tokenUrl"), {
method: "post", headers: {
"Accept":"application/json, text/plain, */*",
"Content-Type": "application/x-www-form-urlencoded"
},
body: "grant_type=client_credentials" +
"&client_id=" + encodeURIComponent(clientId) +
"&client_secret=" + encodeURIComponent(clientSecret) +
"&scope=" + encodeURIComponent(scopes.join(scopeSeparator))
})
.then(function (response) {
if ( !response.ok ) {
errActions.newAuthErr( {
authId: name,
level: "error",
source: "auth",
message: response.statusText
} )
return
} else {
response.json()
.then(function (json){
authActions.authorizeOauth2({ auth, token: json})
})
}
})
.catch(err => { errActions.newAuthErr( err ) })
} else {
// pass action authorizeOauth2 and authentication data through window // pass action authorizeOauth2 and authentication data through window
// to authorize with oauth2 // to authorize with oauth2
win.swaggerUIRedirectOauth2 = { win.swaggerUIRedirectOauth2 = {
@@ -74,4 +50,3 @@ export default function authorize ( auth, authActions, errActions, configs ) {
win.open(url) win.open(url)
} }
}

View File

@@ -119,3 +119,35 @@ export const authorizePassword = ( auth ) => ( { fn, authActions, errActions } )
}) })
.catch(err => { errActions.newAuthErr( err ) }) .catch(err => { errActions.newAuthErr( err ) })
} }
export const authorizeOauth2Application = ( auth ) => ( { authActions, errActions } ) => {
let { schema, scopes, name, clientId, clientSecret } = auth
fetch(schema.get("tokenUrl"), {
method: "post", headers: {
"Accept":"application/json, text/plain, */*",
"Content-Type": "application/x-www-form-urlencoded"
},
body: "grant_type=client_credentials" +
"&client_id=" + encodeURIComponent(clientId) +
"&client_secret=" + encodeURIComponent(clientSecret) +
"&scope=" + encodeURIComponent(scopes.join(scopeSeparator))
})
.then(function (response) {
if ( !response.ok ) {
errActions.newAuthErr( {
authId: name,
level: "error",
source: "auth",
message: response.statusText
} )
return
} else {
response.json()
.then(function (json){
authActions.authorizeOauth2({ auth, token: json})
})
}
})
.catch(err => { errActions.newAuthErr( err ) })
}