API v1

Login — iOS

LoginViewController · login/options · login/Model Equivalente Android: LoginFragment

Tela de entrada do app iOS. Reproduz fielmente o fluxo do Android: autenticação por senha (JWT), biometria FaceID/TouchID, OTP por SMS e seleção de empresa com resolução de permissões.

Arquivos

login/
├── LoginViewController.swift          · UI principal + ações de botão
├── LoginViewControllerTest.swift      · testes manuais / mocks
├── options/                            · biometria, lembrar senha, OTP
└── Model/                              · DTOs do payload de login

Fluxo de Autenticação

1

POST /v1/auth/login

Body: { "username": ..., "password": ... }. Retorna jwt_token, user_id, lista de empresas e árvore de permissões.

2

Seleção de empresa

Se houver múltiplas empresas, exibe modal de seleção. O company_id escolhido é persistido em UserDefaults (chave selected_company).

3

Resolução de permissões

Mesma lógica do Android — combina permissões do usuário com as do setor para a empresa selecionada. Resultado salvo em UserDefaults como perms_user (Array<String>).

4

Navegação

Apresenta HomeViewController via UINavigationController ou substituição do root da window.

Funcionalidades

FeatureImplementação iOS
SenhaPOST /v1/auth/login via URLSession
BiometriaLAContext + JWT salvo no Keychain
OTP / SMSSub-fluxo em options/ — envia código, valida e gera access token
Seleção de empresaModal customizado, persiste selected_company em UserDefaults
Lembrar senhaFlag em UserDefaults + Keychain para credenciais
Permissão de localizaçãoDiálogo de Prominent Disclosure antes de CLLocationManager.requestWhenInUseAuthorization()

Persistência

StorageChaveConteúdo
Keychainjwt_tokenBearer JWT (acesso seguro p/ biometria)
UserDefaultsperms_userArray de IDs de permissão
UserDefaultsselected_companycompany_id ativo
UserDefaultsuser_id, master, driverPapel e flags

Endpoints

POST/v1/auth/login
Autenticação principal — retorna JWT + dados de empresas/permissões.
POST/v1/auth/generate_access_token
Geração do JWT após validação OTP.
POST/v1/auth/refresh
Renovação automática do JWT no fluxo biométrico.