|
|
|
@ -7,52 +7,14 @@ import { apiUrl, statusColor, BasicTable, staticUrl, requester } from './utils.j |
|
|
|
|
import { NotFound } from './Misc.js'; |
|
|
|
|
|
|
|
|
|
export function Admin(props) { |
|
|
|
|
const { token, user } = props; |
|
|
|
|
const [backup, setBackup] = useState(false); |
|
|
|
|
const [reveal, setReveal] = useState(false); |
|
|
|
|
const [error, setError] = useState(false); |
|
|
|
|
|
|
|
|
|
useEffect(() => { |
|
|
|
|
requester('/backup/', 'GET', token) |
|
|
|
|
.then(res => { |
|
|
|
|
setBackup(res.url); |
|
|
|
|
}) |
|
|
|
|
.catch(err => { |
|
|
|
|
console.log(err); |
|
|
|
|
}); |
|
|
|
|
}, []); |
|
|
|
|
|
|
|
|
|
return ( |
|
|
|
|
<Container> |
|
|
|
|
<Header size='large'>Portal Admin</Header> |
|
|
|
|
|
|
|
|
|
<Header size='medium'>Backup</Header> |
|
|
|
|
<Header size='medium'>Member Data Backup</Header> |
|
|
|
|
<p>Spaceport backups are created daily. 14 days are kept on the server.</p> |
|
|
|
|
|
|
|
|
|
{backup ? |
|
|
|
|
<div> |
|
|
|
|
<p> |
|
|
|
|
Download link:<br /> |
|
|
|
|
<a href={backup} target='_blank' rel='noopener noreferrer' aria-label='link to a backup'> |
|
|
|
|
{backup} |
|
|
|
|
</a> |
|
|
|
|
</p> |
|
|
|
|
|
|
|
|
|
Automate with wget (keep secret, that's <b>your</b> login token): <br /> |
|
|
|
|
{reveal ? |
|
|
|
|
<pre> |
|
|
|
|
wget \ |
|
|
|
|
<br /> --content-disposition \ |
|
|
|
|
<br /> --header="Authorization: Token {token}" \ |
|
|
|
|
<br /> {apiUrl}/backup/ |
|
|
|
|
</pre> |
|
|
|
|
: |
|
|
|
|
<Button onClick={() => setReveal(true)}>Show Secret</Button> |
|
|
|
|
} |
|
|
|
|
</div> |
|
|
|
|
: |
|
|
|
|
<p>Loading...</p> |
|
|
|
|
} |
|
|
|
|
<p>Backups contain the complete member data and must be kept secure.</p> |
|
|
|
|
<p>Talk to Tanner to learn how to get backups.</p> |
|
|
|
|
|
|
|
|
|
</Container> |
|
|
|
|
); |
|
|
|
|