# Piccpec och persondataskydd
Tre punkter för app :
* Användaren är knuten till en device
* Sker vid första inloggning och "övervakas" vid besök
* DeviceId skickas med som header-värde vid varje androp som kräver auth
* Kryptera data som ej skickats upp
* Skriver en wraper kring playerPrefs som kryperar de strängar vi skriver till devicen
* Gömmer en krypteringsnyckel i koden
* Varje gång appen startas/återuptas på telefonen så kräver vi en pinkod för att appen skall gå att använda
* Pinkoden skickas med userobjektet vid inloggning och sparas i playerPrefs
# implementationskrav
POST /Login
Skicka upp deviceID
Ta emot pin
GET /Me
Ta emot pin
Hasha pin i prefs?
# BE Endpoints för Admin
[POST] /admin/app-users/{id}/reset-device-id
[POST] /admin/app-users/{id}/reset-pin
Payload: {
"pin": "1234"
}
[POST] /admin/admin-users/{id}/create-twofactor-code
Skicka med en kod i response för att i adminverktyget generera en qrkod for att sätta upp en Authenticator app.
[POST] /admin/validate-twofactor-code
Här skickas användarens bearer token med i headers. Efter man loggat in med användarnamn och lösenord kommer en ny prompt där detta request ska skickas till BE.
# Estimat (78h)
## App (41h)
UI för inmating av PIN-kod: 8h
Mockups?: 1h
Kryptering av lokal data: 8h
Device ID låsning: 16h
System för pinkod: 8h
## Admin (16h)
Ange 2fa-kod: 5h
Visa qrkod: 5h
Återställ device id: 2h
Återställ pin: 2h
Visa nuvarande pin: 2h
## Backend (21h)
Utökad auth med deviceID i header för patienter: 4h
Hantera deviceID i payload vid inloggning: 4h
Validera 2fa-kod: 4h
Skapa 2fa-kod: 4h
Lägg till pin i /me reponse: 1h
Återställa pin: 2h
Lagra deviceID: 1h
Rensa deviceID (tillåt ny enhet vid nästa inloggning): 1h
## Test?
Fråga Agnes
Multifaktor
Https för kommunikation går bra.
Loggning.
Har vi olika Admins.
Pinkod
Telefon
websso
Användarnamn och lösenord
Pinkod i appen
Lås till telefonensID
Kryptering
Admin genererar pinkod som sätts på user-objektet.
Första gången användaren loggar in så skickar vi med deviceID.
Användaren kommer inte kunna logga in fler gånger efter det utan att deviceID återställs av admin.
Skicka med deviceID som header vid varje anrop för patienter till backend.
Kryptera player-prefs-värden efter serializering/ innan deserializering.