diff --git a/console/console.go b/console/console.go index 1e40115..0d67807 100755 --- a/console/console.go +++ b/console/console.go @@ -28,12 +28,12 @@ func main() { // loop over arguments and exec all matching functions for _, v := range argsWithoutProg { switch v { - case "seed:adminuser": - log.Println("running seed:adminuser") - if err := console_helpers.SeedAdminUser(); err != nil { + case "create:adminuser": + log.Println("running create:adminuser") + if err := console_helpers.CreateAdminUser(); err != nil { log.Println(err) } else { - log.Println("success seed:adminuser") + log.Println("success create:adminuser") } case "migrate": log.Println("running migrate") @@ -59,7 +59,7 @@ func main() { func functions() { log.Println("") log.Println("Available commands:") - log.Println("seed:adminuser") + log.Println("create:adminuser") log.Println("fresh:database") log.Println("migrate") } diff --git a/console/helpers/CreateAdminUser.go b/console/helpers/CreateAdminUser.go new file mode 100644 index 0000000..01af34e --- /dev/null +++ b/console/helpers/CreateAdminUser.go @@ -0,0 +1,46 @@ +package console_helpers + +import ( + "bufio" + "ch/kirari04/videocms/helpers" + "ch/kirari04/videocms/inits" + "ch/kirari04/videocms/models" + "fmt" + "os" + "syscall" + + "golang.org/x/term" +) + +func CreateAdminUser() error { + reader := bufio.NewReader(os.Stdin) + + fmt.Print("Enter Username: ") + username, err := reader.ReadString('\n') + if err != nil { + return err + } + + fmt.Print("Enter Password: ") + bytePassword, err := term.ReadPassword(int(syscall.Stdin)) + if err != nil { + return err + } + + password := string(bytePassword) + + hash, _ := helpers.HashPassword(password) + if res := inits.DB.Create(&models.User{ + Username: username, + Hash: hash, + Admin: true, + Settings: models.UserSettings{ + WebhooksEnabled: true, + WebhooksMax: 10, + }, + }); res.Error != nil { + return fmt.Errorf("error while creating admin user: %s", res.Error.Error()) + } + + return nil +} diff --git a/console/helpers/FreshDatabase.go b/console/helpers/FreshDatabase.go index 91f4ad3..e2bbe09 100644 --- a/console/helpers/FreshDatabase.go +++ b/console/helpers/FreshDatabase.go @@ -20,9 +20,5 @@ func FreshDatabase() error { inits.Database() inits.Models() - if err := SeedAdminUser(); err != nil { - return err - } - return nil } diff --git a/console/helpers/SeedAdminUser.go b/console/helpers/SeedAdminUser.go deleted file mode 100644 index 6f58544..0000000 --- a/console/helpers/SeedAdminUser.go +++ /dev/null @@ -1,33 +0,0 @@ -package console_helpers - -import ( - "ch/kirari04/videocms/helpers" - "ch/kirari04/videocms/inits" - "ch/kirari04/videocms/models" - "fmt" -) - -func SeedAdminUser() error { - - if res := inits.DB. - Where(&models.User{Username: "admin"}). - Unscoped(). - Delete(&models.User{}); res.Error != nil { - return fmt.Errorf("error while deleting existing admin user: %s", res.Error.Error()) - } - - hash, _ := helpers.HashPassword("12345678") - if res := inits.DB.Create(&models.User{ - Username: "admin", - Hash: hash, - Admin: true, - Settings: models.UserSettings{ - WebhooksEnabled: true, - WebhooksMax: 10, - }, - }); res.Error != nil { - return fmt.Errorf("error while creating admin user: %s", res.Error.Error()) - } - - return nil -} diff --git a/go.mod b/go.mod index 238e151..fd5e782 100644 --- a/go.mod +++ b/go.mod @@ -8,6 +8,7 @@ require ( github.com/gofiber/template/html/v2 v2.0.5 github.com/golang-jwt/jwt/v5 v5.0.0 github.com/patrickmn/go-cache v2.1.0+incompatible + golang.org/x/term v0.13.0 gopkg.in/vansante/go-ffprobe.v2 v2.1.1 gorm.io/driver/sqlite v1.5.4 gorm.io/gorm v1.25.4 diff --git a/go.sum b/go.sum index 9128392..bb7e228 100644 --- a/go.sum +++ b/go.sum @@ -98,6 +98,8 @@ golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.3.0/go.mod h1:q750SLmJuPmVoN1blW3UFBPREJfb1KmY3vwxfr+nFDA= +golang.org/x/term v0.13.0 h1:bb+I9cTfFazGW51MZqBVmZy7+JEJMouUHTUSKVQLBek= +golang.org/x/term v0.13.0/go.mod h1:LTmsnFJwVN6bCy1rVCoS+qHT1HhALEFxKncY3WNNh4U= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=