mirror of
https://code.briarproject.org/briar/briar.git
synced 2026-02-12 10:49:06 +01:00
Allow account creation and reading password from STDIN
This commit is contained in:
@@ -0,0 +1,105 @@
|
||||
package org.briarproject.briar.headless;
|
||||
|
||||
import org.briarproject.bramble.api.account.AccountManager;
|
||||
import org.briarproject.bramble.api.lifecycle.LifecycleManager;
|
||||
import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
|
||||
|
||||
import java.io.Console;
|
||||
import java.util.Scanner;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import javax.annotation.ParametersAreNonnullByDefault;
|
||||
import javax.inject.Inject;
|
||||
|
||||
import static java.lang.System.console;
|
||||
import static java.lang.System.err;
|
||||
import static java.lang.System.exit;
|
||||
import static java.lang.System.out;
|
||||
import static java.util.logging.Logger.getLogger;
|
||||
import static org.briarproject.bramble.api.identity.AuthorConstants.MAX_AUTHOR_NAME_LENGTH;
|
||||
|
||||
@MethodsNotNullByDefault
|
||||
@ParametersAreNonnullByDefault
|
||||
public class BriarService {
|
||||
|
||||
private final static Logger LOG = getLogger(BriarService.class.getName());
|
||||
|
||||
private final AccountManager accountManager;
|
||||
private final LifecycleManager lifecycleManager;
|
||||
|
||||
@Inject
|
||||
public BriarService(AccountManager accountManager,
|
||||
LifecycleManager lifecycleManager) {
|
||||
this.accountManager = accountManager;
|
||||
this.lifecycleManager = lifecycleManager;
|
||||
}
|
||||
|
||||
public void start() {
|
||||
Console console = console();
|
||||
out.println("Welcome to Briar!\n");
|
||||
|
||||
if (!accountManager.accountExists()) {
|
||||
if (console == null) {
|
||||
LOG.warning("No account found.");
|
||||
LOG.warning("Please start in terminal to set one up.");
|
||||
exit(1);
|
||||
}
|
||||
console.printf("No account found. Let's create one!\n\n");
|
||||
String nickname = createNickname(console);
|
||||
String password = createPassword(console);
|
||||
accountManager.createAccount(nickname, password);
|
||||
} else {
|
||||
out.print("Password: ");
|
||||
String password;
|
||||
if (console == null) {
|
||||
Scanner scanner = new Scanner(System.in);
|
||||
password = scanner.nextLine();
|
||||
} else {
|
||||
password = new String(console.readPassword());
|
||||
}
|
||||
if (!accountManager.signIn(password)) {
|
||||
err.println("Error: Password invalid");
|
||||
exit(1);
|
||||
}
|
||||
}
|
||||
assert accountManager.getDatabaseKey() != null;
|
||||
|
||||
lifecycleManager.startServices(accountManager.getDatabaseKey());
|
||||
}
|
||||
|
||||
private String createNickname(Console console) {
|
||||
String nickname;
|
||||
boolean error;
|
||||
do {
|
||||
nickname = console.readLine("Nickname: ");
|
||||
if (nickname.length() == 0) {
|
||||
console.printf("Please enter a nickname!\n");
|
||||
error = true;
|
||||
} else if (nickname.length() > MAX_AUTHOR_NAME_LENGTH) {
|
||||
console.printf("Please choose a shorter nickname!\n");
|
||||
error = true;
|
||||
} else {
|
||||
error = false;
|
||||
}
|
||||
} while (error);
|
||||
return nickname;
|
||||
}
|
||||
|
||||
private String createPassword(Console console) {
|
||||
String password;
|
||||
boolean error;
|
||||
do {
|
||||
password = new String(console.readPassword("Password: "));
|
||||
if (password.length() < 4) {
|
||||
console.printf(
|
||||
"Please enter a password with at least 4 characters!\n");
|
||||
error = true;
|
||||
// TODO enforce stronger password
|
||||
} else {
|
||||
error = false;
|
||||
}
|
||||
} while (error);
|
||||
return password;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,8 +1,5 @@
|
||||
package org.briarproject.briar.headless;
|
||||
|
||||
import org.briarproject.bramble.api.account.AccountManager;
|
||||
import org.briarproject.bramble.api.lifecycle.LifecycleManager;
|
||||
|
||||
import javax.inject.Inject;
|
||||
import javax.inject.Singleton;
|
||||
|
||||
@@ -11,28 +8,17 @@ import io.javalin.Javalin;
|
||||
@Singleton
|
||||
public class Router {
|
||||
|
||||
private final AccountManager accountManager;
|
||||
private final LifecycleManager lifecycleManager;
|
||||
private final BriarService briarService;
|
||||
private final ForumController forumController;
|
||||
|
||||
@Inject
|
||||
public Router(AccountManager accountManager,
|
||||
LifecycleManager lifecycleManager,
|
||||
ForumController forumController) {
|
||||
this.accountManager = accountManager;
|
||||
this.lifecycleManager = lifecycleManager;
|
||||
public Router(BriarService briarService, ForumController forumController) {
|
||||
this.briarService = briarService;
|
||||
this.forumController = forumController;
|
||||
}
|
||||
|
||||
public void start() {
|
||||
if (accountManager.accountExists()) {
|
||||
accountManager.signIn("test");
|
||||
} else {
|
||||
accountManager.createAccount("test", "test");
|
||||
}
|
||||
assert accountManager.getDatabaseKey() != null;
|
||||
|
||||
lifecycleManager.startServices(accountManager.getDatabaseKey());
|
||||
briarService.start();
|
||||
|
||||
Javalin app = Javalin.create()
|
||||
.port(7000)
|
||||
|
||||
Reference in New Issue
Block a user