package user import ( "fmt" "github.com/spf13/cobra" "gitlab.c3sl.ufpr.br/tss24/useradm/internal/auth" "gitlab.c3sl.ufpr.br/tss24/useradm/internal/manage" "gitlab.c3sl.ufpr.br/tss24/useradm/pkg/utils" ) var GroupCmd = &cobra.Command{ Use: "group [username] [new-group]", Short: "Change a user's base group", Example: " useradm user group mvrp22 ppginf", Args: cobra.ExactArgs(2), RunE: groupUserCmd, } func init() { GroupCmd.Flags().BoolP("confirm", "y", false, "Skip confirmation prompt") } func groupUserCmd(cmd *cobra.Command, args []string) error { confirm, err := cmd.Flags().GetBool("confirm") if err != nil { return err } l, err := auth.ConnLDAP() if err != nil { return err } defer l.Close() // Locate returns a error if more than one user was found u, err := manage.Locate(l, args[0]) if err != nil { return err } groups, err := auth.GetAllGroupsLDAP(l) if err != nil { return err } // checks if group does in fact exist _, err = utils.GetGIDNumFromGID(groups, args[1]) if err != nil { return err } fmt.Printf("%v\n", u.FullToString()) utils.ConfirmationPrompt(confirm, "user group change") err = auth.ChangeBaseGroupLDAP(l, u.DN, args[1]) if err != nil { return err } fmt.Println("Base group updated!") return nil }