import SettingsLayout from "@/layouts/SettingsLayout"; import React, { useEffect, useState } from "react"; import NewTokenModal from "@/components/ModalContent/NewTokenModal"; import RevokeTokenModal from "@/components/ModalContent/RevokeTokenModal"; import { AccessToken } from "@prisma/client"; import useTokenStore from "@/store/tokens"; export default function AccessTokens() { const [newTokenModal, setNewTokenModal] = useState(false); const [revokeTokenModal, setRevokeTokenModal] = useState(false); const [selectedToken, setSelectedToken] = useState(null); const openRevokeModal = (token: AccessToken) => { setSelectedToken(token); setRevokeTokenModal(true); }; const { setTokens, tokens } = useTokenStore(); useEffect(() => { fetch("/api/v1/tokens") .then((res) => res.json()) .then((data) => { if (data.response) setTokens(data.response as AccessToken[]); }); }, []); return (

Access Tokens

Access Tokens can be used to access Linkwarden from other apps and services without giving away your Username and Password.

{tokens.length > 0 ? ( <>
{/* head */} {tokens.map((token, i) => ( ))}
Name Created Expires
{i + 1} {token.name} {new Date(token.createdAt || "").toLocaleDateString()} {new Date(token.expires || "").toLocaleDateString()}
) : undefined}
{newTokenModal ? ( setNewTokenModal(false)} /> ) : undefined} {revokeTokenModal && selectedToken && ( { setRevokeTokenModal(false); setSelectedToken(null); }} activeToken={selectedToken} /> )}
); }