Skip to content

Commit

Permalink
admin permissions
Browse files Browse the repository at this point in the history
  • Loading branch information
aaravbajaj012 committed Jan 27, 2024
1 parent f1973d9 commit 7f394ac
Showing 2 changed files with 109 additions and 25 deletions.
38 changes: 13 additions & 25 deletions src/pages/admin/index.tsx
Original file line number Diff line number Diff line change
@@ -9,13 +9,6 @@ import { toast } from 'react-toastify';
import useSWR from 'swr';
import MatchTable from '@components/MatchTable';

interface ConfigData {
disabled_bracket_switching: boolean;
disabled_team_modifications: boolean;
disabled_scrimmage_requests: boolean;
disabled_code_submissions: boolean;
}

const Admin: NextPage = () => {
const { status, data } = useSession();

@@ -98,7 +91,7 @@ const Admin: NextPage = () => {
};

const modifyBracketSwitching = async (enabled : boolean) => {
axios.post('/api/admin/modify-permissions', { disabled_bracket_switching: enabled })
await axios.post('/api/admin/modify-permissions', { bracket_switching: enabled })
.then((response: AxiosResponse) => {
if (response.status === 200) {
const effect = enabled ? 'Enabled' : 'Disabled';
@@ -121,7 +114,7 @@ const Admin: NextPage = () => {
const disableBracketSwitching = async () => { modifyBracketSwitching(false); }

const modifyTeamModifications = async (enabled : boolean) => {
axios.post('/api/admin/modify-permissions', { disabled_team_modifications: enabled })
await axios.post('/api/admin/modify-permissions', { team_modifications: enabled })
.then((response: AxiosResponse) => {
if (response.status === 200) {
const effect = enabled ? 'Enabled' : 'Disabled';
@@ -144,7 +137,7 @@ const Admin: NextPage = () => {
const disableTeamModifications = async () => { modifyTeamModifications(false); }

const modifyScrimmageRequests = async (enabled : boolean) => {
axios.post('/api/admin/modify-permissions', { disabled_scrimmage_requests: enabled })
await axios.post('/api/admin/modify-permissions', { scrimmage_requests: enabled })
.then((response: AxiosResponse) => {
if (response.status === 200) {
const effect = enabled ? 'Enabled' : 'Disabled';
@@ -167,7 +160,7 @@ const Admin: NextPage = () => {
const disableScrimmageRequests = async () => { modifyScrimmageRequests(false); }

const modifyCodeSubmissions = async (enabled : boolean) => {
axios.post('/api/admin/modify-permissions', { disabled_code_submissions: enabled })
await axios.post('/api/admin/modify-permissions', { code_submissions: enabled })
.then((response: AxiosResponse) => {
if (response.status === 200) {
const effect = enabled ? 'Enabled' : 'Disabled';
@@ -204,50 +197,45 @@ const Admin: NextPage = () => {
<br />
<Card>
<Card.Body>
<Card.Title>Permissions</Card.Title>
<Card.Text>
<Card.Title>Permissions</Card.Title>
<div>
<div className='mb-3'>
<Button onClick={enableBracketSwitching} variant='dark'>
<Button onClick={enableBracketSwitching} variant='dark' className="mr-3">
Enable Bracket Switching
</Button>
<Button onClick={disableBracketSwitching} variant='dark'>
Disable Bracket Switching
</Button>
</div>
</Card.Text>

<Card.Text>
<div className='mb-3'>
<Button onClick={enableTeamModifications} variant='dark'>
<Button onClick={enableTeamModifications} variant='dark' className="mr-3">
Enable Team Modifications
</Button>
<Button onClick={disableTeamModifications} variant='dark'>
Disable Team Modifications
</Button>
</div>
</Card.Text>

<Card.Text>
<div className='mb-3'>
<Button onClick={enableScrimmageRequests} variant='dark'>
<Button onClick={enableScrimmageRequests} variant='dark' className="mr-3">
Enable Scrimmage Requests
</Button>
<Button onClick={disableScrimmageRequests} variant='dark'>
<Button onClick={disableScrimmageRequests} variant='dark' className="ml-3">
Disable Scrimmage Requests
</Button>
</div>
</Card.Text>

<Card.Text>

<div className='mb-3'>
<Button onClick={enableCodeSubmissions} variant='dark'>
<Button onClick={enableCodeSubmissions} variant='dark' className="mr-3">
Enable Code Submissions
</Button>
<Button onClick={disableCodeSubmissions} variant='dark'>
Disable Code Submissions
</Button>
</div>
</Card.Text>
</div>
</Card.Body>
</Card>
<br />
96 changes: 96 additions & 0 deletions src/pages/api/admin/modify-permissions.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,96 @@
import {
DynamoDB,
DynamoDBClientConfig,
} from '@aws-sdk/client-dynamodb';
import { DynamoDBDocument, UpdateCommand, UpdateCommandInput } from '@aws-sdk/lib-dynamodb';
import { NextApiRequest, NextApiResponse } from 'next';

const config: DynamoDBClientConfig = {
credentials: {
accessKeyId: process.env.AWS_ACCESS_KEY_LOCAL as string,
secretAccessKey: process.env.AWS_SECRET_KEY_LOCAL as string,
},
region: process.env.AWS_REGION_LOCAL,
};

const client = DynamoDBDocument.from(new DynamoDB(config), {
marshallOptions: {
removeUndefinedValues: true,
convertClassInstanceToMap: true,
},
});

export default async function handler(
req: NextApiRequest,
res: NextApiResponse,
) {
if (req.method !== 'POST') {
return res.status(405).send({ message: 'Method not allowed' });
}

let params : UpdateCommandInput = { TableName: process.env.AWS_TABLE_NAME, Key: { pk: "config:config_profile_1", sk: "config:config_profile_1" } };

if(req.body.bracket_switching !== undefined)
{
const { bracket_switching } = req.body;

params.UpdateExpression = "SET #bracket_switching = :bracket_switching";
params.ExpressionAttributeNames = {
"#bracket_switching": "bracket_switching",
};
params.ExpressionAttributeValues = {
":bracket_switching": bracket_switching,
};
};

if(req.body.team_modifications !== undefined)
{
const { team_modifications } = req.body;

params.UpdateExpression = "SET #team_modifications = :team_modifications";
params.ExpressionAttributeNames = {
"#team_modifications": "team_modifications",
};
params.ExpressionAttributeValues = {
":team_modifications": team_modifications,
};
}

if(req.body.scrimmage_requests !== undefined)
{
const { scrimmage_requests } = req.body;

params.UpdateExpression = "SET #scrimmage_requests = :scrimmage_requests";
params.ExpressionAttributeNames = {
"#scrimmage_requests": "scrimmage_requests",
};
params.ExpressionAttributeValues = {
":scrimmage_requests": scrimmage_requests,
};
}

if(req.body.code_submissions !== undefined)
{
const { code_submissions } = req.body;

params.UpdateExpression = "SET #code_submissions = :code_submissions";
params.ExpressionAttributeNames = {
"#code_submissions": "code_submissions",
};
params.ExpressionAttributeValues = {
":code_submissions": code_submissions,
};
}

try {
const response = await client.send(new UpdateCommand(params));
if(response)
return res.status(200).send({ message: 'Permissions updated successfully!' });
else
return res.status(400).send({ message: 'Error updating permissions!' });
} catch (error) {
return res.status(500).send({ message: 'Error updating permissions!' });
}

}

0 comments on commit 7f394ac

Please sign in to comment.