summaryrefslogtreecommitdiff
path: root/src/lib/auth/components/Register.jsx
diff options
context:
space:
mode:
authorIT Fixcomart <it@fixcomart.co.id>2023-03-01 09:18:52 +0000
committerIT Fixcomart <it@fixcomart.co.id>2023-03-01 09:18:52 +0000
commita7abbf4ddc70068620e9f44b74dc162ce2e16ee2 (patch)
tree74f66253717515d364ce74bd8275015c1f829cbc /src/lib/auth/components/Register.jsx
parent90e1edab9b6a8ccc09a49fed3addbec2cbc4e4c3 (diff)
parenta1b9b647a6c4bda1f5db63879639d44543f9557e (diff)
Merged in refactor (pull request #1)
Refactor
Diffstat (limited to 'src/lib/auth/components/Register.jsx')
-rw-r--r--src/lib/auth/components/Register.jsx151
1 files changed, 151 insertions, 0 deletions
diff --git a/src/lib/auth/components/Register.jsx b/src/lib/auth/components/Register.jsx
new file mode 100644
index 00000000..d02081ce
--- /dev/null
+++ b/src/lib/auth/components/Register.jsx
@@ -0,0 +1,151 @@
+import Image from 'next/image'
+import Link from '@/core/components/elements/Link/Link'
+import IndoteknikLogo from '@/images/logo.png'
+import { useState } from 'react'
+import registerApi from '../api/registerApi'
+import Alert from '@/core/components/elements/Alert/Alert'
+import axios from 'axios'
+
+const Register = () => {
+ const [fullname, setFullname] = useState('')
+ const [email, setEmail] = useState('')
+ const [password, setPassword] = useState('')
+ const [companyName, setCompanyName] = useState('')
+ const [isLoading, setIsLoading] = useState('')
+ const [alert, setAlert] = useState(null)
+
+ const handleSubmit = async (e) => {
+ e.preventDefault()
+ setAlert(null)
+ setIsLoading(true)
+ const data = {
+ name: fullname,
+ company: companyName,
+ email,
+ password
+ }
+ const isRegistered = await registerApi({ data })
+ setIsLoading(false)
+ if (isRegistered.register) {
+ await axios.post(`${process.env.SELF_HOST}/api/activation-request`, { email })
+ setAlert({
+ children: 'Berhasil mendaftarkan akun anda, cek email untuk melakukan aktivasi akun',
+ type: 'success'
+ })
+ setCompanyName('')
+ setFullname('')
+ setEmail('')
+ setPassword('')
+ } else {
+ switch (isRegistered.reason) {
+ case 'EMAIL_USED':
+ setAlert({
+ children: 'Email telah digunakan',
+ type: 'info'
+ })
+ break
+ }
+ }
+ }
+
+ return (
+ <div className='p-6 pt-10 flex flex-col items-center'>
+ <Link href='/'>
+ <Image
+ src={IndoteknikLogo}
+ alt='Logo Indoteknik'
+ width={150}
+ height={50}
+ />
+ </Link>
+
+ <h1 className='text-2xl mt-4 font-semibold'>Daftar Akun Indoteknik</h1>
+ <h2 className='text-gray_r-11 font-normal mt-1 mb-4 text-center'>
+ Buat akun sekarang lebih mudah dan terverifikasi
+ </h2>
+
+ {alert && (
+ <Alert
+ className='text-center'
+ type={alert.type}
+ >
+ {alert.children}
+ </Alert>
+ )}
+
+ <form
+ className='w-full mt-6 flex flex-col gap-y-4'
+ onSubmit={handleSubmit}
+ >
+ <div>
+ <label htmlFor='companyName'>
+ Nama Perusahaan <span className='text-gray_r-11'>(opsional)</span>
+ </label>
+ <input
+ type='text'
+ id='companyName'
+ className='form-input w-full mt-3'
+ value={companyName}
+ onChange={(e) => setCompanyName(e.target.value.toUpperCase())}
+ placeholder='cth: INDOTEKNIK DOTCOM GEMILANG'
+ autoCapitalize='true'
+ />
+ </div>
+
+ <div>
+ <label htmlFor='fullname'>Nama Lengkap</label>
+ <input
+ type='text'
+ id='fullname'
+ className='form-input w-full mt-3'
+ value={fullname}
+ onChange={(e) => setFullname(e.target.value)}
+ placeholder='John Doe'
+ />
+ </div>
+ <div>
+ <label htmlFor='email'>Alamat Email</label>
+ <input
+ type='email'
+ id='email'
+ className='form-input w-full mt-3'
+ value={email}
+ onChange={(e) => setEmail(e.target.value)}
+ placeholder='contoh@email.com'
+ />
+ </div>
+ <div>
+ <label htmlFor='password'>Kata Sandi</label>
+ <input
+ type='password'
+ id='password'
+ className='form-input w-full mt-3'
+ value={password}
+ onChange={(e) => setPassword(e.target.value)}
+ placeholder='••••••••••••'
+ />
+ </div>
+
+ <button
+ type='submit'
+ className='btn-yellow w-full mt-2'
+ disabled={!email || !password || !fullname || isLoading}
+ >
+ {!isLoading ? 'Daftar' : 'Loading...'}
+ </button>
+ </form>
+
+ <div className='text-gray_r-11 mt-4'>
+ Sudah punya akun Indoteknik?{' '}
+ <Link
+ href='/login'
+ className='inline'
+ >
+ Masuk
+ </Link>
+ </div>
+ </div>
+ )
+}
+
+export default Register