agola-web/src/views/AddLinkedAccount.vue
Simone Gotti 3f2c57394a *: Format with prettier
Use latest prettier as devDependency so tools will use (or can be
configured to use) the npm provided version.
The unique config change is to use single quotes instead of double
quotes.
2022-02-24 09:02:02 +01:00

100 lines
2.4 KiB
Vue

<template>
<div>
<div
v-if="addLinkedAccountError"
class="mb-10 bg-red-100 border border-red-400 text-red-700 px-4 py-3 rounded relative"
role="alert"
>
<span class="block sm:inline">{{ addLinkedAccountError }}</span>
</div>
<div class="my-6 flex justify-center items-center">
<div v-if="remotesource">
<LoginForm
v-if="remotesource.auth_type == 'password'"
action="Add Linked Account"
:name="remotesource.name"
v-on:login="
doAddLinkedAccount(
remotesource.name,
$event.username,
$event.password
)
"
/>
<button
v-else
class="bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded"
@click="doAddLinkedAccount(remotesource.name)"
>
Add Linked Account with {{ remotesource.name }}
</button>
</div>
</div>
</div>
</template>
<script>
import LoginForm from '@/components/loginform';
import { fetchRemoteSources, createUserLinkedAccount } from '@/util/data';
export default {
name: 'AddLinkedAccount',
props: {
username: String,
remoteSourceName: String,
},
components: {
LoginForm,
},
data: function () {
return {
addLinkedAccountError: null,
remotesource: null,
};
},
methods: {
resetErrors() {
this.addLinkedAccountError = null;
},
async fetchRemoteSources() {
let { data, error } = await fetchRemoteSources();
if (error) {
this.$store.dispatch('setError', error);
return;
}
for (var i = 0; i < data.length; i++) {
let remotesource = data[i];
if (remotesource.name == this.remoteSourceName) {
this.remotesource = remotesource;
break;
}
}
},
async doAddLinkedAccount(rsName, loginname, password) {
let { data, error } = await createUserLinkedAccount(
this.username,
rsName,
loginname,
password
);
if (error) {
this.addLinkedAccountError = error;
return;
}
if (data.oauth2_redirect) {
window.location = data.oauth2_redirect;
return;
}
this.$router.push({
name: 'user settings',
params: { username: this.username },
});
},
},
created: function () {
this.fetchRemoteSources();
},
};
</script>