78 lines
1.8 KiB
Go
78 lines
1.8 KiB
Go
package main
|
||
|
||
import (
|
||
"fmt"
|
||
"password/account"
|
||
"password/files"
|
||
"password/output"
|
||
|
||
"github.com/fatih/color"
|
||
)
|
||
|
||
func main() {
|
||
// fmt.Println(output.Sum(100, 42))
|
||
// fmt.Println(output.Sum(10.7, 3.14))
|
||
// fmt.Println(output.Sum("Hello ", "world!"))
|
||
fmt.Println("__Менеджер паролей__")
|
||
vault := account.NewVault(files.NewJsonDb("data.json"))
|
||
Menu:
|
||
for {
|
||
variant := getMenu()
|
||
switch variant {
|
||
case 1:
|
||
createAccount(vault)
|
||
case 2:
|
||
findAccount(vault)
|
||
case 3:
|
||
deleteAccount(vault)
|
||
default:
|
||
break Menu
|
||
}
|
||
}
|
||
}
|
||
|
||
func getMenu() int {
|
||
var variant int
|
||
fmt.Println("Выберите вариант:")
|
||
fmt.Println("1. Создать аккаунт")
|
||
fmt.Println("2. Найти аккаунт")
|
||
fmt.Println("3. Удалить аккаунт")
|
||
fmt.Println("4. Выход")
|
||
fmt.Scan(&variant)
|
||
return variant
|
||
}
|
||
|
||
func findAccount(vault *account.VaultWithDb) {
|
||
url := account.PromptData("Введите URL для поиска: ")
|
||
accounts := vault.FindAccountsByUrl(url)
|
||
if len(accounts) == 0 {
|
||
color.Red("Аккаунт не найден!")
|
||
}
|
||
for _, account := range accounts {
|
||
account.Output()
|
||
}
|
||
}
|
||
|
||
func deleteAccount(vault *account.VaultWithDb) {
|
||
url := account.PromptData("Введите URL для поиска: ")
|
||
isDeleted := vault.DeleteAccountByUrl(url)
|
||
if isDeleted {
|
||
color.Green("Удалено")
|
||
} else {
|
||
output.PrintError("Не найдено")
|
||
}
|
||
}
|
||
|
||
func createAccount(vault *account.VaultWithDb) {
|
||
login := account.PromptData("Введите логин: ")
|
||
password := account.PromptData("Введите пароль: ")
|
||
url := account.PromptData("Введите URL: ")
|
||
|
||
myAccount, err := account.NewAccount(login, password, url)
|
||
if err != nil {
|
||
output.PrintError("ОШИБКА: Неверный формат URL или Login")
|
||
return
|
||
}
|
||
vault.AddAccount(*myAccount)
|
||
}
|