import './Login.sass' import { Logo, Link, Page, Row, Padding, Box, Radio, Combobox, Input, Button, Modal, Column, Display } from '../../components' import { IoChevronBack } from 'solid-icons/io' import { createSignal, Show, createEffect } from 'solid-js' import { SHA1, SHA3 } from 'crypto-js' import { useNavigate } from '@solidjs/router' import { checkConnection, getApi } from '../../utils/functions' import { _employeeId, _employeeName } from '../../stores/employee' export default () => { 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 getApi('get-employeeid', name()) const dbpassword = await getApi('get-password', employeeid) const hashPassword = await securePassword() if (dbpassword === '0') { setErrorMessage('Not yet registered. Please proceed to Registration.') } else { setErrorMessage('Invalid Password, Try again.') } if (dbpassword === hashPassword) { _employeeId.set(employeeid) _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
) }