38 lines
1,003 B
Dart
38 lines
1,003 B
Dart
|
import 'dart:convert';
|
||
|
import 'dart:io';
|
||
|
import 'package:args/command_runner.dart';
|
||
|
import 'package:random_string/random_string.dart' as rs;
|
||
|
|
||
|
class KeyCommand extends Command {
|
||
|
@override
|
||
|
String get name => 'key';
|
||
|
|
||
|
@override
|
||
|
String get description => 'Generates a new `angel_auth`key.';
|
||
|
|
||
|
@override
|
||
|
run() async {
|
||
|
var secret = rs.randomAlphaNumeric(32);
|
||
|
print('Generated new JWT secret: $secret');
|
||
|
await changeSecret(new File('config/default.yaml'), secret);
|
||
|
await changeSecret(new File('config/production.yaml'), secret);
|
||
|
}
|
||
|
|
||
|
changeSecret(File file, String secret) async {
|
||
|
if (await file.exists()) {
|
||
|
var sink = await file.openWrite();
|
||
|
|
||
|
await for (var chunk
|
||
|
in await file.openRead().transform(UTF8.decoder)) {
|
||
|
var lines = chunk.split('\n');
|
||
|
|
||
|
for (String line in lines) {
|
||
|
if (line.contains('jwt_secret:')) {
|
||
|
sink.writeln('jwt_secret: $secret');
|
||
|
} else sink.writeln(line);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|