pw request refactor

This commit is contained in:
mrfry 2021-04-19 17:28:05 +02:00
parent 5c430ac5f9
commit b512e65abc
2 changed files with 106 additions and 89 deletions

View file

@ -7,41 +7,23 @@ import Sleep from '../components/sleep'
import styles from './pwRequest.module.css' import styles from './pwRequest.module.css'
import constants from '../constants.json' import constants from '../constants.json'
export default function PwRequest() { function fetchAvailablePWS() {
const [result, setResult] = useState([]) return new Promise((resolve) => {
const [remaining, setRemaining] = useState('...')
const [requestedPWS, setRequestedPWS] = useState('...')
const [createDate, setCreateDate] = useState('...')
const [addPwPerDay, setAddPwPerDay] = useState('...')
const [daysAfterUserGetsPWs, setDaysAfterUserGetsPWs] = useState('...')
const [maxPWCount, setMaxPWCount] = useState('...')
const [addPWCount, setAddPWCount] = useState('...')
const [dayDiff, setDayDiff] = useState('...')
useEffect(() => {
console.info('Fetching avaible pws')
fetch(`${constants.apiUrl}avaiblePWS`, { fetch(`${constants.apiUrl}avaiblePWS`, {
credentials: 'include', credentials: 'include',
}) })
.then((resp) => { .then((resp) => {
return resp.json() return resp.json()
}) })
.then((data) => { .then((res) => {
setRemaining(data.avaiblePWS) resolve(res)
setCreateDate(data.userCreated)
setRequestedPWS(data.requestedPWS)
setAddPwPerDay(data.addPWPerDay)
setAddPWCount(data.addPWCount)
setDaysAfterUserGetsPWs(data.daysAfterUserGetsPWs)
setMaxPWCount(data.maxPWCount)
setDayDiff(data.dayDiff)
}) })
}, []) })
}
const handleSubmit = async () => { function requestPw() {
const rawResponse = await fetch(constants.apiUrl + 'getpw', { return new Promise((resolve) => {
fetch(constants.apiUrl + 'getpw', {
method: 'POST', method: 'POST',
credentials: 'include', credentials: 'include',
headers: { headers: {
@ -50,33 +32,47 @@ export default function PwRequest() {
}, },
body: JSON.stringify({}), body: JSON.stringify({}),
}) })
try { .then((res) => {
rawResponse return res.json()
.json() })
.then((resp) => { .then((res) => {
if (resp.result === 'success') { resolve(res)
setResult([...result, resp.pw]) })
setRemaining(resp.remaining) })
setRequestedPWS(resp.requestedPWS) }
} else if (resp.result === 'nouser') {
setResult(['Nem vagy bejelentkezve!']) // this should never happpen export default function PwRequest({ globalData }) {
} else { const userId = globalData.userId || '...'
setResult([ const [result, setResult] = useState([])
...result, const [data, setData] = useState({
'Jelszó kérési lehetőségeid elfogytak, nézz vissza később', userCreated: '...',
]) availablePWS: '...',
setRemaining(0) requestedPWS: '...',
} maxPWCount: '...',
}) daysAfterUserGetsPWs: '...',
.catch((e) => { addPWPerDay: '...',
setResult([...result, 'Szerver oldali hiba! :(']) addPWCount: '...',
console.error(e) dayDiff: '...',
}) userCount: '...',
} catch (e) { })
setResult([...result, 'Szerver oldali hiba! :('])
console.error(e) const {
} userCreated,
} availablePWS,
requestedPWS,
maxPWCount,
daysAfterUserGetsPWs,
addPWPerDay,
addPWCount,
dayDiff,
userCount,
} = data
useEffect(() => {
fetchAvailablePWS().then((data) => {
setData(data)
})
}, [])
return ( return (
// TODO: a generált jelszó modal-on való megjelenítésének kivitelezése. // TODO: a generált jelszó modal-on való megjelenítésének kivitelezése.
@ -93,16 +89,9 @@ export default function PwRequest() {
<div id="form"> <div id="form">
<div className={styles.text}> <div className={styles.text}>
<p className={styles.descrip}> <p className={styles.descrip}>
Ezen az oldalon lehetőséged van lekérni jelszavakat, hogy új Minden felhasználó egyedi jelszót kap. Ne használjatok többen egy
felhasználókat hívhass meg az oldalra, vagy elfelejtett jelszavadat jelszót, mert egy idő után kidob a rendszer. A jelszavakról bővebben
pótold, amennyiben még be vagy jelentkezve a régivel. (Konkrét a jelszavakról bővebben a{' '}
elfelejtett jelszó funkció még nincsen)
<br />
Minden felhasználó saját és különböző jelszót kap. Inkább generálj
egyet és add oda másnak, mint hogy közösen használjatok egyet, mert
egyszerre, egy felhasználó csak egy helyen, egy eszközön lehet
belépve, mindenhol máshol automatikusan kijelentkeztetésre kerül. A
jelszavakról bővebben a{' '}
<Link href="/faq"> <Link href="/faq">
<a>GYIK</a> <a>GYIK</a>
</Link> </Link>
@ -110,41 +99,70 @@ export default function PwRequest() {
</p> </p>
</div> </div>
<div className={styles.text}> <div className={styles.text}>
Az új felhasználóknak Jelszó kérési lehetőségeit minden
<span>{' ' + daysAfterUserGetsPWs + ' '}</span> <span>{' ' + addPWPerDay + '. '}</span>
napot kell várniuk, míg jelszó generálási lehetőséget kapnak. nap a következő logika alapján növekednek:
<br /> <ul>
Egy felhasználó egyszerre, egymás után <li>
<span>{' ' + maxPWCount + ' '}</span> Ha a felhasználói fiókod fiatalabb mint
jelszót generálhat. Összességében korlátlan mennyiségben kérhetők le <span>{' ' + daysAfterUserGetsPWs + '. '}</span>
jelszavak, de nap, akkor nem kapsz új lehetőséget.
<span>{' ' + maxPWCount + ' '}</span>db után el kell telnie{' '} </li>
<span>{' ' + addPwPerDay + ' '}</span> napnak, hogy ismét jelszót <li>
generálhass. Ha több mint
<br /> <span>{' ' + maxPWCount + ' '}</span>
Ebből eddig jelszó kérési lehetőséged van, akkor nem ezek száma.
</li>
<li>
Ha az előző kettő nem zárja ki, akkor jelszó kérési lehetőségeid
<span>{' ' + addPWCount + ' '}</span>
darabbal növekednek.
</li>
</ul>
Eddig
<span>{' ' + requestedPWS + ' '}</span> <span>{' ' + requestedPWS + ' '}</span>
lehetőséget használtál fel, tehát még{' '} jelszót kértél. Jelenleg
<span>{remaining - requestedPWS}</span> db jelszót kérhetsz le, <span>{' ' + (availablePWS - requestedPWS) + ' '}</span>
mielőtt elérnéd a <span>{' ' + maxPWCount + ' '}</span> darabos db jelszót kérhetsz.
kvótát.<br /> <br />A jelenleg bejelentkezett felhasználó (
<br /> A jelenleg bejelentkezett felhasználó létrehozva: <span>{' #' + userId + ' '}</span>)<span>{' ' + dayDiff + ' '}</span>
<span>{' ' + dayDiff}</span> napja,<span>{' ' + createDate}</span> napos,{' '}
-kor. <span>
<br /> {userCreated ? new Date(userCreated).toLocaleString() : '...'}
</span>
-kor lett létrehozva.
<br /> <br />
Az oldalnak eddig
<span>{' ' + userCount + ' '}</span>
felhasználója van
</div> </div>
<center> <center>
<div className={`buttonContainer ${styles.pwButton}`}> <div className={`buttonContainer ${styles.pwButton}`}>
<div onClick={handleSubmit}>Jelszó kérése</div> <div
onClick={() => {
requestPw().then((res) => {
setData(res)
if (res.success) {
setResult([...result, res.pw])
} else {
setResult([
...result,
'Jelszó kérési lehetőségeid elfogytak, nézz vissza később',
])
}
})
}}
>
Jelszó kérése
</div>
</div> </div>
</center> </center>
{result ? ( {result ? (
<div className={styles.pwContainer}> <div className={styles.pwContainer}>
{result.map((r, i) => { {result.map((res, i) => {
return ( return (
<div key={i} className={styles.pw}> <div key={i} className={styles.pw}>
{i + 1}.: {r} {i + 1}.: {res}
</div> </div>
) )
})} })}

View file

@ -1,5 +1,4 @@
.text { .text {
text-align: center;
font-size: 18px; font-size: 18px;
color: white; color: white;
padding: 10px; padding: 10px;