-
-
Notifications
You must be signed in to change notification settings - Fork 7
/
login.go
85 lines (78 loc) · 1.57 KB
/
login.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
package login
import (
"fmt"
"log"
"syscall"
"github.com/sikalabs/slu/cmd/root"
"github.com/sikalabs/slu/config"
"github.com/sikalabs/slu/utils/vault_utils"
"golang.org/x/crypto/ssh/terminal"
"github.com/spf13/cobra"
)
var FlagUrl string
var FlagUsename string
var FlagPassword string
var Cmd = &cobra.Command{
Use: "login",
Short: "Login to slu vault",
Args: cobra.NoArgs,
Run: func(c *cobra.Command, args []string) {
co := config.ReadConfig()
co.SluVault.Url = FlagUrl
co.SluVault.User = FlagUsename
config.WriteConfig(co)
client, err := vault_utils.GetClient(FlagUrl)
if err != nil {
log.Fatalln(err)
}
password := FlagPassword
if password == "" {
fmt.Print("Password: ")
passwordBytes, err := terminal.ReadPassword(int(syscall.Stdin))
if err != nil {
log.Fatalln(err)
}
fmt.Print("\n")
password = string(passwordBytes)
}
token, err := vault_utils.GetTokenFromUserpass(client, FlagUsename, password)
if err != nil {
log.Fatalln(err)
}
se := config.ReadSecrets()
se.SluVault.Token = token
config.WriteSecrets(se)
fmt.Println("Success!")
},
}
func init() {
co := config.ReadConfig()
root.RootCmd.AddCommand(Cmd)
Cmd.Flags().StringVarP(
&FlagUrl,
"url",
"U",
co.SluVault.Url,
"Vault URL",
)
if co.SluVault.Url == "" {
Cmd.MarkFlagRequired("url")
}
Cmd.Flags().StringVarP(
&FlagUsename,
"user",
"u",
co.SluVault.User,
"Vault username",
)
if co.SluVault.User == "" {
Cmd.MarkFlagRequired("user")
}
Cmd.Flags().StringVarP(
&FlagPassword,
"password",
"p",
"",
"Vault password",
)
}