---
# System prepended metadata

title: HJ AUth sequence

---

# HJ AUth sequence

Na pewno od BankID
- uid
- firstName
- lastName
- nationalID


```plantuml
@startuml

actor Front as f
boundary Backend as b
entity BankID as bid


bid -> f: autentykacja bankID

 f -> f : user "jedzie" na pustym, nowym użytkowniku

f -> f : wyświetla formularz (nr tel, email)

f -> b : submit formularza (M: updateUser)

b -> b : wypieprza się walidacja

b -> b : sprawdza email i nrTel z istniejącymi userami

b -> b : wysyła SMS OTP



@enduml
```


## TODO

- [ ] dodać do UPdateUser skipEmailValidation i skipPhoneValidation









## Dedykowana mutacja
inputy: 
 - sesja BankID (current_user)
 - nr telefonu
 - email 


co robi?
 sprawdza czy user z tym numerem telefonu już jest w bazie (inny niż current_user)
 jeśli jest to current user to -> proceed
 
 decyduje czy
     - wysyłać OTP
     - lub updateować current_usera (danymi z formularza)
     
zwraca info dla frontu
    next_step: otp_input lub
    next_step: proceed
    

## Zmiany w SignInOtp

przyrzeźbić

- dodać param opcjonalny : bool `mergeAccounts`

obsłużyć taką możliwość, że jak true i OTP verification successful to
 paramsy currentUsera (ten z BankID) są przeszczepiane do usera zweryfikowanego OTP (co już wcześniej był istniał)
 
- i zdropować starego usera (soft Delete)