45 lines
1.5 KiB
Go
45 lines
1.5 KiB
Go
package main
|
||
|
||
import (
|
||
"flag"
|
||
"fmt"
|
||
"log"
|
||
|
||
"linux-auth/internal/db"
|
||
"linux-auth/internal/utils"
|
||
)
|
||
|
||
/**
|
||
* @brief CLI утилита для добавления нового пользователя в базу
|
||
*
|
||
* Позволяет добавлять пользователей интерактивно или через аргументы.
|
||
*/
|
||
func main() {
|
||
// ---------- Аргументы ----------
|
||
username := flag.String("username", "", "Логин нового пользователя")
|
||
password := flag.String("password", "", "Пароль нового пользователя")
|
||
dbPath := flag.String("db", "./data/users.db", "Путь к файлу базы данных")
|
||
flag.Parse()
|
||
|
||
// ---------- Проверка аргументов ----------
|
||
if *username == "" || *password == "" {
|
||
fmt.Println("Использование: go run cmd/add_user/main.go -username USER -password PASS [-db ./data/users.db]")
|
||
return
|
||
}
|
||
|
||
// ---------- Инициализация БД ----------
|
||
err := db.Init(*dbPath)
|
||
if err != nil {
|
||
log.Fatalf("Ошибка инициализации БД: %v\n", err)
|
||
}
|
||
defer db.Close()
|
||
|
||
// ---------- Создание пользователя ----------
|
||
hash := utils.HashPassword(*password)
|
||
err = db.CreateUser(*username, hash)
|
||
if err != nil {
|
||
log.Fatalf("Не удалось создать пользователя %s: %v\n", *username, err)
|
||
}
|
||
|
||
fmt.Printf("Пользователь %s успешно добавлен.\n", *username)
|
||
}
|