Skip to content

Commit

Permalink
Fix broken List input in middlewares
Browse files Browse the repository at this point in the history
  • Loading branch information
BitK committed Nov 2, 2021
1 parent b5a8144 commit 63ca8d6
Show file tree
Hide file tree
Showing 18 changed files with 184 additions and 101 deletions.
104 changes: 104 additions & 0 deletions dockers/manager/front/src/components/StringListInput.vue
Original file line number Diff line number Diff line change
@@ -0,0 +1,104 @@
<template>
<div class="">
<div class="row items-center">
<div class="col q-mr-md">
<q-input v-model="model" :label="label" @keydown.enter="addEntry" />
</div>
<div class="col col-auto">
<q-btn
dense
round
flat
size="md"
icon="eva-plus"
color="positive"
@click="addEntry"
/>
</div>
</div>
<div v-for="(entry, key) of form" :key="key">
<div v-if="key > 0" class="separator"></div>
<div class="row q-py-sm items-center">
<div class="col">
{{ entry }}
<q-popup-edit
v-model="entry[key]"
auto-save
@save="save(entry, key, arguments[1])"
>
<q-form :ref="key" greedy @submit.stop>
<q-input v-model="form[key]" />
</q-form>
</q-popup-edit>
</div>
<div class="col col-auto">
<q-btn
dense
round
flat
icon="eva-close"
color="negative"
@click="removeEntry(key)"
/>
</div>
</div>
</div>
</div>
</template>

<script>
import DeepForm from "src/mixins/DeepForm";
import BaseGridInput from "src/components/BaseGridInput.vue";
export default {
components: {},
mixins: [DeepForm],
formDefinition: [],
props: {
readonly: { type: Boolean, default: false },
default: { type: String, default: "" },
label: {type: String, default: ""}
},
data() {
return { model: this.default };
},
computed: {
cols() {
return Object.keys(this.$scopedSlots)
.filter(slot => !slot.startsWith("display-"))
.map(slot => {
const [key, ...mods] = slot.split(".");
return { slot, key: "v", mods };
});
},
emptyModel() {
return Object.fromEntries(this.cols.map(({ key }) => [key, null]));
}
},
methods: {
isEmpty(slot, model) {
return this.$scopedSlots[slot]({ model }) === undefined;
},
removeEntry(idx) {
this.form.splice(idx, 1);
},
addEntry() {
this.form.unshift(this.model);
this.model = this.default;
},
async save(entry, key, oldValue) {
const valid = await this.$refs[key][0].validate();
if (!valid) entry[key] = oldValue;
},
}
};
</script>

