Added privilege editing

Resolved #7
This commit is contained in:
2021-03-12 15:06:48 +11:00
parent e930fd2173
commit 11d49f981d
2 changed files with 72 additions and 0 deletions
+2
View File
@@ -5,6 +5,7 @@ import { TokenContext } from '../utilities/token-provider';
import NewsPublisher from '../panels/news-publisher'; import NewsPublisher from '../panels/news-publisher';
import NewsEditor from '../panels/news-editor'; import NewsEditor from '../panels/news-editor';
import PrivilegeEditor from '../panels/privilege-editor';
const Admin = props => { const Admin = props => {
//context //context
@@ -20,6 +21,7 @@ const Admin = props => {
<h1 className='centered'>Administration</h1> <h1 className='centered'>Administration</h1>
<NewsPublisher /> <NewsPublisher />
<NewsEditor /> <NewsEditor />
<PrivilegeEditor />
</div> </div>
); );
}; };
@@ -0,0 +1,70 @@
import React, { useState, useRef, useContext } from 'react';
import Select from 'react-dropdown-select';
import { TokenContext } from '../utilities/token-provider';
const PrivilegeEditor = props => {
//context
const authTokens = useContext(TokenContext);
//state
const [privilege, setPrivilege] = useState('normal');
//ref
const usernameRef = useRef();
return (
<div>
<h2 className='centered'>Privilege Editor</h2>
<form onSubmit={async evt => {
evt.preventDefault();
const [err, result] = await handleSubmit(usernameRef.current.value, privilege, authTokens.tokenFetch);
if (err) {
alert(err);
}
if (result) {
alert('Privilege set');
usernameRef.current.value = '';
}
}}>
<div>
<label htmlFor='username'>Username:</label>
<input type='text' name='username' ref={usernameRef} />
</div>
<Select
options={[{ label: 'administrator', value: 1 }, { label: 'moderator', value: 2 }, { label: 'alpha', value: 3 }, { label: 'beta', value: 4 }, { label: 'gamma', value: 5 }, { label: 'normal', value: 6 }]}
onChange={values => setPrivilege(values[0].label)}
/>
<button type='submit'>Change</button>
</form>
</div>
);
};
const handleSubmit = async (username, privilege, tokenFetch) => {
const result = await tokenFetch(`${process.env.AUTH_URI}/account/privilege`, {
method: 'PATCH',
headers: {
'Content-Type': 'application/json',
'Access-Control-Allow-Origin': '*'
},
body: JSON.stringify({
username,
privilege
})
});
if (!result.ok) {
const err = `${result.status}: ${await result.text()}`;
console.log(err);
return [err, false];
}
return [null, true];
};
export default PrivilegeEditor;