diff options
Diffstat (limited to 'packages/merchant-backoffice-ui/src/paths/instance/token/index.tsx')
-rw-r--r-- | packages/merchant-backoffice-ui/src/paths/instance/token/index.tsx | 32 |
1 files changed, 26 insertions, 6 deletions
diff --git a/packages/merchant-backoffice-ui/src/paths/instance/token/index.tsx b/packages/merchant-backoffice-ui/src/paths/instance/token/index.tsx index 50e7d500d..889ef6f5d 100644 --- a/packages/merchant-backoffice-ui/src/paths/instance/token/index.tsx +++ b/packages/merchant-backoffice-ui/src/paths/instance/token/index.tsx @@ -13,8 +13,8 @@ You should have received a copy of the GNU General Public License along with GNU Taler; see the file COPYING. If not, see <http://www.gnu.org/licenses/> */ -import { HttpStatusCode, TalerErrorDetail } from "@gnu-taler/taler-util"; -import { ErrorType, HttpError, useTranslationContext } from "@gnu-taler/web-util/browser"; +import { AccessToken, HttpStatusCode, TalerErrorDetail } from "@gnu-taler/taler-util"; +import { ErrorType, HttpError, useMerchantApiContext, useTranslationContext } from "@gnu-taler/web-util/browser"; import { Fragment, VNode, h } from "preact"; import { useState } from "preact/hooks"; import { Loading } from "../../../components/exception/loading.js"; @@ -22,6 +22,7 @@ import { NotificationCard } from "../../../components/menu/index.js"; import { useInstanceAPI, useInstanceDetails } from "../../../hooks/instance.js"; import { Notification } from "../../../utils/types.js"; import { DetailPage } from "./DetailPage.js"; +import { useSessionContext } from "../../../context/session.js"; interface Props { onUnauthorized: () => VNode; @@ -39,9 +40,10 @@ export default function Token({ onCancel, }: Props): VNode { const { i18n } = useTranslationContext(); - + const { lib } = useMerchantApiContext(); + const { logIn } = useSessionContext(); const [notif, setNotif] = useState<Notification | undefined>(undefined); - const { clearAccessToken, setNewAccessToken } = useInstanceAPI(); + const { clearAccessToken } = useInstanceAPI(); const result = useInstanceDetails() if (result.loading) return <Loading />; @@ -83,8 +85,26 @@ export default function Token({ }} onNewToken={async (currentToken, newToken): Promise<void> => { try { - await setNewAccessToken(currentToken, newToken); - onChange(); + await lib.management.updateInstanceAuthentication(currentToken, { + token: newToken, + method: "token" + }) + const resp = await lib.authenticate.createAccessTokenMerchant(newToken, { + scope: "write", + duration: { + d_us: "forever" + }, + refreshable: true, + }) + if (resp.type === "ok") { + logIn({ token: resp.body.token }) + onChange(); + } else { + setNotif({ + message: i18n.str`Failed to set new token`, + type: "ERROR", + }); + } } catch (error) { if (error instanceof Error) { setNotif({ |