diff --git a/src/app/(__components)/compPassword.tsx b/src/app/(__components)/compPassword.tsx new file mode 100644 index 0000000..58fcfc8 --- /dev/null +++ b/src/app/(__components)/compPassword.tsx @@ -0,0 +1,88 @@ +"use client"; + +import { useState } from "react"; + +import passwordHash from "utils/encryptionHelper/passwordHash"; + +import { Constant } from "types/general/constant"; + +function Password({ path }: { path: string }) { + const [password, setPassword] = useState(""); + + const handlePasswordSubmit = ( + e: React.FormEvent, + ) => { + e.preventDefault(); + const isPasswordExists = + document.cookie.split(Constant.cookiePassword) + .length > 1; + const expires = new Date(); + expires.setFullYear(expires.getFullYear() + 1); + + if (isPasswordExists) { + const passwordCookie = document.cookie + .split(Constant.cookiePassword)[1] + .split(";")[0] + .split("=")[1]; + const parsedPassword = JSON.parse(passwordCookie); + parsedPassword[path] = passwordHash.encode(password); + document.cookie = `${ + Constant.cookiePassword + }=${JSON.stringify( + parsedPassword, + )}; expires=${expires.toUTCString()}; path=/`; + } else { + const parsedPassword = { + [path]: passwordHash.encode(password), + }; + document.cookie = `${ + Constant.cookiePassword + }=${JSON.stringify( + parsedPassword, + )}; expires=${expires.toUTCString()}; path=/`; + } + + window.location.reload(); + }; + + return ( +
+

+ Password protected +

+

+ The file or folder you are trying to access is + password protected. Please enter the password to + continue. +

+ +
+ setPassword(e.target.value)} + /> + +
+
+ ); +} + +export default Password;