Skip to content
Snippets Groups Projects
Unverified Commit cbfd72b4 authored by Noel Simbolon's avatar Noel Simbolon
Browse files

feat: add username availability endpoint and new allowed origin

parent 2cfa3e6f
Branches
Tags
1 merge request!2Dev
...@@ -26,7 +26,7 @@ const login = async ( ...@@ -26,7 +26,7 @@ const login = async (
try { try {
const accessTokenAndFingerPrint = await AuthService.login(req.body); const accessTokenAndFingerPrint = await AuthService.login(req.body);
setFingerprintCookie(res, accessTokenAndFingerPrint.fingerprint); setFingerprintCookie(res, accessTokenAndFingerPrint.fingerprint);
generateResponse(res, StatusCodes.OK, { accessToken : accessTokenAndFingerPrint.accessToken }); generateResponse(res, StatusCodes.OK, {accessToken: accessTokenAndFingerPrint.accessToken});
} catch (err) { } catch (err) {
next(err); next(err);
} }
...@@ -44,4 +44,17 @@ const setFingerprintCookie = ( ...@@ -44,4 +44,17 @@ const setFingerprintCookie = (
}); });
}; };
export { signup, login }; const isUsernameAvailable = async (
req: Request,
res: Response,
next: NextFunction,
) => {
try {
const isUsernameAvailable = await AuthService.isUsernameAvailable(req.body);
generateResponse(res, StatusCodes.OK, isUsernameAvailable);
} catch (err) {
next(err)
}
}
export { signup, login, isUsernameAvailable };
...@@ -13,6 +13,7 @@ const allowedOrigin = [ ...@@ -13,6 +13,7 @@ const allowedOrigin = [
'http://localhost:3000', 'http://localhost:3000',
'http://localhost:3001', 'http://localhost:3001',
'http://localhost:5173', 'http://localhost:5173',
'http://localhost:8000',
'http://localhost:8888', 'http://localhost:8888',
] ]
......
import express, { Router } from "express"; import express, { Router } from "express";
import * as AuthController from "../controllers/auth-controller"; import * as AuthController from "../controllers/auth-controller";
import { handleStandardError } from "../middlewares/handle-standard-error"; import { handleStandardError } from "../middlewares/handle-standard-error";
import multer from "multer";
const authRouter: Router = express.Router(); const authRouter: Router = express.Router();
authRouter.post( authRouter.post(
"/api/signup", "/api/signup",
AuthController.signup, AuthController.signup,
handleStandardError); handleStandardError
);
authRouter.post( authRouter.post(
"/api/login", "/api/login",
AuthController.login, AuthController.login,
handleStandardError); handleStandardError
);
authRouter.post(
"/api/username-availability",
AuthController.isUsernameAvailable,
handleStandardError
);
export { authRouter }; export { authRouter };
...@@ -4,8 +4,8 @@ import prismaClient from "../cores/db"; ...@@ -4,8 +4,8 @@ import prismaClient from "../cores/db";
import { ErrorType, StandardError } from "../errors/standard-error"; import { ErrorType, StandardError } from "../errors/standard-error";
import { hashPassword, isPasswordValid } from "../utils/password"; import { hashPassword, isPasswordValid } from "../utils/password";
import { generateAccessTokenAndFingerprint } from "../utils/token"; import { generateAccessTokenAndFingerprint } from "../utils/token";
import {validate} from "../validation/validation"; import { validate } from "../validation/validation";
import {loginSchema, signupSchema} from "../validation/auth-validation"; import { loginSchema, signupSchema } from "../validation/auth-validation";
const signup = async ( const signup = async (
data: Prisma.UserCreateInput, data: Prisma.UserCreateInput,
...@@ -71,4 +71,22 @@ const login = async (data: { username: string; password: string }) => { ...@@ -71,4 +71,22 @@ const login = async (data: { username: string; password: string }) => {
} }
}; };
export { signup, login }; const isUsernameAvailable = async (data: { username: string }) => {
const user = await prismaClient.user.findUnique({
where: {
username: data.username,
}
})
if (user !== null) {
return {
usernameAvailable: "false",
}
} else {
return {
usernameAvailable: "true",
}
}
}
export { signup, login, isUsernameAvailable };
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment