client/src/MobicoopBundle/Resources/assets/js/components/user/SsoLogins.vue
<template>
<div>
<SsoLogin
v-for="ssoConnection in ssoConnections"
:key="ssoConnection.service"
:url="ssoConnection.uri"
:button-icon="ssoConnection.buttonIcon"
:picto="ssoConnection.picto"
:use-button-icon="ssoConnection.useButtonIcon"
:service="ssoConnection.service"
:sso-provider="ssoConnection.ssoProvider"
:default-buttons-active="defaultButtonsActive"
/>
</div>
</template>
<script>
import maxios from "@utils/maxios";
import SsoLogin from '@components/user/SsoLogin';
import {messages_en, messages_fr, messages_eu, messages_nl} from "@translations/components/user/SsoLogins/";
export default {
i18n: {
messages: {
'en': messages_en,
'nl': messages_nl,
'fr': messages_fr,
'eu':messages_eu
}
},
components:{
SsoLogin
},
props:{
specificService:{
type: String,
default: ""
},
specificPath:{
type: String,
default: null
},
defaultButtonsActive: {
type: Boolean,
default: true
},
specificSsoServices: {
type: Array,
default: () => []
}
},
data() {
return {
ssoConnections:[]
};
},
watch:{
ssoConnections(){
this.ssoConnections.forEach(ssoConnections => {
this.$store.commit('sso/setSsoButtonsActiveStatus', {
ssoId: ssoConnections.ssoProvider,
status: this.defaultButtonsActive
});
});
}
},
mounted(){
this.getSso();
},
methods:{
getSso(){
if (this.specificSsoServices.length) {
this.specificSsoServices.forEach((service) => {
let data = {
"service": service.name,
"path": service.baseSiteUri ? service.baseSiteUri : null,
"redirectUri": service.redirectUri ? service.redirectUri : null
};
maxios.post(this.$t("urlGetSsoService"), data)
.then(response => {
response.data.forEach(service => {
this.ssoConnections.push(service);
});
});
})
} else {
let data = {
"service": this.specificService ? this.specificService : null,
"path": this.specificPath,
};
maxios.post(this.$t("urlGetSsoServices"), data)
.then(response => {
this.ssoConnections = response.data;
});
}
}
}
}
</script>