Skip to content
Snippets Groups Projects
Commit 45f65de7 authored by Timothee P's avatar Timothee P :sunflower:
Browse files

update project members authorization & refresh user level

parent 5e03c577
No related branches found
No related tags found
No related merge requests found
...@@ -68,7 +68,6 @@ ...@@ -68,7 +68,6 @@
<div class="right menu"> <div class="right menu">
<router-link v-if="user" to="/my_account/" class="item"> <router-link v-if="user" to="/my_account/" class="item">
{{ userFullname || user.username || "Utilisateur inconnu" }} {{ userFullname || user.username || "Utilisateur inconnu" }}
<!-- // ? full_name n'existe pas côté django... -->
</router-link> </router-link>
<div <div
v-if="user && user.is_administrator" v-if="user && user.is_administrator"
...@@ -81,8 +80,6 @@ ...@@ -81,8 +80,6 @@
<span v-if="user.is_administrator"> Gestionnaire métier </span> <span v-if="user.is_administrator"> Gestionnaire métier </span>
</div> </div>
<!-- // todo : find out SSO_SETTED in django --> <!-- // todo : find out SSO_SETTED in django -->
<!-- // ? condition bizarre (if !sso_setted pui elif !sso_setted) ? -->
<!-- <a class="item" href="{% url 'geocontrib:logout' %}"><i class="ui logout icon"></i></a> -->
<a v-if="user && !SSO_SETTED" @click="logout" class="item" <a v-if="user && !SSO_SETTED" @click="logout" class="item"
><i class="ui logout icon"></i> ><i class="ui logout icon"></i>
</a> </a>
...@@ -95,8 +92,6 @@ ...@@ -95,8 +92,6 @@
</header> </header>
<main> <main>
<div class="ui stackable grid centered container"> <div class="ui stackable grid centered container">
<!-- // todo : add messages -->
<!-- {% if messages %} -->
<div v-if="messages" class="row"> <div v-if="messages" class="row">
<div class="fourteen wide column"> <div class="fourteen wide column">
<div <div
...@@ -117,7 +112,6 @@ ...@@ -117,7 +112,6 @@
</div> </div>
</div> </div>
</div> </div>
<!-- {% endif %} -->
<router-view /> <router-view />
<!-- //* Les views sont injectées ici --> <!-- //* Les views sont injectées ici -->
</div> </div>
......
...@@ -9,7 +9,6 @@ ...@@ -9,7 +9,6 @@
enctype="multipart/form-data" enctype="multipart/form-data"
class="ui form" class="ui form"
> >
<!-- {{ formset.non_form_errors }} -->
<table class="ui red table"> <table class="ui red table">
<thead> <thead>
<tr> <tr>
...@@ -18,25 +17,23 @@ ...@@ -18,25 +17,23 @@
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
<div v-frag v-for="member in projectMembers" :key="member.username"> <tr v-for="member in projectMembers" :key="member.username">
<tr> <td>
<td> {{ member.user.last_name }} {{ member.user.first_name }}<br /><i
{{ member.last_name }} {{ member.first_name }}<br /><i>{{ >{{ member.user.username }}</i
member.username >
}}</i> </td>
</td> <td>
<td> <div class="required field">
<div class="required field"> <Dropdown
<Dropdown :options="levelOptions"
:options="levelOptions" :selected="member.userLevel.name"
:selected="member.userLevel" :selection.sync="member.userLevel"
:selection.sync="member.userLevel" :search="true"
:search="true" />
/> </div>
</div> </td>
</td> </tr>
</tr>
</div>
</tbody> </tbody>
</table> </table>
...@@ -59,7 +56,6 @@ import frag from "vue-frag"; ...@@ -59,7 +56,6 @@ import frag from "vue-frag";
import { mapGetters } from "vuex"; import { mapGetters } from "vuex";
import Dropdown from "@/components/Dropdown.vue"; import Dropdown from "@/components/Dropdown.vue";
export default { export default {
name: "Project_members", name: "Project_members",
...@@ -70,52 +66,65 @@ export default { ...@@ -70,52 +66,65 @@ export default {
Dropdown, Dropdown,
}, },
computed: {
...mapGetters(["project"]),
},
data() { data() {
return { return {
projectMembers: [], projectMembers: [],
levelOptions: [ levelOptions: [
"Utilisateur connecté", { name: "Utilisateur connecté", value: "logged_user" },
"Contributeur", { name: "Contributeur", value: "contributor" },
"Modérateur", { name: "Modérateur", value: "moderator" },
"Administrateur projet", { name: "Administrateur projet", value: "admin" },
], ],
}; };
}, },
computed: {
...mapGetters(["project"]),
},
methods: { methods: {
validateMembers() { validateMembers() {
// const data = { const data = this.projectMembers.map((member) => {
// slug: this.project.slug, return {
// data: this.projectMembers, user: member.user,
// }; level: {
// console.log("validateMembers", data); display: member.userLevel.name,
/* axios codename: member.userLevel.value,
.post(`${DJANGO_API_BASE}projet/${payload.slug}/utilisateurs/`, payload.data) },
};
});
console.log("validateMembers", data);
axios
.put(
`${this.$store.state.configuration.VUE_APP_DJANGO_API_BASE}projects/${this.project.slug}/utilisateurs/`,
data
)
.then((response) => { .then((response) => {
const user = response.data.user; if (response.status === 200) {
this.$store.dispatch("GET_USER_LEVEL_PROJECTS"); //* update user status in top right menu
}
}) })
.catch(() => { .catch((error) => {
router.push({ name: "login" }); throw error;
}); */ });
}, },
async fetchMembers() { async fetchMembers() {
return axios return axios
.get( .get(
`${this.$store.state.configuration.VUE_APP_DJANGO_API_BASE}projects/${this.$route.params.slug}/utilisateurs` `${this.$store.state.configuration.VUE_APP_DJANGO_API_BASE}projects/${this.$route.params.slug}/utilisateurs`
) )
.then((response) => response.data.members) .then((response) => response.data)
.catch((error) => { .catch((error) => {
throw error; throw error;
}); });
}, },
async populateMembers() { async populateMembers() {
await this.fetchMembers().then((members) => { await this.fetchMembers().then((members) => {
this.projectMembers = members.map((el) => { this.projectMembers = members.map((el) => {
return { return {
userLevel: el.userLevel ? el.userLevel : this.levelOptions[0], userLevel: { name: el.level.display, value: el.level.codename },
...el, ...el,
}; };
}); });
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment