Skip to content
Open

gg #38

Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion components/admin/proposal-active.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import styles from '../../styles/admin.module.scss'
* @returns list of all active proposals
*/

const ActiveProposals = ({ proposals, setProposals, setSelectedProposal }) => {
const ActiveProposals = ({ proposals, setProposals, setSelectedProposal, session }) => {
return (
<div className={styles.activeProposals}>
{proposals &&
Expand All @@ -21,6 +21,7 @@ const ActiveProposals = ({ proposals, setProposals, setSelectedProposal }) => {
setSelectedProposal={setSelectedProposal}
proposal={proposal}
setProposals={setProposals}
session={session}
/>
);
})}
Expand Down
5 changes: 5 additions & 0 deletions components/admin/proposal-form.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ const CreateProposalForm = ({
selectedProposal,
setSelectedProposal,
setProposals,
session
}) => {
const [proposal, setProposal] = useState(selectedProposal);
const [active, setActive] = useState(false);
Expand All @@ -33,6 +34,8 @@ const CreateProposalForm = ({
title: proposal && proposal.title,
detail: proposal && proposal.detail,
active: active,
signature: session && session.signature,
typedData: session && session.typedData
},
});
setProposals(null);
Expand All @@ -54,6 +57,8 @@ const CreateProposalForm = ({
updatedTitle: proposal && proposal.title,
detail: proposal && proposal.detail,
active: active ? active : false,
signature: session && session.signature,
typedData: session && session.typedData
},
});
setProposals(null);
Expand Down
4 changes: 4 additions & 0 deletions components/admin/proposalItem/proposalItem.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,9 @@ const ProposalItem = ({
setSelectedProposal,
proposal,
setProposals,
session
}) => {

const handleDeleteProposal = async () => {
console.log('Deleting...');
try {
Expand All @@ -20,6 +22,8 @@ const ProposalItem = ({
url: '/api/proposal-delete',
data: {
title: proposal.title,
signature: session && session.signature,
typedData: session && session.typedData
},
});
setProposals(null);
Expand Down
7 changes: 6 additions & 1 deletion components/admin/reward-form.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ const CreateRewardForm = ({
selectedReward,
setSelectedReward,
setRewards,
session
}) => {
const [reward, setReward] = useState(selectedReward);
const [file, setFile] = useState(null);
Expand Down Expand Up @@ -49,7 +50,7 @@ const CreateRewardForm = ({
const { name, value } = event.target;
const newReward = { ...reward };
newReward[name] = value;
setReward(newReward);
setReward({ ...reward, [name]: value })
console.log('Reward form data', reward);
};

Expand All @@ -65,6 +66,8 @@ const CreateRewardForm = ({
detail: reward && reward.detail,
imageStr: imageUrl && imageUrl,
eligibilityCount: reward && reward.eligibilityCount,
signature: session && session.signature,
typedData: session && session.typedData
},
});
setRewards(null);
Expand All @@ -87,6 +90,8 @@ const CreateRewardForm = ({
detail: reward && reward.detail,
imageStr: imageUrl && imageUrl,
eligibilityCount: reward && reward.eligibilityCount,
signature: session && session.signature,
typedData: session && session.typedData
},
});
setRewards(null);
Expand Down
3 changes: 3 additions & 0 deletions components/admin/rewardItem/rewardItem.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ const RewardItem = ({
setSelectedReward,
reward,
setRewards,
session
}) => {
const handleDeleteReward = async () => {
try {
Expand All @@ -19,6 +20,8 @@ const RewardItem = ({
url: '/api/rewards-delete',
data: {
title: reward.title,
signature: session && session.signature,
typedData: session && session.typedData
},
});
setRewards(null);
Expand Down
3 changes: 2 additions & 1 deletion components/admin/rewards-active.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import styles from '../../styles/admin.module.scss'
* @returns list of all active rewards
*/

const ActiveRewards = ({ rewards, setRewards, setSelectedReward }) => {
const ActiveRewards = ({ rewards, setRewards, setSelectedReward, session}) => {
return (
<div className={styles.rewardContainer}>
{rewards &&
Expand All @@ -20,6 +20,7 @@ const ActiveRewards = ({ rewards, setRewards, setSelectedReward }) => {
setSelectedReward={setSelectedReward && setSelectedReward}
reward={reward}
setRewards={setRewards}
session={session}

/>
);
Expand Down
19 changes: 8 additions & 11 deletions pages/admin/admin.js
Original file line number Diff line number Diff line change
Expand Up @@ -68,18 +68,10 @@ const Admin = () => {
}, []);



const fetchActiveRewards = async () => {
try {
const init = {
method: "post",
headers: {
// TODO: check this
"Content-Type": "application/json"
},
body: JSON.stringify(session.sessionState)
};

await fetch("/api/rewards-getAll", init)
await fetch("/api/rewards-getAll")
.then((res) => res.json())
.then((data) => {
console.log("Rewards data", data);
Expand Down Expand Up @@ -153,6 +145,7 @@ const Admin = () => {
selectedReward={selectedReward}
setSelectedReward={setSelectedReward}
setRewards={setRewards}
session={session && session.sessionState}
/>
)}

Expand All @@ -161,6 +154,7 @@ const Admin = () => {
selectedProposal={selectedProposal}
setSelectedProposal={setSelectedProposal}
setProposals={setProposals}
session={session && session.sessionState}
/>
)}

Expand Down Expand Up @@ -307,6 +301,7 @@ const Admin = () => {
proposals={proposals}
setProposals={setProposals}
setSelectedProposal={setSelectedProposal}
session={session && session.sessionState}
/>
</div>
</div>
Expand All @@ -329,6 +324,7 @@ const Admin = () => {
rewards={rewards}
setRewards={setRewards}
setSelectedReward={setSelectedReward}
session={session && session.sessionState}
/>
</div>
</div>
Expand Down Expand Up @@ -378,7 +374,8 @@ const Admin = () => {
<span>Staking Count</span>
<span>Status</span>
</div>
{console.log("===Admin Auth Check===", session.authStatus)}

{console.log("===Admin Auth Check===", session.sessionState)}


<div className={styles.listContainer}>
Expand Down
44 changes: 23 additions & 21 deletions pages/api/proposal-create.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,38 +6,40 @@ const {
SignTypedDataVersion,
} = require("@metamask/eth-sig-util");

const adminAddress = ["0xa33a70FABFeb361Fe891C208B1c27ec0b64baBEB", "0x5013983D5691886140f24Abd66d2D7072f62991b"];
const adminAddress = [
"0xa33a70FABFeb361Fe891C208B1c27ec0b64baBEB",
"0x5013983D5691886140f24Abd66d2D7072f62991b",
"0x575dC6dd8c838F8E015349BbF55b90E718efF537",
"0xb265d9496Ae60CABe0ea1D3eab059B8Bb1911428",
"0x282D35Ee1b589F003db896b988fc59e2665Fa6a1",
];

const createProposal = async (req, res, next) => {
const { typedData, signature } = req.body;

// const {
// typedData,
// signature,
// } = req.body;
const signer = recoverTypedSignature({
data: typedData,
signature: signature,
version: SignTypedDataVersion.V4,
});

// const signer = recoverTypedSignature({
// data: typedData,
// signature: signature,
// version: SignTypedDataVersion.V4,
// });


// if (!(adminAddress.map((address) => address.toLowerCase()).includes(signer.toLowerCase()))) {
// res.status(405).send({ message: "Only Admin" });
// }
if (
!adminAddress
.map((address) => address.toLowerCase())
.includes(signer.toLowerCase())
) {
res.status(405).send({ message: "Only Admin" });
}

if (req.method !== "POST") {
res.status(405).send({ message: "Only POST requests allowed" });
return;
}
connectMongo();

const { title, detail, active, voters} =
req.body;

try {

const { title, detail, active, voters } = req.body;

try {
const newProposal = await ProposalModel.create({
title: title,
detail: detail,
Expand All @@ -64,4 +66,4 @@ const createProposal = async (req, res, next) => {
}
};

export default createProposal;
export default createProposal;
31 changes: 29 additions & 2 deletions pages/api/proposal-delete.js
Original file line number Diff line number Diff line change
@@ -1,14 +1,41 @@
import connectMongo from "../../config/connectMongo";
import ProposalModel from "../../models/proposal-schema";
const {
recoverTypedSignature,
SignTypedDataVersion,
} = require("@metamask/eth-sig-util");

const adminAddress = [
"0xa33a70FABFeb361Fe891C208B1c27ec0b64baBEB",
"0x5013983D5691886140f24Abd66d2D7072f62991b",
"0x575dC6dd8c838F8E015349BbF55b90E718efF537",
"0xb265d9496Ae60CABe0ea1D3eab059B8Bb1911428",
"0x282D35Ee1b589F003db896b988fc59e2665Fa6a1",
];

const deleteProposal = async (req, res) => {
if (req.method !== "POST") {
res.status(405).send({ message: "Only POST requests allowed" });
return;
}

const { title, typedData, signature } = req.body;
const signer = recoverTypedSignature({
data: typedData,
signature: signature,
version: SignTypedDataVersion.V4,
});

if (
!adminAddress
.map((address) => address.toLowerCase())
.includes(signer.toLowerCase())
) {
res.status(405).send({ message: "Only Admin" });
}
try {
connectMongo();



const newProposal = await ProposalModel.findOneAndDelete({
title: title,
}).then((data) => {
Expand Down
26 changes: 26 additions & 0 deletions pages/api/proposal-update.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,17 @@
import ProposalModel from "../../models/proposal-schema";
import connectMongo from "../../config/connectMongo";
const {
recoverTypedSignature,
SignTypedDataVersion,
} = require("@metamask/eth-sig-util");

const adminAddress = [
"0xa33a70FABFeb361Fe891C208B1c27ec0b64baBEB",
"0x5013983D5691886140f24Abd66d2D7072f62991b",
"0x575dC6dd8c838F8E015349BbF55b90E718efF537",
"0xb265d9496Ae60CABe0ea1D3eab059B8Bb1911428",
"0x282D35Ee1b589F003db896b988fc59e2665Fa6a1",
];

const updateProposal = async (req, res) => {

Expand All @@ -12,6 +23,21 @@ const updateProposal = async (req, res) => {
const { title, detail, updatedTitle, active, typedData, signature } =
req.body;

const signer = recoverTypedSignature({
data: typedData,
signature: signature,
version: SignTypedDataVersion.V4,
});

if (
!adminAddress
.map((address) => address.toLowerCase())
.includes(signer.toLowerCase())
) {
res.status(405).send({ message: "Only Admin" });
}


let updatedProposal;
console.log("Request Body", req.body);

Expand Down
Loading