create admin
This commit is contained in:
parent
7454842bf8
commit
deb4b0509b
65
cmd/party/create_admin.go
Normal file
65
cmd/party/create_admin.go
Normal file
@ -0,0 +1,65 @@
|
|||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"flag"
|
||||||
|
"fmt"
|
||||||
|
"os"
|
||||||
|
|
||||||
|
"party.at/party/cmd/party/common"
|
||||||
|
"party.at/party/internal/data"
|
||||||
|
)
|
||||||
|
|
||||||
|
func runCreateAdmin(args []string) {
|
||||||
|
fs := flag.NewFlagSet("create-admin", flag.ExitOnError)
|
||||||
|
email := fs.String("email", "", "Admin email (required)")
|
||||||
|
password := fs.String("password", "", "Admin password (required)")
|
||||||
|
name := fs.String("name", "", "Admin name (required)")
|
||||||
|
fs.Parse(args)
|
||||||
|
|
||||||
|
if *email == "" || *password == "" || *name == "" {
|
||||||
|
fmt.Fprintln(os.Stderr, "usage: party create-admin -email EMAIL -password PASSWORD -name NAME")
|
||||||
|
os.Exit(1)
|
||||||
|
}
|
||||||
|
|
||||||
|
var cfg common.Config
|
||||||
|
cfg.DB.DSN = os.Getenv("PARTY_DB_DSN")
|
||||||
|
cfg.DB.MaxOpenConns = 5
|
||||||
|
cfg.DB.MaxIdleConns = 5
|
||||||
|
cfg.DB.MaxIdleTime = "15m"
|
||||||
|
|
||||||
|
db, err := openDB(cfg)
|
||||||
|
if err != nil {
|
||||||
|
fmt.Fprintf(os.Stderr, "db: %v\n", err)
|
||||||
|
os.Exit(1)
|
||||||
|
}
|
||||||
|
defer db.Close()
|
||||||
|
|
||||||
|
models := data.NewModels(db)
|
||||||
|
|
||||||
|
user := &data.User{
|
||||||
|
Email: *email,
|
||||||
|
Name: *name,
|
||||||
|
Activated: true,
|
||||||
|
}
|
||||||
|
|
||||||
|
userIdentity := &data.UserIdentity{
|
||||||
|
ProviderID: int64(data.ProviderLocal),
|
||||||
|
ProviderUserID: *email,
|
||||||
|
}
|
||||||
|
if err := userIdentity.Password.Set(*password); err != nil {
|
||||||
|
fmt.Fprintf(os.Stderr, "password: %v\n", err)
|
||||||
|
os.Exit(1)
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := models.Users.ExecuteRegistrationTx(user, userIdentity); err != nil {
|
||||||
|
fmt.Fprintf(os.Stderr, "create user: %v\n", err)
|
||||||
|
os.Exit(1)
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := models.Roles.AssignToUser(user.ID, data.RoleAdmin); err != nil {
|
||||||
|
fmt.Fprintf(os.Stderr, "assign role: %v\n", err)
|
||||||
|
os.Exit(1)
|
||||||
|
}
|
||||||
|
|
||||||
|
fmt.Printf("created admin: id=%d email=%s\n", user.ID, user.Email)
|
||||||
|
}
|
||||||
@ -41,6 +41,11 @@ var upgrader = websocket.Upgrader{
|
|||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
|
||||||
|
if len(os.Args) > 1 && os.Args[1] == "create-admin" {
|
||||||
|
runCreateAdmin(os.Args[2:])
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
var cfg common.Config
|
var cfg common.Config
|
||||||
|
|
||||||
flag.IntVar(&cfg.Port, "port", 4100, "API server port")
|
flag.IntVar(&cfg.Port, "port", 4100, "API server port")
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user