Can configure maximum inactivity of token
This commit is contained in:
		@@ -159,7 +159,7 @@ pub struct NewToken {
 | 
			
		||||
    pub description: String,
 | 
			
		||||
    pub rights: TokenRights,
 | 
			
		||||
    pub ip_restriction: Option<ipnetwork::IpNetwork>,
 | 
			
		||||
    pub delete_after_inactivity: Option<u64>,
 | 
			
		||||
    pub max_inactivity: Option<u64>,
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
impl NewToken {
 | 
			
		||||
@@ -185,7 +185,7 @@ impl NewToken {
 | 
			
		||||
            return Some(err);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        if let Some(t) = self.delete_after_inactivity {
 | 
			
		||||
        if let Some(t) = self.max_inactivity {
 | 
			
		||||
            if t < 3600 {
 | 
			
		||||
                return Some("API tokens shall be valid for at least 1 hour!");
 | 
			
		||||
            }
 | 
			
		||||
@@ -209,7 +209,7 @@ pub async fn create(t: &NewToken) -> anyhow::Result<(Token, TokenPrivKey)> {
 | 
			
		||||
        rights: t.rights.clone(),
 | 
			
		||||
        last_used: time(),
 | 
			
		||||
        ip_restriction: t.ip_restriction,
 | 
			
		||||
        max_inactivity: t.delete_after_inactivity,
 | 
			
		||||
        max_inactivity: t.max_inactivity,
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    token.save()?;
 | 
			
		||||
 
 | 
			
		||||
@@ -12,11 +12,11 @@ import { useSnackbar } from "../../hooks/providers/SnackbarProvider";
 | 
			
		||||
import { AsyncWidget } from "../AsyncWidget";
 | 
			
		||||
import { TabsWidget } from "../TabsWidget";
 | 
			
		||||
import { EditSection } from "../forms/EditSection";
 | 
			
		||||
import { IPInput, IPInputWithMask } from "../forms/IPInput";
 | 
			
		||||
import { ResAutostartInput } from "../forms/ResAutostartInput";
 | 
			
		||||
import { SelectInput } from "../forms/SelectInput";
 | 
			
		||||
import { TextInput } from "../forms/TextInput";
 | 
			
		||||
import { IPInputWithMask } from "../forms/IPInput";
 | 
			
		||||
import { RadioGroupInput } from "../forms/RadioGroupInput";
 | 
			
		||||
import { TextInput } from "../forms/TextInput";
 | 
			
		||||
 | 
			
		||||
const SECS_PER_DAY = 3600 * 24;
 | 
			
		||||
 | 
			
		||||
export enum TokenWidgetStatus {
 | 
			
		||||
  Create,
 | 
			
		||||
@@ -149,7 +149,7 @@ function NetworkDetailsTabGeneral(p: DetailsInnerProps): React.ReactElement {
 | 
			
		||||
      </EditSection>
 | 
			
		||||
 | 
			
		||||
      <EditSection title="General settings">
 | 
			
		||||
        {(p.status === TokenWidgetStatus.Create || p.token.ip_restriction) && (
 | 
			
		||||
        {p.status === TokenWidgetStatus.Create && (
 | 
			
		||||
          <RadioGroupInput
 | 
			
		||||
            {...p}
 | 
			
		||||
            editable={p.status === TokenWidgetStatus.Create}
 | 
			
		||||
@@ -161,6 +161,7 @@ function NetworkDetailsTabGeneral(p: DetailsInnerProps): React.ReactElement {
 | 
			
		||||
            onValueChange={(v) => {
 | 
			
		||||
              setIpVersion(Number(v) as any);
 | 
			
		||||
            }}
 | 
			
		||||
            label="Token IP restriction version"
 | 
			
		||||
          />
 | 
			
		||||
        )}
 | 
			
		||||
        <IPInputWithMask
 | 
			
		||||
@@ -175,7 +176,21 @@ function NetworkDetailsTabGeneral(p: DetailsInnerProps): React.ReactElement {
 | 
			
		||||
          }}
 | 
			
		||||
        />
 | 
			
		||||
 | 
			
		||||
        {/* TODO : remaining */}
 | 
			
		||||
        <TextInput
 | 
			
		||||
          editable={p.status === TokenWidgetStatus.Create}
 | 
			
		||||
          label="Max inactivity of tokens (days)"
 | 
			
		||||
          type="number"
 | 
			
		||||
          value={
 | 
			
		||||
            p.token.max_inactivity
 | 
			
		||||
              ? Math.floor(p.token.max_inactivity / SECS_PER_DAY).toString()
 | 
			
		||||
              : ""
 | 
			
		||||
          }
 | 
			
		||||
          onValueChange={(v) => {
 | 
			
		||||
            const secs = Number(v ?? "0") * SECS_PER_DAY;
 | 
			
		||||
            p.token.max_inactivity = secs === 0 ? undefined : secs;
 | 
			
		||||
            p.onChange?.();
 | 
			
		||||
          }}
 | 
			
		||||
        />
 | 
			
		||||
      </EditSection>
 | 
			
		||||
    </Grid>
 | 
			
		||||
  );
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user