elide secrets; tidy messes (#107)

This commit is contained in:
Michael Quigley 2023-01-05 13:40:34 -05:00
parent d0cdcd3956
commit e9c888f41d
No known key found for this signature in database
GPG Key ID: 9B60314A9DD20A62
5 changed files with 50 additions and 5 deletions

View File

@ -47,7 +47,6 @@ func (h *shareDetailHandler) Handle(params metadata.GetShareDetailParams, princi
sparkData, err = sparkDataForShares([]*store.Share{shr})
if err != nil {
logrus.Errorf("error querying spark data for share: %v", err)
return metadata.NewGetEnvironmentDetailInternalServerError()
}
}
feEndpoint := ""

View File

@ -1,15 +1,29 @@
import {mdiCardAccountDetails} from "@mdi/js";
import {mdiCardAccountDetails, mdiEyeOutline, mdiEyeOffOutline} from "@mdi/js";
import Icon from "@mdi/react";
import PropertyTable from "../PropertyTable";
import {Tab, Tabs} from "react-bootstrap";
import {useState} from "react";
import {secretString} from "./util";
const AccountDetail = (props) => {
const [showToken, setShowToken] = useState(false);
const customProperties = {
token: row => {
if(showToken) {
return <span>{row.value} <Icon path={mdiEyeOffOutline} size={0.7} onClick={() => setShowToken(false)} /></span>
} else {
return <span>{secretString(row.value)} <Icon path={mdiEyeOutline} size={0.7} onClick={() => setShowToken(true)} /></span>
}
}
}
return (
<div>
<h2><Icon path={mdiCardAccountDetails} size={2} />{" "}{props.user.email}</h2>
<Tabs defaultActiveKey={"detail"}>
<Tab eventKey={"detail"} title={"Detail"}>
<PropertyTable object={props.user} />
<PropertyTable object={props.user} custom={customProperties}/>
</Tab>
</Tabs>
</div>

View File

@ -1,13 +1,15 @@
import * as metadata from "../../api/metadata";
import {Sparklines, SparklinesLine, SparklinesSpots} from "react-sparklines";
import {useEffect, useState} from "react";
import {mdiShareVariant} from "@mdi/js";
import {mdiEyeOffOutline, mdiEyeOutline, mdiShareVariant} from "@mdi/js";
import Icon from "@mdi/react";
import PropertyTable from "../PropertyTable";
import {Tab, Tabs} from "react-bootstrap";
import {secretString} from "./util";
const ShareDetail = (props) => {
const [detail, setDetail] = useState({});
const [showZId, setShowZId] = useState(false);
useEffect(() => {
metadata.getShareDetail(props.selection.id)
@ -41,6 +43,13 @@ const ShareDetail = (props) => {
return <a href={row.value} target="_">{row.value}</a>;
}
return row.value;
},
zId: row => {
if(showZId) {
return <span>{row.value} <Icon path={mdiEyeOffOutline} size={0.7} onClick={() => setShowZId(false)} /></span>
} else {
return <span>{secretString(row.value)} <Icon path={mdiEyeOutline} size={0.7} onClick={() => setShowZId(true)} /></span>
}
}
}

View File

@ -1,8 +1,24 @@
import PropertyTable from "../../PropertyTable";
import Icon from "@mdi/react";
import {mdiEyeOffOutline, mdiEyeOutline} from "@mdi/js";
import {secretString} from "../util";
import {useState} from "react";
const Detail = (props) => {
const [showZId, setShowZId] = useState(false);
const customProperties = {
zId: row => {
if(showZId) {
return <span>{row.value} <Icon path={mdiEyeOffOutline} size={0.7} onClick={() => setShowZId(false)} /></span>
} else {
return <span>{secretString(row.value)} <Icon path={mdiEyeOutline} size={0.7} onClick={() => setShowZId(true)} /></span>
}
}
}
return (
<PropertyTable object={props.environment} />
<PropertyTable object={props.environment} custom={customProperties} />
);
};

View File

@ -0,0 +1,7 @@
export const secretString = (s) => {
let out = "";
for(let i = 0; i < s.length; i++) {
out += "*";
}
return out;
}