Fix settings menu allowing showing everything for everyone

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
This commit is contained in:
Thomas Citharel 2020-06-23 10:10:19 +02:00
parent 34ec5117bb
commit f666e4c6d0

View File

@ -28,6 +28,8 @@ import RouteName from "../router/name";
import { ISettingMenuSection } from "../types/setting-menu.model"; import { ISettingMenuSection } from "../types/setting-menu.model";
import { IPerson, Person } from "../types/actor"; import { IPerson, Person } from "../types/actor";
import { IDENTITIES } from "../graphql/actor"; import { IDENTITIES } from "../graphql/actor";
import { CURRENT_USER_CLIENT } from "../graphql/user";
import { ICurrentUser, ICurrentUserRole } from "../types/current-user.model";
@Component({ @Component({
components: { SettingsMenu }, components: { SettingsMenu },
@ -36,6 +38,7 @@ import { IDENTITIES } from "../graphql/actor";
query: IDENTITIES, query: IDENTITIES,
update: (data) => data.identities.map((identity: IPerson) => new Person(identity)), update: (data) => data.identities.map((identity: IPerson) => new Person(identity)),
}, },
currentUser: CURRENT_USER_CLIENT,
}, },
}) })
export default class Settings extends Vue { export default class Settings extends Vue {
@ -47,6 +50,8 @@ export default class Settings extends Vue {
newIdentity!: ISettingMenuSection; newIdentity!: ISettingMenuSection;
currentUser!: ICurrentUser;
mounted() { mounted() {
this.newIdentity = { this.newIdentity = {
title: this.$t("New profile") as string, title: this.$t("New profile") as string,
@ -76,7 +81,11 @@ export default class Settings extends Vue {
to: { name: RouteName.IDENTITIES } as Route, to: { name: RouteName.IDENTITIES } as Route,
items: [this.newIdentity], items: [this.newIdentity],
}, },
{ ];
if (
[ICurrentUserRole.MODERATOR, ICurrentUserRole.ADMINISTRATOR].includes(this.currentUser.role)
) {
this.menu.push({
title: this.$t("Moderation") as string, title: this.$t("Moderation") as string,
to: { name: RouteName.MODERATION } as Route, to: { name: RouteName.MODERATION } as Route,
items: [ items: [
@ -94,9 +103,19 @@ export default class Settings extends Vue {
title: this.$t("Moderation log") as string, title: this.$t("Moderation log") as string,
to: { name: RouteName.REPORT_LOGS } as Route, to: { name: RouteName.REPORT_LOGS } as Route,
}, },
{
title: this.$t("Users") as string,
to: { name: RouteName.USERS } as Route,
},
{
title: this.$t("Profiles") as string,
to: { name: RouteName.PROFILES } as Route,
},
], ],
}, });
{ }
if (this.currentUser.role === ICurrentUserRole.ADMINISTRATOR) {
this.menu.push({
title: this.$t("Admin") as string, title: this.$t("Admin") as string,
to: { name: RouteName.ADMIN } as Route, to: { name: RouteName.ADMIN } as Route,
items: [ items: [
@ -122,17 +141,9 @@ export default class Settings extends Vue {
}, },
], ],
}, },
{
title: this.$t("Users") as string,
to: { name: RouteName.USERS } as Route,
},
{
title: this.$t("Profiles") as string,
to: { name: RouteName.PROFILES } as Route,
},
], ],
}, });
]; }
} }
@Watch("identities") @Watch("identities")