mirror of
https://github.com/coder/coder.git
synced 2026-06-02 20:48:20 +00:00
feat: Add users create and list commands (#1111)
This allows for *extremely basic* user management.
This commit is contained in:
@@ -0,0 +1,90 @@
|
||||
package cli
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"github.com/go-playground/validator/v10"
|
||||
"github.com/spf13/cobra"
|
||||
"golang.org/x/xerrors"
|
||||
|
||||
"github.com/coder/coder/cli/cliui"
|
||||
"github.com/coder/coder/codersdk"
|
||||
"github.com/coder/coder/cryptorand"
|
||||
)
|
||||
|
||||
func userCreate() *cobra.Command {
|
||||
var (
|
||||
email string
|
||||
username string
|
||||
password string
|
||||
)
|
||||
cmd := &cobra.Command{
|
||||
Use: "create",
|
||||
RunE: func(cmd *cobra.Command, args []string) error {
|
||||
client, err := createClient(cmd)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
organization, err := currentOrganization(cmd, client)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if username == "" {
|
||||
username, err = cliui.Prompt(cmd, cliui.PromptOptions{
|
||||
Text: "Username:",
|
||||
})
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
if email == "" {
|
||||
email, err = cliui.Prompt(cmd, cliui.PromptOptions{
|
||||
Text: "Email:",
|
||||
Validate: func(s string) error {
|
||||
err := validator.New().Var(s, "email")
|
||||
if err != nil {
|
||||
return xerrors.New("That's not a valid email address!")
|
||||
}
|
||||
return err
|
||||
},
|
||||
})
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
if password == "" {
|
||||
password, err = cryptorand.StringCharset(cryptorand.Human, 12)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
_, err = client.CreateUser(cmd.Context(), codersdk.CreateUserRequest{
|
||||
Email: email,
|
||||
Username: username,
|
||||
Password: password,
|
||||
OrganizationID: organization.ID,
|
||||
})
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
_, _ = fmt.Fprintln(cmd.ErrOrStderr(), `A new user has been created!
|
||||
Share the instructions below to get them started.
|
||||
`+cliui.Styles.Placeholder.Render("—————————————————————————————————————————————————")+`
|
||||
Download the Coder command line for your operating system:
|
||||
https://github.com/coder/coder/releases
|
||||
|
||||
Run `+cliui.Styles.Code.Render("coder login "+client.URL.String())+` to authenticate.
|
||||
|
||||
Your email is: `+cliui.Styles.Field.Render(email)+`
|
||||
Your password is: `+cliui.Styles.Field.Render(password)+`
|
||||
|
||||
Create a workspace `+cliui.Styles.Code.Render("coder workspaces create")+`!`)
|
||||
return nil
|
||||
},
|
||||
}
|
||||
cmd.Flags().StringVarP(&email, "email", "e", "", "Specifies an email address for the new user.")
|
||||
cmd.Flags().StringVarP(&username, "username", "u", "", "Specifies a username for the new user.")
|
||||
cmd.Flags().StringVarP(&password, "password", "p", "", "Specifies a password for the new user.")
|
||||
return cmd
|
||||
}
|
||||
Reference in New Issue
Block a user