github.com/keybase/client/go@v0.0.0-20240520164431-4f512a4c85a3/client/cmd_team_edit_member.go (about) 1 // Copyright 2017 Keybase, Inc. All rights reserved. Use of 2 // this source code is governed by the included BSD license. 3 4 package client 5 6 import ( 7 "context" 8 9 "github.com/keybase/cli" 10 "github.com/keybase/client/go/libcmdline" 11 "github.com/keybase/client/go/libkb" 12 "github.com/keybase/client/go/protocol/chat1" 13 "github.com/keybase/client/go/protocol/keybase1" 14 ) 15 16 type CmdTeamEditMember struct { 17 libkb.Contextified 18 Team string 19 Username string 20 Role keybase1.TeamRole 21 BotSettings *keybase1.TeamBotSettings 22 } 23 24 func newCmdTeamEditMember(cl *libcmdline.CommandLine, g *libkb.GlobalContext) cli.Command { 25 cmd := cli.Command{ 26 Name: "edit-member", 27 ArgumentHelp: "<team name> --user=<username> --role=<owner|admin|writer|reader|bot|restrictedbot>", 28 Usage: "Change a user's role on a team.", 29 Action: func(c *cli.Context) { 30 cmd := &CmdTeamEditMember{Contextified: libkb.NewContextified(g)} 31 cl.ChooseCommand(cmd, "edit-member", c) 32 }, 33 Flags: []cli.Flag{ 34 cli.StringFlag{ 35 Name: "u, user", 36 Usage: "username", 37 }, 38 cli.StringFlag{ 39 Name: "r, role", 40 Usage: "team role (owner, admin, writer, reader, bot, restrictedbot)", 41 }, 42 }, 43 } 44 45 cmd.Flags = append(cmd.Flags, botSettingsFlags...) 46 return cmd 47 } 48 49 func NewCmdTeamEditMemberRunner(g *libkb.GlobalContext) *CmdTeamEditMember { 50 return &CmdTeamEditMember{Contextified: libkb.NewContextified(g)} 51 } 52 53 func (c *CmdTeamEditMember) ParseArgv(ctx *cli.Context) error { 54 var err error 55 c.Team, err = ParseOneTeamName(ctx) 56 if err != nil { 57 return err 58 } 59 60 c.Username, c.Role, err = ParseUserAndRole(ctx) 61 if err != nil { 62 return err 63 } 64 65 if c.Role.IsRestrictedBot() { 66 c.BotSettings = ParseBotSettings(ctx) 67 } 68 69 return nil 70 } 71 72 func (c *CmdTeamEditMember) Run() error { 73 cli, err := GetTeamsClient(c.G()) 74 if err != nil { 75 return err 76 } 77 78 if err := ValidateBotSettingsConvs(c.G(), c.Team, 79 chat1.ConversationMembersType_TEAM, c.BotSettings); err != nil { 80 return err 81 } 82 83 arg := keybase1.TeamEditMemberArg{ 84 Name: c.Team, 85 Username: c.Username, 86 Role: c.Role, 87 BotSettings: c.BotSettings, 88 } 89 90 if err = cli.TeamEditMember(context.Background(), arg); err != nil { 91 return err 92 } 93 94 dui := c.G().UI.GetDumbOutputUI() 95 dui.Printf("Success! %s's role in %s is now %s.\n", c.Username, c.Team, c.Role) 96 97 return nil 98 } 99 100 func (c *CmdTeamEditMember) GetUsage() libkb.Usage { 101 return libkb.Usage{ 102 Config: true, 103 API: true, 104 KbKeyring: true, 105 } 106 }