<style scoped>
.separator {
background: rgba(255, 255, 255, 0.28);
height: 1px;
width: 100%;
justify-self: center;
}
</style>
Original file line number Diff line number Diff line change
Expand Up @@ -5,16 +5,15 @@
<q-input v-model="form.headerField" label="Header field" />
<q-input v-model="form.realm" label="Realm" />
<q-toggle v-model="form.removeHeader" label="Remove header" />
<list-input v-model="form.users" label="Users" />
<component :is="formChildren.users" v-model="form.users" label="Users" />
<q-input v-model="form.usersFile" label="Users file" />
</div>
</template>
<script>
import DeepForm from "src/mixins/DeepForm";
import ListInput from 'src/components/ListInput.vue';
import StringListInput from 'src/components/StringListInput.vue';
export default {
components: { ListInput },
components: { },
mixins: [DeepForm],
props: {
hideTitle: {type: Boolean, default: false}
Expand All @@ -23,7 +22,7 @@ export default {
headerField: null,
realm: null,
removeHeader: null,
users: [],
users: StringListInput,
usersFile: null,
},
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,21 +2,20 @@
<template>
<div class="column q-gutter-md">
<div v-if="!hideTitle" class="text-h6">Chain</div>
<list-input v-model="form.middlewares" label="Middlewares" />
<component :is="formChildren.middlewares" v-model="form.middlewares" label="Middlewares" />
</div>
</template>
<script>
import DeepForm from "src/mixins/DeepForm";
import ListInput from 'src/components/ListInput.vue';
import StringListInput from 'src/components/StringListInput.vue';
export default {
components: { ListInput },
components: { },
mixins: [DeepForm],
props: {
hideTitle: {type: Boolean, default: false}
},
formDefinition: {
middlewares: [],
middlewares: StringListInput,
},
}
</script>
Original file line number Diff line number Diff line change
Expand Up @@ -2,21 +2,20 @@
<template>
<div class="column q-gutter-md">
<div v-if="!hideTitle" class="text-h6">Compress</div>
<list-input v-model="form.excludedContentTypes" label="Excluded content types" />
<component :is="formChildren.excludedContentTypes" v-model="form.excludedContentTypes" label="Excluded content types" />
</div>
</template>
<script>
import DeepForm from "src/mixins/DeepForm";
import ListInput from 'src/components/ListInput.vue';
import StringListInput from 'src/components/StringListInput.vue';
export default {
components: { ListInput },
components: { },
mixins: [DeepForm],
props: {
hideTitle: {type: Boolean, default: false}
},
formDefinition: {
excludedContentTypes: [],
excludedContentTypes: StringListInput,
},
}
</script>
Original file line number Diff line number Diff line change
Expand Up @@ -5,16 +5,15 @@
<q-input v-model="form.headerField" label="Header field" />
<q-input v-model="form.realm" label="Realm" />
<q-toggle v-model="form.removeHeader" label="Remove header" />
<list-input v-model="form.users" label="Users" />
<component :is="formChildren.users" v-model="form.users" label="Users" />
<q-input v-model="form.usersFile" label="Users file" />
</div>
</template>
<script>
import DeepForm from "src/mixins/DeepForm";
import ListInput from 'src/components/ListInput.vue';
import StringListInput from 'src/components/StringListInput.vue';
export default {
components: { ListInput },
components: { },
mixins: [DeepForm],
props: {
hideTitle: {type: Boolean, default: false}
Expand All @@ -23,7 +22,7 @@ export default {
headerField: null,
realm: null,
removeHeader: null,
users: [],
users: StringListInput,
usersFile: null,
},
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,23 +4,22 @@
<div v-if="!hideTitle" class="text-h6">Errors</div>
<q-input v-model="form.query" label="Query" />
<q-input v-model="form.service" label="Service" />
<list-input v-model="form.status" label="Status" />
<component :is="formChildren.status" v-model="form.status" label="Status" />
</div>
</template>
<script>
import DeepForm from "src/mixins/DeepForm";
import ListInput from 'src/components/ListInput.vue';
import StringListInput from 'src/components/StringListInput.vue';
export default {
components: { ListInput },
components: { },
mixins: [DeepForm],
props: {
hideTitle: {type: Boolean, default: false}
},
formDefinition: {
query: null,
service: null,
status: [],
status: StringListInput,
},
}
</script>
Original file line number Diff line number Diff line change
Expand Up @@ -3,28 +3,27 @@
<div class="column q-gutter-md">
<div v-if="!hideTitle" class="text-h6">Forward auth</div>
<q-input v-model="form.address" label="Address" />
<list-input v-model="form.authRequestHeaders" label="Auth request headers" />
<list-input v-model="form.authResponseHeaders" label="Auth response headers" />
<component :is="formChildren.authRequestHeaders" v-model="form.authRequestHeaders" label="Auth request headers" />
<component :is="formChildren.authResponseHeaders" v-model="form.authResponseHeaders" label="Auth response headers" />
<q-input v-model="form.authResponseHeadersRegex" label="Auth response headers regex" />
<component :is="formChildren.tls" v-model="form.tls" label="Tls" />
<q-toggle v-model="form.trustForwardHeader" label="Trust forward header" />
</div>
</template>
<script>
import DeepForm from "src/mixins/DeepForm";
import tls from './tls.vue';
import ListInput from 'src/components/ListInput.vue';
import tls from './tls.vue';
import StringListInput from 'src/components/StringListInput.vue';
export default {
components: { ListInput, tls },
components: { tls },
mixins: [DeepForm],
props: {
hideTitle: {type: Boolean, default: false}
},
formDefinition: {
address: null,
authRequestHeaders: [],
authResponseHeaders: [],
authRequestHeaders: StringListInput,
authResponseHeaders: StringListInput,
authResponseHeadersRegex: null,
tls: tls,
trustForwardHeader: null,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,15 +3,15 @@
<div class="column q-gutter-md">
<div v-if="!hideTitle" class="text-h6">Headers</div>
<q-toggle v-model="form.accessControlAllowCredentials" label="Access control allow credentials" />
<list-input v-model="form.accessControlAllowHeaders" label="Access control allow headers" />
<list-input v-model="form.accessControlAllowMethods" label="Access control allow methods" />
<component :is="formChildren.accessControlAllowHeaders" v-model="form.accessControlAllowHeaders" label="Access control allow headers" />
<component :is="formChildren.accessControlAllowMethods" v-model="form.accessControlAllowMethods" label="Access control allow methods" />
<q-input v-model="form.accessControlAllowOrigin" label="Access control allow origin" />
<list-input v-model="form.accessControlAllowOriginList" label="Access control allow origin list" />
<list-input v-model="form.accessControlAllowOriginListRegex" label="Access control allow origin list regex" />
<list-input v-model="form.accessControlExposeHeaders" label="Access control expose headers" />
<component :is="formChildren.accessControlAllowOriginList" v-model="form.accessControlAllowOriginList" label="Access control allow origin list" />
<component :is="formChildren.accessControlAllowOriginListRegex" v-model="form.accessControlAllowOriginListRegex" label="Access control allow origin list regex" />
<component :is="formChildren.accessControlExposeHeaders" v-model="form.accessControlExposeHeaders" label="Access control expose headers" />
<q-input v-model.number="form.accessControlMaxAge" type="number" label="Access control max age" />
<q-toggle v-model="form.addVaryHeader" label="Add vary header" />
<list-input v-model="form.allowedHosts" label="Allowed hosts" />
<component :is="formChildren.allowedHosts" v-model="form.allowedHosts" label="Allowed hosts" />
<q-toggle v-model="form.browserXssFilter" label="Browser xss filter" />
<q-input v-model="form.contentSecurityPolicy" label="Content security policy" />
<q-toggle v-model="form.contentTypeNosniff" label="Content type nosniff" />
Expand All @@ -22,7 +22,7 @@
<q-input v-model="form.featurePolicy" label="Feature policy" />
<q-toggle v-model="form.forceSTSHeader" label="Forcests header" />
<q-toggle v-model="form.frameDeny" label="Frame deny" />
<list-input v-model="form.hostsProxyHeaders" label="Hosts proxy headers" />
<component :is="formChildren.hostsProxyHeaders" v-model="form.hostsProxyHeaders" label="Hosts proxy headers" />
<q-toggle v-model="form.isDevelopment" label="Is development" />
<q-input v-model="form.publicKey" label="Public key" />
<q-input v-model="form.referrerPolicy" label="Referrer policy" />
Expand All @@ -38,26 +38,25 @@
</template>
<script>
import DeepForm from "src/mixins/DeepForm";
import ListInput from 'src/components/ListInput.vue';
import HeadersInput from 'src/components/Traefik/HeadersInput.vue';
import HeadersInput from 'src/components/Traefik/HeadersInput.vue';
import StringListInput from 'src/components/StringListInput.vue';
export default {
components: { ListInput, HeadersInput },
components: { HeadersInput },
mixins: [DeepForm],
props: {
hideTitle: {type: Boolean, default: false}
},
formDefinition: {
accessControlAllowCredentials: null,
accessControlAllowHeaders: [],
accessControlAllowMethods: [],
accessControlAllowHeaders: StringListInput,
accessControlAllowMethods: StringListInput,
accessControlAllowOrigin: null,
accessControlAllowOriginList: [],
accessControlAllowOriginListRegex: [],
accessControlExposeHeaders: [],
accessControlAllowOriginList: StringListInput,
accessControlAllowOriginListRegex: StringListInput,
accessControlExposeHeaders: StringListInput,
accessControlMaxAge: null,
addVaryHeader: null,
allowedHosts: [],
allowedHosts: StringListInput,
browserXssFilter: null,
contentSecurityPolicy: null,
contentTypeNosniff: null,
Expand All @@ -68,7 +67,7 @@ export default {
featurePolicy: null,
forceSTSHeader: null,
frameDeny: null,
hostsProxyHeaders: [],
hostsProxyHeaders: StringListInput,
isDevelopment: null,
publicKey: null,
referrerPolicy: null,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,7 @@
</template>
<script>
import DeepForm from "src/mixins/DeepForm";
import sourceCriterion from './sourceCriterion.vue';
import sourceCriterion from './sourceCriterion.vue';
export default {
components: { sourceCriterion },
mixins: [DeepForm],
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,11 +20,10 @@
</template>
<script>
import DeepForm from "src/mixins/DeepForm";
import subject from './subject.vue';
import issuer from './issuer.vue';
import issuer from './issuer.vue';
import subject from './subject.vue';
export default {
components: { subject, issuer },
components: { issuer, subject },
mixins: [DeepForm],
formDefinition: {
issuer: issuer,
Expand Down
Loading

0 comments on commit 63ca8d6

Please sign in to comment.