86 lines
2.0 KiB
JavaScript
86 lines
2.0 KiB
JavaScript
import reducers from "./reducers"
|
|
import * as actions from "./actions"
|
|
import * as selectors from "./selectors"
|
|
import { execute as wrappedExecuteAction } from "./spec-extensions/wrap-actions"
|
|
import { loaded as wrappedLoadedAction } from "./configs-extensions/wrap-actions"
|
|
import { authorize as wrappedAuthorizeAction, logout as wrappedLogoutAction } from "./wrap-actions"
|
|
|
|
export default function() {
|
|
return {
|
|
afterLoad(system) {
|
|
this.rootInjects = this.rootInjects || {}
|
|
this.rootInjects.initOAuth = system.authActions.configureAuth
|
|
this.rootInjects.preauthorizeApiKey = preauthorizeApiKey.bind(null, system)
|
|
this.rootInjects.preauthorizeBasic = preauthorizeBasic.bind(null, system)
|
|
},
|
|
statePlugins: {
|
|
auth: {
|
|
reducers,
|
|
actions,
|
|
selectors,
|
|
wrapActions: {
|
|
authorize: wrappedAuthorizeAction,
|
|
logout: wrappedLogoutAction,
|
|
}
|
|
},
|
|
configs: {
|
|
wrapActions: {
|
|
loaded: wrappedLoadedAction,
|
|
},
|
|
},
|
|
spec: {
|
|
wrapActions: {
|
|
execute: wrappedExecuteAction,
|
|
},
|
|
},
|
|
}
|
|
}
|
|
}
|
|
|
|
export function preauthorizeBasic(system, key, username, password) {
|
|
const {
|
|
authActions: { authorize },
|
|
specSelectors: { specJson, isOAS3 }
|
|
} = system
|
|
|
|
const definitionBase = isOAS3() ? ["components", "securitySchemes"] : ["securityDefinitions"]
|
|
|
|
const schema = specJson().getIn([...definitionBase, key])
|
|
|
|
if(!schema) {
|
|
return null
|
|
}
|
|
|
|
return authorize({
|
|
[key]: {
|
|
value: {
|
|
username,
|
|
password,
|
|
},
|
|
schema: schema.toJS()
|
|
}
|
|
})
|
|
}
|
|
|
|
export function preauthorizeApiKey(system, key, value) {
|
|
const {
|
|
authActions: { authorize },
|
|
specSelectors: { specJson, isOAS3 }
|
|
} = system
|
|
|
|
const definitionBase = isOAS3() ? ["components", "securitySchemes"] : ["securityDefinitions"]
|
|
|
|
const schema = specJson().getIn([...definitionBase, key])
|
|
|
|
if(!schema) {
|
|
return null
|
|
}
|
|
|
|
return authorize({
|
|
[key]: {
|
|
value,
|
|
schema: schema.toJS()
|
|
}
|
|
})
|
|
}
|