Files
GameTime/server/lib/infrastructure/security/token_service.dart
Blomios 7b122d03da feat(server): auth comptes utilisateurs et tokens API (ticket #48)
Ajoute la couche application (ports, use cases), les entités du
domaine, l'endpoint api/auth_api.dart (register/login/logout) et son
câblage dans le router, le hashing de mot de passe et le service de
token (infrastructure/security), et l'adapter Postgres des repositories
d'auth s'appuyant sur la table users du ticket #49. dart pub get OK,
dart analyze clean, dart test 10/10 vert (test PostgreSQL réel skip
faute de Docker disponible dans ce sandbox). Logique d'auth et
middleware testés via repositories fake en mémoire ; les endpoints
HTTP register/login/logout n'ont pas pu être exercés de bout en bout
faute d'accès à un vrai PostgreSQL local.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-19 10:15:34 +02:00

26 lines
646 B
Dart

import 'dart:convert';
import 'dart:math';
import 'package:crypto/crypto.dart';
import '../../application/application.dart';
final class SecureOpaqueTokenService implements OpaqueTokenService {
SecureOpaqueTokenService({this.byteLength = 32, Random? random})
: _random = random ?? Random.secure();
final int byteLength;
final Random _random;
@override
String generateToken() {
final bytes = List<int>.generate(byteLength, (_) => _random.nextInt(256));
return base64UrlEncode(bytes).replaceAll('=', '');
}
@override
String hashToken(String token) {
return sha256.convert(utf8.encode(token)).toString();
}
}