---
# System prepended metadata

title: Piccpec och persondataskydd

---

# 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. 