generated from lucien/api-template
Compare commits
No commits in common. "fafbceb6a26d9adec28755f5fdbd71d8aea0fb6d" and "4501f38b03d3fbc06cb4ee6e0963cf762b7bee77" have entirely different histories.
fafbceb6a2
...
4501f38b03
7 changed files with 3 additions and 87 deletions
|
@ -1,5 +1,5 @@
|
||||||
const express = require('express');
|
const express = require('express');
|
||||||
const { getConnection, getUsers, getUserByUsername, getUserLastMessages, getMentions, deleteUser, deleteUserMessages, deleteUserMentions, setUserPfp } = require('../libs/mysql');
|
const { getConnection, getUsers, getUserByUsername, getUserLastMessages, getMentions, deleteUser, deleteUserMessages, deleteUserMentions } = require('../libs/mysql');
|
||||||
const { checkAuth } = require("../libs/middlewares")
|
const { checkAuth } = require("../libs/middlewares")
|
||||||
const path = require('path');
|
const path = require('path');
|
||||||
const fs = require('node:fs');
|
const fs = require('node:fs');
|
||||||
|
@ -98,35 +98,4 @@ router.post('/:username/delete', checkAuth, async (req, res) => {
|
||||||
res.send({ message: 'User deleted' });
|
res.send({ message: 'User deleted' });
|
||||||
});
|
});
|
||||||
|
|
||||||
router.post('/:username/deletepfp', checkAuth, async (req, res) => {
|
|
||||||
const username = req.params.username;
|
|
||||||
const user = req.user;
|
|
||||||
|
|
||||||
const connection = await getConnection();
|
|
||||||
|
|
||||||
const userToDelete = await getUserByUsername(connection, username);
|
|
||||||
|
|
||||||
if (!userToDelete[0]) {
|
|
||||||
connection.end();
|
|
||||||
return res.status(400).send({ error: 'No user found' });
|
|
||||||
}
|
|
||||||
|
|
||||||
if (user.admin !== 1) {
|
|
||||||
connection.end();
|
|
||||||
return res.status(401).send({ error: 'Unauthorized' });
|
|
||||||
}
|
|
||||||
|
|
||||||
if (userToDelete[0].pfp) {
|
|
||||||
await setUserPfp(connection, userToDelete[0].id, null);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (fs.existsSync(path.join(__dirname, `../data/pfps/${userToDelete[0].pfp}`))) {
|
|
||||||
fs.unlinkSync(path.join(__dirname, `../data/pfps/${userToDelete[0].pfp}`));
|
|
||||||
}
|
|
||||||
|
|
||||||
connection.end();
|
|
||||||
|
|
||||||
res.send({ message: 'User pfp deleted' });
|
|
||||||
});
|
|
||||||
|
|
||||||
module.exports = router;
|
module.exports = router;
|
|
@ -14,6 +14,7 @@ export default function MessageComponent({ message, user, channel, deleteMessage
|
||||||
const array = []
|
const array = []
|
||||||
var string = ''
|
var string = ''
|
||||||
message.content.split(" ").forEach((word) => {
|
message.content.split(" ").forEach((word) => {
|
||||||
|
console.log(word)
|
||||||
if (word.startsWith("@")) {
|
if (word.startsWith("@")) {
|
||||||
const mention = message.mentions.find((mention) => `@${mention.username}` === word);
|
const mention = message.mentions.find((mention) => `@${mention.username}` === word);
|
||||||
if (mention) {
|
if (mention) {
|
||||||
|
|
|
@ -42,9 +42,6 @@ export default function ChannelPage({socket}: {socket: WebSocket}) {
|
||||||
}
|
}
|
||||||
|
|
||||||
function purgeChannel() {
|
function purgeChannel() {
|
||||||
if (!window.confirm(`Are you sure you want to purge ${channel?.name}?`)) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
axios
|
axios
|
||||||
.post(`/api/channels/${name}/purge`, { token })
|
.post(`/api/channels/${name}/purge`, { token })
|
||||||
.catch((err) => {
|
.catch((err) => {
|
||||||
|
@ -54,9 +51,6 @@ export default function ChannelPage({socket}: {socket: WebSocket}) {
|
||||||
}
|
}
|
||||||
|
|
||||||
function deleteChannel() {
|
function deleteChannel() {
|
||||||
if (!window.confirm(`Are you sure you want to delete ${channel?.name}?`)) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
axios
|
axios
|
||||||
.post(`/api/channels/${name}/delete`, { token })
|
.post(`/api/channels/${name}/delete`, { token })
|
||||||
.then(() => {
|
.then(() => {
|
||||||
|
|
|
@ -13,9 +13,6 @@ export default function ChannelsPage({socket}: {socket: WebSocket}) {
|
||||||
const [user, setUser] = useState<User>();
|
const [user, setUser] = useState<User>();
|
||||||
|
|
||||||
function deleteChannel(name: string) {
|
function deleteChannel(name: string) {
|
||||||
if (!window.confirm(`Are you sure you want to delete ${name}?`)) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
axios
|
axios
|
||||||
.post(`/api/channels/${name}/delete`, { token })
|
.post(`/api/channels/${name}/delete`, { token })
|
||||||
.catch((err) => {
|
.catch((err) => {
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
import { Link, useParams, useNavigate } from "react-router-dom";
|
import { Link, useParams } from "react-router-dom";
|
||||||
import { useEffect, useState } from "react";
|
import { useEffect, useState } from "react";
|
||||||
import { User, Messages } from "../types";
|
import { User, Messages } from "../types";
|
||||||
import TopBar from "../components/TopBar";
|
import TopBar from "../components/TopBar";
|
||||||
|
@ -8,47 +8,16 @@ import axios from "axios";
|
||||||
import "../styles/UserPage.css";
|
import "../styles/UserPage.css";
|
||||||
|
|
||||||
export default function UserPage({socket}: {socket: WebSocket}) {
|
export default function UserPage({socket}: {socket: WebSocket}) {
|
||||||
const navigate = useNavigate();
|
|
||||||
const { username } = useParams();
|
const { username } = useParams();
|
||||||
const [pageUser, setPageUser] = useState<User>();
|
const [pageUser, setPageUser] = useState<User>();
|
||||||
const [messages, setMessages] = useState<Messages>();
|
const [messages, setMessages] = useState<Messages>();
|
||||||
const [user, setUser] = useState<User>();
|
const [user, setUser] = useState<User>();
|
||||||
const [noUser, setNoUser] = useState<boolean>(false);
|
const [noUser, setNoUser] = useState<boolean>(false);
|
||||||
const [token, setToken] = useState<string>("");
|
|
||||||
|
|
||||||
function deleteUser() {
|
|
||||||
if (!window.confirm(`Are you sure you want to delete ${pageUser?.username}?`)) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
axios
|
|
||||||
.post(`/api/users/${pageUser?.username}/delete`, { token })
|
|
||||||
.then(() => {
|
|
||||||
navigate("/");
|
|
||||||
})
|
|
||||||
.catch((err) => {
|
|
||||||
console.error(err.response.data);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
function deleteUserPfp() {
|
|
||||||
if (!window.confirm(`Are you sure you want to delete ${pageUser?.username}'s profile picture?`)) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
axios
|
|
||||||
.post(`/api/users/${pageUser?.username}/deletepfp`, { token })
|
|
||||||
.then(() => {
|
|
||||||
window.location.reload();
|
|
||||||
})
|
|
||||||
.catch((err) => {
|
|
||||||
console.error(err.response.data);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
const localToken = localStorage.getItem("token");
|
const localToken = localStorage.getItem("token");
|
||||||
|
|
||||||
if (localToken) {
|
if (localToken) {
|
||||||
setToken(localToken);
|
|
||||||
axios
|
axios
|
||||||
.post("/api/auth/me", { token: localToken }).then((res) => {
|
.post("/api/auth/me", { token: localToken }).then((res) => {
|
||||||
setUser(res.data);
|
setUser(res.data);
|
||||||
|
@ -131,16 +100,6 @@ export default function UserPage({socket}: {socket: WebSocket}) {
|
||||||
{pageUser.id === user?.id && (
|
{pageUser.id === user?.id && (
|
||||||
<Link to="/edit-profile">Edit profile</Link>
|
<Link to="/edit-profile">Edit profile</Link>
|
||||||
)}
|
)}
|
||||||
{user?.admin == 1 && (
|
|
||||||
<div>
|
|
||||||
<button onClick={deleteUser}>
|
|
||||||
Delete user
|
|
||||||
</button>
|
|
||||||
<button onClick={deleteUserPfp}>
|
|
||||||
Delete profile picture
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
)}
|
|
||||||
</div>
|
</div>
|
||||||
<div className="user-messages">
|
<div className="user-messages">
|
||||||
<h2>Last messages</h2>
|
<h2>Last messages</h2>
|
||||||
|
|
|
@ -13,9 +13,6 @@ export default function UsersPage({socket}: {socket: WebSocket}) {
|
||||||
const [thisUser, setThisUser] = useState<User>();
|
const [thisUser, setThisUser] = useState<User>();
|
||||||
|
|
||||||
function deleteUser(username: string) {
|
function deleteUser(username: string) {
|
||||||
if (!window.confirm(`Are you sure you want to delete ${username}?`)) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
axios
|
axios
|
||||||
.post(`/api/users/${username}/delete`, { token })
|
.post(`/api/users/${username}/delete`, { token })
|
||||||
.catch((err) => {
|
.catch((err) => {
|
||||||
|
|
|
@ -13,7 +13,6 @@
|
||||||
padding: 10px;
|
padding: 10px;
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
align-items: start;
|
|
||||||
background-color: #fff6fd;
|
background-color: #fff6fd;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue