57 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			57 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| // TODO: Replace this whole thing with a setup.php
 | |
| 
 | |
| function prompt($prompt) {
 | |
|     echo $prompt;
 | |
|     return trim(fgets(STDIN));
 | |
| }
 | |
| 
 | |
| function promptSilent($prompt = "Enter Password: ") {
 | |
|     if (strncasecmp(PHP_OS, 'WIN', 3) === 0) {
 | |
|         // Windows doesn't support shell-based hidden input
 | |
|         echo "Warning: Password input not hidden on Windows.\n";
 | |
|         return prompt($prompt);
 | |
|     } else {
 | |
|         // Use shell to disable echo for password input
 | |
|         echo $prompt;
 | |
|         system('stty -echo');
 | |
|         $password = rtrim(fgets(STDIN), "\n");
 | |
|         system('stty echo');
 | |
|         echo "\n";
 | |
|         return $password;
 | |
|     }
 | |
| }
 | |
| 
 | |
| $dbFile = __DIR__ . '/tkr.sqlite';
 | |
| 
 | |
| try {
 | |
|     $pdo = new PDO("sqlite:$dbFile");
 | |
|     $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
 | |
| } catch (PDOException $e) {
 | |
|     die("Could not connect to DB: " . $e->getMessage() . "\n");
 | |
| }
 | |
| 
 | |
| $pdo->exec("CREATE TABLE IF NOT EXISTS user (
 | |
|     id INTEGER PRIMARY KEY AUTOINCREMENT,
 | |
|     username TEXT UNIQUE NOT NULL,
 | |
|     password_hash TEXT NOT NULL
 | |
| )");
 | |
| 
 | |
| $username = prompt("Enter username: ");
 | |
| $password = promptSilent("Enter password: ");
 | |
| $confirm  = promptSilent("Confirm password: ");
 | |
| 
 | |
| if ($password !== $confirm) {
 | |
|     die("Error: Passwords do not match.\n");
 | |
| }
 | |
| 
 | |
| $passwordHash = password_hash($password, PASSWORD_DEFAULT);
 | |
| 
 | |
| try {
 | |
|     $stmt = $pdo->prepare("INSERT INTO user(username, password_hash) VALUES (?, ?)");
 | |
|     $stmt->execute([$username, $passwordHash]);
 | |
|     echo "User '$username' created successfully.\n";
 | |
| } catch (PDOException $e) {
 | |
|     echo "Failed to create user: " . $e->getMessage() . "\n";
 | |
| }
 |