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) => {
if (resp.result === 'success') {
setResult([...result, resp.pw])
setRemaining(resp.remaining)
setRequestedPWS(resp.requestedPWS)
} else if (resp.result === 'nouser') {
setResult(['Nem vagy bejelentkezve!']) // this should never happpen
} else {
setResult([
...result,
'Jelszó kérési lehetőségeid elfogytak, nézz vissza később',
])
setRemaining(0)
}
}) })
.catch((e) => { .then((res) => {
setResult([...result, 'Szerver oldali hiba! :(']) resolve(res)
console.error(e)
}) })
} catch (e) { })
setResult([...result, 'Szerver oldali hiba! :(']) }
console.error(e)
} export default function PwRequest({ globalData }) {
} const userId = globalData.userId || '...'
const [result, setResult] = useState([])
const [data, setData] = useState({
userCreated: '...',
availablePWS: '...',
requestedPWS: '...',
maxPWCount: '...',
daysAfterUserGetsPWs: '...',
addPWPerDay: '...',
addPWCount: '...',
dayDiff: '...',
userCount: '...',
})
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>
Ha a felhasználói fiókod fiatalabb mint
<span>{' ' + daysAfterUserGetsPWs + '. '}</span>
nap, akkor nem kapsz új lehetőséget.
</li>
<li>
Ha több mint
<span>{' ' + maxPWCount + ' '}</span> <span>{' ' + maxPWCount + ' '}</span>
jelszót generálhat. Összességében korlátlan mennyiségben kérhetők le jelszó kérési lehetőséged van, akkor nem ezek száma.
jelszavak, de </li>
<span>{' ' + maxPWCount + ' '}</span>db után el kell telnie{' '} <li>
<span>{' ' + addPwPerDay + ' '}</span> napnak, hogy ismét jelszót Ha az előző kettő nem zárja ki, akkor jelszó kérési lehetőségeid
generálhass. <span>{' ' + addPWCount + ' '}</span>
<br /> darabbal növekednek.
Ebből eddig </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;