dart-mobile-authentication

Biblioteca que padroniza a comunicação com os serviços de autenticação móvel do ecossistema Senior, permitindo identificar colaboradores, verificar permissões e sincronizar dados de dispositivos para aplicações de ponto eletrônico.

Recursos principais

  • Integrações prontas com os endpoints oficiais de autenticação e autorização.
  • DTOs e enums tipados para todas as operações suportadas pela API.
  • Atualização de informações do dispositivo com tratamento de erros especializado.
  • Estrutura preparada para clientes HTTP customizados (injeção de dependências).

Pré-requisitos

  • Dart SDK >=3.0.0 <4.0.0.
  • Flutter (opcional) configurado com fvm, caso utilize os comandos sugeridos de testes.
  • Token válido emitido pela plataforma Senior para consumo das APIs protegidas.

Instalação

Adicione o pacote ao pubspec.yaml do seu projeto:

dependencies:
  mobile_authentication:
    git:
      url: https://git.senior.com.br/gestao-ponto/dart-mobile-authentication.git

Em seguida execute:

dart pub get

Uso básico

import 'package:http/http.dart' as http_client;
import 'package:mobile_authentication/mobile_authentication_service.dart';

void main() async {
  const token = 'Bearer {SEU_TOKEN}';

  final httpClient = CustomHttpClient(http_client.Client(), token);
  final authService = MobileAuthenticationService(httpClient: httpClient);

  final device = DeviceInfo(
    name: '{NOME}',
    identifier: '{IDENTIFICADOR}',
    model: '{MODELO}',
  );

  final login = await authService.getMobileLogin(
    device,
    Environment.dev,
    token,
  );

  final permissions = AuthorizationPermissions(permissions: [
    AuthorizationParameter(
      resource: 'res://senior.com.br/hcm/pontomobile/administrator',
      action: 'Permitir',
    ),
  ]);

  final authorization = await authService.getAuthorization(
    permissions,
    Environment.dev,
  );

  print(login.toJson());
  print(authorization.toJson());
}

class CustomHttpClient extends http_client.BaseClient {
  CustomHttpClient(this._inner, this._token);

  final http_client.Client _inner;
  final String _token;

  @override
  Future<http_client.StreamedResponse> send(http_client.BaseRequest request) {
    request.headers['Authorization'] = _token;
    return _inner.send(request);
  }
}

Consulte a pasta example/ para um fluxo completo, incluindo configurações de HttpOverrides em ambientes de homologação.

Configurações de ambiente

Utilize o enum Environment para direcionar as chamadas para o ambiente desejado (dev, hml, prod). Certifique-se de utilizar o token correspondente ao ambiente selecionado.

Erros e exceções

As principais exceções lançadas ficam em src/exception/ (por exemplo InvalidTokenException, ServiceException, UnauthorizedException). Faça o tratamento adequado no seu código para garantir uma boa experiência ao usuário.

Comandos úteis

  • Executar testes unitários e gerar coverage/lcov.info:
    fvm flutter test --coverage
    
  • Gerar os arquivos .g.dart criados pelo json_serializable:
    dart run build_runner build --delete-conflicting-outputs
    

Contribuindo

Antes de abrir um merge request:

  • Leia o guia CONTRIBUTING.md para seguir os padrões de desenvolvimento.
  • Respeite as regras de lint presentes em analysis_options.yaml.
  • Garanta que testes e geração de código estejam atualizados.

Suporte

Em caso de dúvidas, entre em contato com a equipe mantenedora listada no CONTRIBUTING.md ou abra uma issue no repositório interno.