Handle token renewal and expiration
This commit is contained in:
parent
c6f7830d9d
commit
133d0de084
@ -160,7 +160,20 @@ impl FromRequest for AuthExtractor {
|
||||
));
|
||||
};
|
||||
|
||||
// TODO : update token last activity & expiration
|
||||
// Update last use (if needed)
|
||||
if token.shall_update_time_used() {
|
||||
if let Err(e) = tokens_service::update_time_used(&token).await {
|
||||
log::error!("Failed to refresh last usage of token! {}", e);
|
||||
}
|
||||
}
|
||||
|
||||
// Handle tokens expiration
|
||||
if token.is_expired() {
|
||||
log::error!("Attempted to use expired token! {:?}", token);
|
||||
return Err(actix_web::error::ErrorBadRequest(
|
||||
"Token has expired!",
|
||||
));
|
||||
}
|
||||
|
||||
return Ok(Self {
|
||||
method: AuthenticatedMethod::Token(token),
|
||||
|
@ -82,7 +82,7 @@ export function CreateTokenDialog(p: {
|
||||
|
||||
return (
|
||||
<Dialog open={p.open} onClose={cancel}>
|
||||
<DialogTitle>Nouveau jeton</DialogTitle>
|
||||
<DialogTitle>New token</DialogTitle>
|
||||
<DialogContent>
|
||||
<TextInput
|
||||
editable
|
||||
|
@ -1,5 +1,5 @@
|
||||
import DeleteIcon from "@mui/icons-material/DeleteOutlined";
|
||||
import { Alert, AlertTitle, Button } from "@mui/material";
|
||||
import { Alert, AlertTitle, Button, IconButton, Tooltip } from "@mui/material";
|
||||
import {
|
||||
DataGrid,
|
||||
GridActionsCellItem,
|
||||
@ -18,6 +18,8 @@ import { MoneyMgrWebRouteContainer } from "../widgets/MoneyMgrWebRouteContainer"
|
||||
import { TimeWidget } from "../widgets/TimeWidget";
|
||||
import { QRCodeCanvas } from "qrcode.react";
|
||||
import { APIClient } from "../api/ApiClient";
|
||||
import AddIcon from "@mui/icons-material/Add";
|
||||
import RefreshIcon from "@mui/icons-material/Refresh";
|
||||
|
||||
export function TokensRoute(): React.ReactElement {
|
||||
const count = React.useRef(0);
|
||||
@ -138,11 +140,11 @@ function TokensRouteInner(p: {
|
||||
},
|
||||
},
|
||||
{
|
||||
field: "last_used",
|
||||
field: "time_used",
|
||||
headerName: "Last usage",
|
||||
flex: 3,
|
||||
renderCell(params) {
|
||||
return <TimeWidget time={params.row.last_used} />;
|
||||
return <TimeWidget time={params.row.time_used} />;
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -211,7 +213,20 @@ function TokensRouteInner(p: {
|
||||
return (
|
||||
<MoneyMgrWebRouteContainer
|
||||
label="API Tokens"
|
||||
actions={<Button onClick={p.onRequestCreateToken}>New</Button>}
|
||||
actions={
|
||||
<span>
|
||||
<Tooltip title="Create new token">
|
||||
<IconButton onClick={p.onRequestCreateToken}>
|
||||
<AddIcon />
|
||||
</IconButton>
|
||||
</Tooltip>
|
||||
<Tooltip title="Refresh table">
|
||||
<IconButton onClick={p.onReload}>
|
||||
<RefreshIcon />
|
||||
</IconButton>
|
||||
</Tooltip>
|
||||
</span>
|
||||
}
|
||||
>
|
||||
{p.createdToken && <CreatedToken token={p.createdToken} />}
|
||||
<DataGrid
|
||||
|
Loading…
x
Reference in New Issue
Block a user