From 356f69cef2ff21cf232df1fd1221b9d625bf3f57 Mon Sep 17 00:00:00 2001 From: Thomas Citharel Date: Wed, 31 Mar 2021 10:06:13 +0200 Subject: [PATCH] Fix accessing a discussion without being a member Signed-off-by: Thomas Citharel --- js/src/views/Discussions/Discussion.vue | 27 ++++++++++++++++++++----- lib/graphql/resolvers/discussion.ex | 1 + 2 files changed, 23 insertions(+), 5 deletions(-) diff --git a/js/src/views/Discussions/Discussion.vue b/js/src/views/Discussions/Discussion.vue index 56618e6c2..da3b1e9f3 100644 --- a/js/src/views/Discussions/Discussion.vue +++ b/js/src/views/Discussions/Discussion.vue @@ -18,7 +18,7 @@ }" >{{ discussion.actor.name }} - +
  • {{ $t("Discussions") }} - +
  • + + {{ error }} +

    @@ -60,8 +63,16 @@

    - -
    + +
    {{ $t("Fetch more") }} - + @@ -217,6 +228,7 @@ export default class discussion extends mixins(GroupMixin) { RouteName = RouteName; usernameWithDomain = usernameWithDomain; + error: string | null = null; async reply(): Promise { if (this.newComment === "") return; @@ -422,6 +434,11 @@ export default class discussion extends mixins(GroupMixin) { if (errors[0].message.includes("No such discussion")) { await this.$router.push({ name: RouteName.PAGE_NOT_FOUND }); } + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore + if (errors[0].code === "unauthorized") { + this.error = errors[0].message; + } } mounted(): void { diff --git a/lib/graphql/resolvers/discussion.ex b/lib/graphql/resolvers/discussion.ex index 328b0d718..fe7ba3c02 100644 --- a/lib/graphql/resolvers/discussion.ex +++ b/lib/graphql/resolvers/discussion.ex @@ -60,6 +60,7 @@ defmodule Mobilizon.GraphQL.Resolvers.Discussion do {:ok, discussion} else nil -> {:error, dgettext("errors", "Discussion not found")} + {:member, false} -> {:error, :unauthorized} end end