sojuctl: Add support for creating admin users

This adds a new flag, `-admin` for creating admin users, which can
access admin service commands, among which create-user to create other
users on-the-fly.

Since the person running the commands in the README will be the local
soju administrator, the user they create should be admin as well, hence
the README update.
This commit is contained in:
delthas 2020-06-07 01:32:50 +02:00 committed by Simon Ser
parent 5be25711c7
commit 21af06302a
2 changed files with 9 additions and 4 deletions

View File

@ -12,7 +12,7 @@ A user-friendly IRC bouncer.
## Usage
go run ./cmd/sojuctl create-user <username>
go run ./cmd/sojuctl create-user <username> -admin
go run ./cmd/soju -listen irc+insecure://127.0.0.1:6667
Then connect with username `<username>/chat.freenode.net` and join `#soju`.

View File

@ -15,9 +15,9 @@ import (
const usage = `usage: sojuctl [-config path] <action> [options...]
create-user <username> Create a new user
change-password <username> Change password for a user
help Show this help message
create-user <username> [-admin] Create a new user
change-password <username> Change password for a user
help Show this help message
`
func init() {
@ -55,6 +55,10 @@ func main() {
os.Exit(1)
}
fs := flag.NewFlagSet("", flag.ExitOnError)
admin := fs.Bool("admin", false, "make the new user admin")
fs.Parse(flag.Args()[2:])
password, err := readPassword()
if err != nil {
log.Fatalf("failed to read password: %v", err)
@ -68,6 +72,7 @@ func main() {
user := soju.User{
Username: username,
Password: string(hashed),
Admin: *admin,
}
if err := db.StoreUser(&user); err != nil {
log.Fatalf("failed to create user: %v", err)