check for existing user

This commit is contained in:
slawk0
2024-08-20 20:00:54 +02:00
parent 9cc72a38f0
commit 8432dc9909
2 changed files with 45 additions and 22 deletions

View File

@@ -24,6 +24,8 @@ app.post('/auth/login', async function(req, res) {
let username = req.body.username.trim();
let password = req.body.password.trim();
await loginUser(username, password);
async function loginUser (username, password) {
if (username && password) {
try {
@@ -44,35 +46,30 @@ app.post('/auth/login', async function(req, res) {
res.send('Please enter Username and Password!');
}
res.end();
}
});
app.post('/auth/signup', (req, res) => {
app.post('/auth/signup', async (req, res) => {
let username = req.body.username.trim();
let password = req.body.password.trim();
insertAccount(username, password);
async function insertAccount(username, password){
const query = `
INSERT INTO accounts (username, password)
VALUES ($1, $2)
RETURNING *;
`;
const values = [username, password];
try {
const signupData = await client.query(query, values);
console.log('Account created:', signupData.rows[0]);
res.status(200).send("Account successfully created <a href=/login>Login screen</a>");
} catch (err) {
console.error('Error inserting data:', err.stack);
res.status(500).send('Error inserting data');
try {
const exists = await isUserExists(username);
if (exists) {
console.log('User already exists');
res.status(500).send('User already exists!');
return;
}
await insertAccount(username, password);
res.status(200).send("Account successfully created <a href=/login>Login screen</a>");
} catch (err) {
console.error('Error inserting data:', err);
res.status(500).send('Error inserting data');
}
})
});
app.get('/login', (req, res) => {
res.sendFile(path.join(__dirname, '/public/routes/login.html'));
})
@@ -87,4 +84,32 @@ app.get('/', (req, res) => {
app.listen(port, () => {
console.log(`Example app listening on port ${port}`)
})
})
async function isUserExists(username) {
try {
const query = 'SELECT COUNT(*) FROM accounts WHERE username = $1';
const result = await client.query(query, [username]);
return result.rows[0].count > 0;
} catch (err) {
console.error('Error checking username:', err);
throw err;
}
}
async function insertAccount(username, password){
const query = `
INSERT INTO accounts (username, password)
VALUES ($1, $2)
RETURNING *;
`;
const values = [username, password];
try {
const signupData = await client.query(query, values);
console.log('Account created:', signupData.rows[0]);
} catch (err) {
console.error('Error inserting data:', err.stack);
}
}

View File

@@ -19,6 +19,4 @@ document.getElementById('signupForm').addEventListener('submit',async function (
alert("Passwords don't match!");
event.preventDefault();
}
})