Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix(landing): login credentials stay on error #1852

Open
wants to merge 2 commits into
base: main
Choose a base branch
from

Conversation

astoervold
Copy link
Contributor

@astoervold astoervold commented Mar 27, 2025

Legger til at innloggingsdetaljer er i en usestate dersom det feiler slik at verdien beholdes


Motivasjon

Det er irriterende for brukeren å fylle inn alt på nytt dersom de skriver inn en liten ting feil, dette skal hjelpe.

Endringer

Lagt inn state som passer på epost, passord og repeat passord dersom aktiviteten (innlogging eller opprettelse av ny konto) feiler. Verdiene resettes til tom streng on submit slik at de blir fjernet dersom aktiviteten går gjennom.

Spurte litt rundt om det er usikkert å gjøre det på denne måten men vet ikke helt:)))

Før Etter
image image
image image
image image

Sjekkliste for Review

  • Sjekk at dersom du skriver inn feil passord så beholdes innholdet ved innlogging
  • Sjekk at dersom du skriver inn to ulike passord så beholdes innholdet ved opprettelse av ny konto

@astoervold astoervold requested a review from emilielr as a code owner March 27, 2025 13:18
Comment on lines +29 to +31
const [email, setEmail] = useState('')
const [password, setPassword] = useState('')
const [repeat, setRepeat] = useState('')
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ikke kjempeflink på best practice her, men kunne det potensielt vært like bra å bare persiste e-post og ikke passord? Så unngår vi å lagre passordet i en state? Aner ikke om det er et stort sikkerhetshull eller ei

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sånn sett ja - det kan jo være en fin mellomting? At man kun persister e-post og ikke passord i state. Men jeg tror egentlig ikke at det er så farlig. Den vanligste måten å håndtere states i form og validere states i forms, er via useState, og den ligger jo ikke "lagret" noen plass - den fjernes jo når formet submittes inn.

Copy link
Collaborator

@emilielr emilielr left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hadde en del kommentarer som kanskje kan gjøre ting litt smudere, men kan godt sitte å parprogge på denne siden hvis du vil :D

@@ -26,12 +26,23 @@ import { handleError } from 'app/(admin)/utils/handleError'
import Google from './Google'

function Create() {
const [email, setEmail] = useState('')
const [password, setPassword] = useState('')
const [repeat, setRepeat] = useState('')
const submit = async (p: TFormFeedback | undefined, data: FormData) => {
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pirk, kan vi kalle p for previousState så er det likt med de andre? Evt prevState


setEmail('')
setPassword('')
setRepeat('')
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Er dette nødvendig? 🤔

@@ -69,6 +83,7 @@ function Create() {
name="email"
label="E-post"
type="email"
defaultValue={email}
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Jeg lurer på om det er bedre å skrive det som dette:


                        value={email}
                        onChange={(e) => setEmail(e.target.value)}

Da får man oppdatert staten samtidig som bruker skriver inn, og man slipper å sette en client-state i en server-action som man gjør på linje 41-42

setEmail('')
setPassword('')
setRepeat('')
if (password !== repeat) {
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Vi har faktisk ikke en sjekk på om password eller repeat er undefined, det burde vi kanskje ha.

Hvis man nå prøver å trykke "opprett" uten å skrive inn passord eller gjenta passord, så får vi den generelle feilen. Det burde vel heller være en "skriv inn passord"-melding

const submit = async (
previousState: TFormFeedback | undefined,
data: FormData,
) => {
const email = data.get('email') as string
const password = data.get('password') as string

setEmail('')
setPassword('')

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Samme her

@@ -92,6 +104,7 @@ function Email() {
name="email"
label="E-post"
type="email"
defaultValue={email}
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Kan man heller bruke value og onChange?

@astoervold astoervold changed the title fix(missing-credentials): login credentials stay on error fix(landing): login credentials stay on error Apr 1, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants