agola-web/src/components/createsourceform.vue

179 lines
5.4 KiB
Vue
Raw Normal View History

2021-07-14 11:56:11 +00:00
<template>
<div class="w-6/12">
<h1>
If you need more advanced options or a little help,
<a
2021-07-14 11:56:11 +00:00
class="text-blue-600"
rel="noopener noreferrer nofollow"
href="https://agola.io/tryit/#test-using-a-local-gitea-instance"
>
take a look at the documentation
</a>
</h1>
<form
class="bg-white shadow-md rounded px-8 pt-6 pb-8 mb-4"
@submit.prevent="
$emit('createSource', {
token,
name,
type,
clientId,
clientSecret,
url,
skipVerify,
sshHostKey,
skipSshHostKeyCheck,
})
"
2021-07-14 11:56:11 +00:00
>
<div class="mb-4">
<label class="block text-sm font-bold mb-2" for="token"
>Agola Admin token</label
>
2021-07-14 11:56:11 +00:00
<input
class="appearance-none border rounded w-full py-2 px-3 leading-tight focus:outline-none focus:shadow-outline"
id="token"
type="password"
placeholder="Agola Admin token"
v-model="token"
/>
2021-07-14 11:56:11 +00:00
</div>
<div class="mb-4">
<label class="block text-sm font-bold mb-2" for="type">Type</label>
<select
class="border bg-white rounded w-full py-2 px-3 leading-tight focus:outline-none focus:shadow-outline"
id="type"
v-model="type"
>
<option value="gitea">Gitea</option>
<option value="gitlab">GitLab</option>
<option value="github">GitHub</option>
</select>
</div>
<div class="mb-4">
<label class="block text-sm font-bold mb-2" for="name"
>Source name</label
>
2021-07-14 11:56:11 +00:00
<input
class="appearance-none border rounded w-full py-2 px-3 leading-tight focus:outline-none focus:shadow-outline"
id="name"
pattern="^[a-zA-Z][a-zA-Z0-9]*([-]?[a-zA-Z0-9]+)+$"
type="text"
placeholder="Source name (only numbers, letters and -)"
v-model="name"
/>
2021-07-14 11:56:11 +00:00
</div>
<div class="mb-4">
<label class="block text-sm font-bold mb-2" for="url"
>Source API URL</label
>
2021-07-14 11:56:11 +00:00
<input
class="appearance-none border rounded w-full py-2 px-3 leading-tight focus:outline-none focus:shadow-outline"
id="url"
type="text"
placeholder="API URL"
v-model="url"
/>
2021-07-14 11:56:11 +00:00
</div>
<div class="mb-4 flex flex-row">
<input
id="skip_verify"
type="checkbox"
class="h-6 w-6 border border-gray-300 rounded-md checked:bg-blue-600 checked:border-transparent focus:outline-none"
v-model="skipVerify"
/>
<label class="text-sm mt-auto font-bold mx-2" for="skip_verify"
>Skip TLS certificate validation</label
2021-07-14 11:56:11 +00:00
>
</div>
<div class="mb-4">
<label class="block text-sm font-bold mb-2" for="ssh_key"
>Source Public SSH Key</label
>
2021-07-14 11:56:11 +00:00
<input
class="appearance-none border rounded w-full py-2 px-3 leading-tight focus:outline-none focus:shadow-outline"
id="ssh_key"
type="text"
autocomplete="off"
placeholder="Public SSH key"
v-model="sshHostKey"
/>
2021-07-14 11:56:11 +00:00
</div>
<div class="mb-4 flex flex-row">
<input
id="skip_ssh_key_check"
type="checkbox"
class="h-6 w-6 border border-gray-300 rounded-md checked:bg-blue-600 checked:border-transparent focus:outline-none"
v-model="skipSshHostKeyCheck"
/>
<label class="text-sm mt-auto font-bold mx-2" for="skip_ssh_key_check"
>Skip SSH host key check</label
2021-07-14 11:56:11 +00:00
>
</div>
<div class="mb-4">
<label class="block text-sm font-bold mb-2" for="client_id"
>Source client ID</label
>
2021-07-14 11:56:11 +00:00
<input
class="appearance-none border rounded w-full py-2 px-3 leading-tight focus:outline-none focus:shadow-outline"
id="client_id"
type="text"
placeholder="Client ID"
v-model="clientId"
/>
2021-07-14 11:56:11 +00:00
</div>
<div class="mb-4">
<label class="block text-sm font-bold mb-2" for="client_secret"
>Source client secret</label
>
2021-07-14 11:56:11 +00:00
<input
class="appearance-none border rounded w-full py-2 px-3 leading-tight focus:outline-none focus:shadow-outline"
id="client_secret"
type="password"
placeholder="Client secret"
v-model="clientSecret"
/>
2021-07-14 11:56:11 +00:00
</div>
<div class="flex justify-center">
<button
class="bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded focus:outline-none focus:shadow-outline"
type="submit"
>
Create
</button>
2021-07-14 11:56:11 +00:00
</div>
</form>
</div>
</template>
<script>
import { GITHUB_SSH_KEY, GITHUB_API_URL } from '@/util/data';
2021-07-14 11:56:11 +00:00
export default {
name: 'CreateSourceForm',
data: function () {
2021-07-14 11:56:11 +00:00
return {
name: null,
token: null,
url: null,
sshHostKey: null,
skipVerify: false,
skipSshHostKeyCheck: false,
type: 'gitea', // default value for select
clientId: null,
clientSecret: null,
};
},
watch: {
type: function (value) {
if (value === 'github') {
2021-07-14 11:56:11 +00:00
this.url = GITHUB_API_URL;
this.sshHostKey = GITHUB_SSH_KEY;
this.skipVerify = false;
this.skipSshHostKeyCheck = false;
2021-07-14 11:56:11 +00:00
}
},
},
};
</script>