fix(singleuser): should not print pwd if it is specified

This commit is contained in:
hexxa 2020-12-06 18:07:50 +08:00
parent 24adbcbe63
commit 30a04d9130
2 changed files with 21 additions and 24 deletions

View file

@ -1,8 +1,6 @@
package singleuserhdr package singleuserhdr
import ( import (
"crypto/rand"
"crypto/sha1"
"errors" "errors"
"fmt" "fmt"
"time" "time"
@ -60,30 +58,11 @@ func (h *SimpleUserHandlers) IsInited() bool {
return ok return ok
} }
func generatePwd() (string, error) {
size := 10
buf := make([]byte, size)
size, err := rand.Read(buf)
if err != nil {
return "", err
}
return fmt.Sprintf("%x", sha1.Sum(buf[:size]))[:8], nil
}
func (h *SimpleUserHandlers) Init(userName, pwd string) (string, error) { func (h *SimpleUserHandlers) Init(userName, pwd string) (string, error) {
if userName == "" { if userName == "" {
return "", errors.New("user name can not be empty") return "", errors.New("user name can not be empty")
} }
var err error
if pwd == "" {
tmpPwd, err := generatePwd()
if err != nil {
return "", err
}
pwd = tmpPwd
}
pwdHash, err := bcrypt.GenerateFromPassword([]byte(pwd), 10) pwdHash, err := bcrypt.GenerateFromPassword([]byte(pwd), 10)
if err != nil { if err != nil {
return "", err return "", err

View file

@ -3,6 +3,7 @@ package server
import ( import (
"context" "context"
"crypto/rand" "crypto/rand"
"crypto/sha1"
"fmt" "fmt"
"net/http" "net/http"
"time" "time"
@ -96,18 +97,24 @@ func initHandlers(router *gin.Engine, cfg gocfg.ICfg, deps *depidx.Deps) (*gin.E
if cfg.BoolOr("Users.EnableAuth", true) && !userHdrs.IsInited() { if cfg.BoolOr("Users.EnableAuth", true) && !userHdrs.IsInited() {
adminName, ok := cfg.String("ENV.DEFAULTADMIN") adminName, ok := cfg.String("ENV.DEFAULTADMIN")
if !ok || adminName == "" { if !ok || adminName == "" {
// TODO: print sceen only fmt.Print("Please input admin name: ")
fmt.Println("Please input admin name:")
fmt.Scanf("%s", &adminName) fmt.Scanf("%s", &adminName)
} }
adminPwd, _ := cfg.String("ENV.DEFAULTADMINPWD") adminPwd, _ := cfg.String("ENV.DEFAULTADMINPWD")
if adminPwd == "" {
adminPwd, err = generatePwd()
if err != nil {
return nil, err
}
fmt.Printf("password is generated: %s, please update it after login\n", adminPwd)
}
adminPwd, err := userHdrs.Init(adminName, adminPwd) adminPwd, err := userHdrs.Init(adminName, adminPwd)
if err != nil { if err != nil {
return nil, err return nil, err
} }
fmt.Printf("%s is created, its password is %s, please update it after login\n", adminName, adminPwd) fmt.Printf("user (%s) is created\n", adminName)
} }
fileHdrs, err := fileshdr.NewFileHandlers(cfg, deps) fileHdrs, err := fileshdr.NewFileHandlers(cfg, deps)
@ -173,3 +180,14 @@ func makeRandToken() string {
} }
return string(b) return string(b)
} }
func generatePwd() (string, error) {
size := 10
buf := make([]byte, size)
size, err := rand.Read(buf)
if err != nil {
return "", err
}
return fmt.Sprintf("%x", sha1.Sum(buf[:size]))[:6], nil
}