remove user admin routes
This commit is contained in:
		| @@ -1,23 +0,0 @@ | |||||||
| import type { RequestHandler } from '@sveltejs/kit'; |  | ||||||
| import { error } from '@sveltejs/kit'; |  | ||||||
|  |  | ||||||
| import { dbConnect, dbDisconnect } from '../../../../../utils/db'; |  | ||||||
| import { User } from '../../../../../models/User'; |  | ||||||
| import { get_username } from '$lib/js/get_username'; |  | ||||||
|  |  | ||||||
| // header: use for bearer token for now |  | ||||||
| // recipe json in body |  | ||||||
| export const POST: RequestHandler = async ({cookies}) => { |  | ||||||
| 	const requesting_user = await get_username(cookies) |  | ||||||
| 	await dbConnect() |  | ||||||
| 	let res = await User.findOne({username: requesting_user}, 'access').lean() |  | ||||||
| 	if(!res.access.contains("admin")){ |  | ||||||
| 		await dbDisconnect() |  | ||||||
| 		throw error(401, {message: "Your user does not have the permissions to do this"}) |  | ||||||
| 	} |  | ||||||
| 	else{ |  | ||||||
| 		let res = await User.find({}, 'username access').lean() |  | ||||||
| 		await dbDisconnect() |  | ||||||
| 		return { res } |  | ||||||
| 	} |  | ||||||
| }; |  | ||||||
| @@ -1,36 +0,0 @@ | |||||||
| import type { RequestHandler } from '@sveltejs/kit'; |  | ||||||
| import { error } from '@sveltejs/kit'; |  | ||||||
| import { verify }  from 'argon2'; |  | ||||||
| import { hashPassword } from '$lib/js/hashPassword' |  | ||||||
| import {randomBytes} from 'crypto' |  | ||||||
|  |  | ||||||
| import { PEPPER } from '$env/static/private'; |  | ||||||
|  |  | ||||||
| import { User } from '../../../../models/User'; |  | ||||||
| import { dbConnect, dbDisconnect } from '../../../../utils/db'; |  | ||||||
|  |  | ||||||
| // header: use for bearer token for now |  | ||||||
| // recipe json in body |  | ||||||
| export const POST: RequestHandler = async ({request}) => { |  | ||||||
| 	const {username, old_password, new_password, new_password_rep} = await request.json() |  | ||||||
|   if(new_password != new_password_rep){ |  | ||||||
|     throw error(400, 'new passwords do not match!') |  | ||||||
|   } |  | ||||||
| 	await dbConnect(); |  | ||||||
| 	const user = await User.findOne({username: username}); |  | ||||||
|   console.log("Found user:", user) |  | ||||||
|   const isMatch = await verify(user.pass_hash, old_password + PEPPER, {salt: user.salt}) |  | ||||||
|   console.log("isMatch:", isMatch) |  | ||||||
|   if(isMatch){ |  | ||||||
| 		const salt = randomBytes(32).toString('hex'); // Generate a random salt |  | ||||||
|     const pass_hash = await hashPassword(new_password + PEPPER, salt) |  | ||||||
|     await User.findOneAndUpdate({username: username}, {pass_hash: pass_hash, salt: salt}) |  | ||||||
|     await dbDisconnect() |  | ||||||
| 	  return new Response(JSON.stringify({message: "Password updated successfully"}), |  | ||||||
|                         {status: 200}) |  | ||||||
|   } |  | ||||||
|   else{ |  | ||||||
| 	  await dbDisconnect(); |  | ||||||
|     throw error(401, "Wrong old password") |  | ||||||
| 	} |  | ||||||
| }; |  | ||||||
| @@ -1,46 +0,0 @@ | |||||||
| import type { RequestHandler } from '@sveltejs/kit'; |  | ||||||
| import { error } from '@sveltejs/kit'; |  | ||||||
| import pkg from 'jsonwebtoken'; |  | ||||||
| const { sign } = pkg; |  | ||||||
| import { verify} from 'argon2'; |  | ||||||
| import { COOKIE_SECRET } from '$env/static/private' |  | ||||||
| import { PEPPER } from '$env/static/private' |  | ||||||
|  |  | ||||||
| import { dbConnect, dbDisconnect } from '../../../../utils/db'; |  | ||||||
| import { User } from '../../../../models/User'; |  | ||||||
|  |  | ||||||
| // header: use for bearer token for now |  | ||||||
| // recipe json in body |  | ||||||
| export const POST: RequestHandler = async ({request}) => { |  | ||||||
| 	const {username, password} = await request.json() |  | ||||||
| 	await dbConnect() |  | ||||||
| 	let res = await User.findOne({username: username}, 'pass_hash salt').lean() |  | ||||||
| 	await dbDisconnect() |  | ||||||
| 	if(!res){ |  | ||||||
| 		console.log("NOT FOUND") |  | ||||||
| 		throw error(401, {message: "wrong password or user does not exist"}) |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	const stored_pw = res.pass_hash |  | ||||||
| 	const salt = res.salt |  | ||||||
|  |  | ||||||
| 	const isMatch = await verify(stored_pw, password + PEPPER, {salt}) |  | ||||||
| 	if(!isMatch){ |  | ||||||
| 		throw error(401, {message: "wrong password or user does not exist"}) |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	res = await createJWT(username) |  | ||||||
| 	return new Response(JSON.stringify(res)) |  | ||||||
| }; |  | ||||||
|  |  | ||||||
| async function createJWT(username) { |  | ||||||
| 	const payload = { |  | ||||||
|   	  username: username, |  | ||||||
|   	}; |  | ||||||
|  |  | ||||||
|   	const masterSecret = COOKIE_SECRET; |  | ||||||
|   	const secretKey = masterSecret; |  | ||||||
|   	const jwt = sign(payload, secretKey); |  | ||||||
| 	console.log(jwt) |  | ||||||
|   	return jwt |  | ||||||
| } |  | ||||||
| @@ -1,41 +0,0 @@ | |||||||
| import type { RequestHandler } from '@sveltejs/kit'; |  | ||||||
| import { error } from '@sveltejs/kit'; |  | ||||||
| import { randomBytes } from 'crypto'; |  | ||||||
| import { ALLOW_REGISTRATION } from '$env/static/private'; |  | ||||||
| import { PEPPER } from '$env/static/private'; |  | ||||||
| import {hashPassword} from '$lib/js/hashPassword' |  | ||||||
|  |  | ||||||
| import { User } from '../../../../models/User'; |  | ||||||
| import { dbConnect, dbDisconnect } from '../../../../utils/db'; |  | ||||||
|  |  | ||||||
| // header: use for bearer token for now |  | ||||||
| // recipe json in body |  | ||||||
| export const POST: RequestHandler = async ({request}) => { |  | ||||||
| 	if(ALLOW_REGISTRATION){ |  | ||||||
| 		const {username, password} = await request.json() |  | ||||||
| 		const salt = randomBytes(32).toString('hex'); // Generate a random salt |  | ||||||
|  |  | ||||||
| 		const pass_hash =  await hashPassword(password + PEPPER, salt) |  | ||||||
| 		await dbConnect(); |  | ||||||
| 		try{ |  | ||||||
| 			await User.create({ |  | ||||||
| 					username: username, |  | ||||||
| 					pass_hash: pass_hash, |  | ||||||
| 					salt: salt, |  | ||||||
| 					access: [], |  | ||||||
| 			}) |  | ||||||
| 		}catch(e){ |  | ||||||
| 			await dbDisconnect(); |  | ||||||
| 			throw error(400, e); |  | ||||||
| 		} |  | ||||||
| 		await dbDisconnect(); |  | ||||||
| 		return new Response(JSON.stringify({message: "User added successfully"}), |  | ||||||
| 				    	{status: 200} |  | ||||||
| 			); |  | ||||||
| 	} |  | ||||||
| 	else{ |  | ||||||
| 		throw error(401, "user registration currently closed") |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
|  |  | ||||||
| }; |  | ||||||
		Reference in New Issue
	
	Block a user