import './Login.sass' import { Logo, Link, Page, Row, Padding, Box, Radio, Combobox, Input, Button, Modal, Column } from '../../components' import { IoChevronBack } from 'solid-icons/io' import { createSignal, Show, createEffect } from 'solid-js' import { ofetch } from 'ofetch' import { SHA1, SHA3 } from 'crypto-js' import { useNavigate } from '@solidjs/router' import { checkConnection } from '../../utils/functions' import { _employeeId, _employeeName } from '../../stores/employee' export default () => { const API = import.meta.env.VITE_BACKEND const APPROVERNAME = import.meta.env.VITE_HEAD const navigate = useNavigate() const assessors = JSON.parse(sessionStorage.getItem('registered')!) const roles = ['Assessor', 'Approver'] const [role, setRole] = createSignal('Assessor') const [name, setName] = createSignal('') const [password, setPassword] = createSignal('') const [loggedin, setLoggedin] = createSignal(0) const [errorMessage, setErrorMessage] = createSignal('') const [connected, setConnected] = createSignal(true) const login = async () => { setConnected(await checkConnection()) if (connected() === false) { setErrorMessage('No Connection on Server') return } const employeeid = await ofetch(API + 'get-employeeid/' + name(), { parseResponse: JSON.parse }) const dbpassword = await ofetch(API + 'get-password/' + employeeid.result, { parseResponse: JSON.parse }) const hashPassword = await securePassword() if (dbpassword.result === '0') { setErrorMessage('Not yet registered. Please proceed to Registration.') } else { setErrorMessage('Invalid Password, Try again.') } if (dbpassword.result === hashPassword) { _employeeId.set(employeeid.result) _employeeName.set(name()) saveEmployee() setLoggedin(2) } else { setLoggedin(1) } } const securePassword = async () => { const firstHashing = SHA1(password()) const secondHashing = SHA3(firstHashing) const thirdHashing = SHA1(secondHashing) return thirdHashing.toString() } const gotoMain = () => { navigate('/main') } const gotoAssessor = () => { navigate('/assessor') } const navigateToRolePage = () => { if (role() === 'Assessor') gotoAssessor() else gotoMain() } const saveEmployee = () => { sessionStorage.setItem('id', _employeeId.get().toString()) sessionStorage.setItem('name', _employeeName.get()) } createEffect(() => { if (role() === 'Approver') setName(APPROVERNAME) else if (role() !== 'Approver' && name() === APPROVERNAME) setName('') }) return ( <>

OCBO e-Sign

Back
{/*
*/} Login

Name

{APPROVERNAME}

Password

{ if (event.key === 'Enter') login() }} /> Required password Required name and password Required name {/*
*/}

Login Successful

Click anywhere to proceed
setLoggedin(0)}>

Login Failed

{errorMessage()}

Click anywhere to close
setConnected(true)}>

Connection Error

{errorMessage()}

Click anywhere to close
) }