FBLA24/fbla-api/lib/create_first_user.dart

47 lines
1.2 KiB
Dart

import 'dart:math';
import 'dart:typed_data';
import 'package:argon2/argon2.dart';
import 'dart:io';
import 'package:postgres/postgres.dart';
String username = 'admin';
String password = 'password';
var r = Random.secure();
String randomSalt = String.fromCharCodes(List.generate(32, (index) => r.nextInt(33) + 89));
final salt = randomSalt.toBytesLatin1();
var parameters = Argon2Parameters(
Argon2Parameters.ARGON2_i,
salt,
version: Argon2Parameters.ARGON2_VERSION_10,
iterations: 2,
memoryPowerOf2: 16,
);
final postgres = PostgreSQLConnection(
Platform.environment['POSTGRES_ADDRESS']!,
int.parse(Platform.environment['POSTGRES_PORT']!),
'fbla',
username: Platform.environment['POSTGRES_USERNAME'],
password: Platform.environment['POSTGRES_PASSWORD'],
);
Future<void> main() async {
await postgres.open();
var argon2 = Argon2BytesGenerator();
argon2.init(parameters);
var passwordBytes = parameters.converter.convert(password);
var result = Uint8List(32);
argon2.generateBytes(passwordBytes, result);
var resultHex = result.toHexString();
postgres.query(
'''
INSERT INTO public.users (username, password_hash, salt)
VALUES ('$username', '$resultHex', '$randomSalt')
'''
);
}