refactor: monorepo+pnpm (removed husky)
This commit is contained in:
132
packages/hoppscotch-app/components/http/OAuth2Authorization.vue
Normal file
132
packages/hoppscotch-app/components/http/OAuth2Authorization.vue
Normal file
@@ -0,0 +1,132 @@
|
||||
<template>
|
||||
<div class="flex flex-col">
|
||||
<div class="divide-x divide-dividerLight border-b border-dividerLight flex">
|
||||
<input
|
||||
id="oidcDiscoveryURL"
|
||||
v-model="oidcDiscoveryURL"
|
||||
class="bg-transparent flex flex-1 py-2 px-4"
|
||||
placeholder="OpenID Connect Discovery URL"
|
||||
name="oidcDiscoveryURL"
|
||||
/>
|
||||
</div>
|
||||
<div class="divide-x divide-dividerLight border-b border-dividerLight flex">
|
||||
<input
|
||||
id="authURL"
|
||||
v-model="authURL"
|
||||
class="bg-transparent flex flex-1 py-2 px-4"
|
||||
placeholder="Authentication URL"
|
||||
name="authURL"
|
||||
/>
|
||||
</div>
|
||||
<div class="divide-x divide-dividerLight border-b border-dividerLight flex">
|
||||
<input
|
||||
id="accessTokenURL"
|
||||
v-model="accessTokenURL"
|
||||
class="bg-transparent flex flex-1 py-2 px-4"
|
||||
placeholder="Access Token URL"
|
||||
name="accessTokenURL"
|
||||
/>
|
||||
</div>
|
||||
<div class="divide-x divide-dividerLight border-b border-dividerLight flex">
|
||||
<input
|
||||
id="clientID"
|
||||
v-model="clientID"
|
||||
class="bg-transparent flex flex-1 py-2 px-4"
|
||||
placeholder="Client ID"
|
||||
name="clientID"
|
||||
/>
|
||||
</div>
|
||||
<div class="divide-x divide-dividerLight border-b border-dividerLight flex">
|
||||
<input
|
||||
id="scope"
|
||||
v-model="scope"
|
||||
class="bg-transparent flex flex-1 py-2 px-4"
|
||||
placeholder="Scope"
|
||||
name="scope"
|
||||
/>
|
||||
</div>
|
||||
<div class="p-2">
|
||||
<ButtonSecondary
|
||||
filled
|
||||
:label="$t('authorization.generate_token')"
|
||||
@click.native="handleAccessTokenRequest()"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts">
|
||||
import { Ref, useContext } from "@nuxtjs/composition-api"
|
||||
import { pluckRef, useStream } from "~/helpers/utils/composables"
|
||||
import { HoppRESTAuthOAuth2 } from "~/helpers/types/HoppRESTAuth"
|
||||
import { restAuth$, setRESTAuth } from "~/newstore/RESTSession"
|
||||
import { tokenRequest } from "~/helpers/oauth"
|
||||
|
||||
export default {
|
||||
setup() {
|
||||
const {
|
||||
$toast,
|
||||
app: { i18n },
|
||||
} = useContext()
|
||||
const $t = i18n.t.bind(i18n)
|
||||
|
||||
const auth = useStream(
|
||||
restAuth$,
|
||||
{ authType: "none", authActive: true },
|
||||
setRESTAuth
|
||||
)
|
||||
|
||||
const oidcDiscoveryURL = pluckRef(
|
||||
auth as Ref<HoppRESTAuthOAuth2>,
|
||||
"oidcDiscoveryURL"
|
||||
)
|
||||
|
||||
const authURL = pluckRef(auth as Ref<HoppRESTAuthOAuth2>, "authURL")
|
||||
|
||||
const accessTokenURL = pluckRef(
|
||||
auth as Ref<HoppRESTAuthOAuth2>,
|
||||
"accessTokenURL"
|
||||
)
|
||||
|
||||
const clientID = pluckRef(auth as Ref<HoppRESTAuthOAuth2>, "clientID")
|
||||
|
||||
const scope = pluckRef(auth as Ref<HoppRESTAuthOAuth2>, "scope")
|
||||
|
||||
const handleAccessTokenRequest = async () => {
|
||||
if (
|
||||
oidcDiscoveryURL.value === "" &&
|
||||
(authURL.value === "" || accessTokenURL.value === "")
|
||||
) {
|
||||
$toast.error($t("complete_config_urls").toString(), {
|
||||
icon: "error",
|
||||
})
|
||||
return
|
||||
}
|
||||
try {
|
||||
const tokenReqParams = {
|
||||
grantType: "code",
|
||||
oidcDiscoveryUrl: oidcDiscoveryURL.value,
|
||||
authUrl: authURL.value,
|
||||
accessTokenUrl: accessTokenURL.value,
|
||||
clientId: clientID.value,
|
||||
scope: scope.value,
|
||||
}
|
||||
await tokenRequest(tokenReqParams)
|
||||
} catch (e) {
|
||||
$toast.error(e, {
|
||||
icon: "code",
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
return {
|
||||
oidcDiscoveryURL,
|
||||
authURL,
|
||||
accessTokenURL,
|
||||
clientID,
|
||||
scope,
|
||||
handleAccessTokenRequest,
|
||||
}
|
||||
},
|
||||
}
|
||||
</script>
|
||||
Reference in New Issue
Block a user