From 959a83afd87aa00ef6980c5bf7fdcd89e0897607 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Simon=20Pr=C3=A9vost?= Date: Fri, 22 Dec 2023 09:35:36 -0500 Subject: [PATCH] Fix api token flash and revoke mutation --- lib/graphql/mutations/api_token.ex | 2 +- lib/graphql/resolvers/api_token.ex | 9 +++++---- webapp/app/locales/en-us.json | 10 ++++++---- webapp/app/locales/fr-ca.json | 10 ++++++---- .../logged-in/project/edit/api-token/controller.ts | 2 +- webapp/app/queries/revoke-api-token.ts | 8 +++++++- 6 files changed, 26 insertions(+), 15 deletions(-) diff --git a/lib/graphql/mutations/api_token.ex b/lib/graphql/mutations/api_token.ex index ed1de5802..71e67da9b 100644 --- a/lib/graphql/mutations/api_token.ex +++ b/lib/graphql/mutations/api_token.ex @@ -16,7 +16,7 @@ defmodule Accent.GraphQL.Mutations.APIToken do resolve(project_authorize(:create_project_api_token, &APITokenResolver.create/3, :project_id)) end - field :revoke_api_token, :boolean do + field :revoke_api_token, :mutated_api_token do arg(:id, non_null(:id)) resolve(api_token_authorize(:revoke_project_api_token, &APITokenResolver.revoke/3)) diff --git a/lib/graphql/resolvers/api_token.ex b/lib/graphql/resolvers/api_token.ex index e97104eab..ed7c91bce 100644 --- a/lib/graphql/resolvers/api_token.ex +++ b/lib/graphql/resolvers/api_token.ex @@ -5,21 +5,22 @@ defmodule Accent.GraphQL.Resolvers.APIToken do alias Accent.Plugs.GraphQLContext alias Accent.Project - @spec create(Project.t(), any(), GraphQLContext.t()) :: {:ok, AccessToken.t() | nil} + @spec create(Project.t(), any(), GraphQLContext.t()) :: + {:ok, %{api_token: AccessToken.t() | nil, errors: list(String.t()) | nil}} def create(project, args, info) do case APITokenManager.create(project, info.context[:conn].assigns[:current_user], args) do {:ok, %{access_token: api_token}} -> {:ok, %{api_token: api_token, errors: nil}} {:error, _reason, _, _} -> - {:ok, %{access_token: nil, errors: ["unprocessable_entity"]}} + {:ok, %{api_token: nil, errors: ["unprocessable_entity"]}} end end - @spec revoke(Project.t(), any(), GraphQLContext.t()) :: {:ok, AccessToken.t() | nil} + @spec revoke(Project.t(), any(), GraphQLContext.t()) :: {:ok, AccessToken.t()} def revoke(access_token, _args, _) do APITokenManager.revoke(access_token) - {:ok, true} + {:ok, access_token} end @spec list_project(Project.t(), any(), GraphQLContext.t()) :: {:ok, AccessToken.t() | nil} diff --git a/webapp/app/locales/en-us.json b/webapp/app/locales/en-us.json index a30d19522..555f52793 100644 --- a/webapp/app/locales/en-us.json +++ b/webapp/app/locales/en-us.json @@ -1091,10 +1091,12 @@ }, "api_token": { "loading_content": "Fetching project’s API settings…", - "api_token_add_success": "API token has been created with success", - "api_token_add_error": "API token could not be created", - "api_token_revoke_success": "API token has been revoked with success", - "api_token_revoke_error": "API token could not be revoked" + "flash_messages": { + "api_token_add_success": "API token has been created with success", + "api_token_add_error": "API token could not be created", + "api_token_revoke_success": "API token has been revoked with success", + "api_token_revoke_error": "API token could not be revoked" + } }, "jipt": { "loading_content": "Fetching project’s Just In Place Translations settings…" diff --git a/webapp/app/locales/fr-ca.json b/webapp/app/locales/fr-ca.json index 5a0c66795..6de6ddc63 100644 --- a/webapp/app/locales/fr-ca.json +++ b/webapp/app/locales/fr-ca.json @@ -1094,10 +1094,12 @@ }, "api_token": { "loading_content": "Récupération des paramètres d’API du projet…", - "api_token_add_success": "Le jeton d’API a été créé avec succès", - "api_token_add_error": "Le jeton d’API n’a pas pu être créé", - "api_token_revoke_success": "Le jeton d’API a été révoqué avec succès", - "api_token_revoke_error": "Le jeton d’API n’a pas pu être révoqué" + "flash_messages": { + "api_token_add_success": "Le jeton d’API a été créé avec succès", + "api_token_add_error": "Le jeton d’API n’a pas pu être créé", + "api_token_revoke_success": "Le jeton d’API a été révoqué avec succès", + "api_token_revoke_error": "Le jeton d’API n’a pas pu être révoqué" + } }, "jipt": { "loading_content": "Récupération des paramètres de traduction JIPT du projet…" diff --git a/webapp/app/pods/logged-in/project/edit/api-token/controller.ts b/webapp/app/pods/logged-in/project/edit/api-token/controller.ts index 84567f738..4851d8f53 100644 --- a/webapp/app/pods/logged-in/project/edit/api-token/controller.ts +++ b/webapp/app/pods/logged-in/project/edit/api-token/controller.ts @@ -10,7 +10,7 @@ import ApolloMutate from 'accent-webapp/services/apollo-mutate'; import apiTokenCreateQuery from 'accent-webapp/queries/create-api-token'; import apiTokenRevokeQuery from 'accent-webapp/queries/revoke-api-token'; -const FLASH_MESSAGE_PREFIX = 'pods.project.edit.flash_messages.'; +const FLASH_MESSAGE_PREFIX = 'pods.project.edit.api_token.flash_messages.'; const FLASH_MESSAGE_API_TOKEN_ADD_SUCCESS = `${FLASH_MESSAGE_PREFIX}api_token_add_success`; const FLASH_MESSAGE_API_TOKEN_ADD_ERROR = `${FLASH_MESSAGE_PREFIX}api_token_add_error`; const FLASH_MESSAGE_API_TOKEN_REVOKE_SUCCESS = `${FLASH_MESSAGE_PREFIX}api_token_revoke_success`; diff --git a/webapp/app/queries/revoke-api-token.ts b/webapp/app/queries/revoke-api-token.ts index 111745789..078bb4a22 100644 --- a/webapp/app/queries/revoke-api-token.ts +++ b/webapp/app/queries/revoke-api-token.ts @@ -6,6 +6,12 @@ export interface RevokeApiTokenVariables { export default gql` mutation ApiTokenRevoke($id: ID!) { - revokeApiToken(id: $id) + revokeApiToken(id: $id) { + apiToken { + id + } + + errors + } } `;