summaryrefslogtreecommitdiffstats
path: root/cmd/commands/roles.go
diff options
context:
space:
mode:
Diffstat (limited to 'cmd/commands/roles.go')
-rw-r--r--cmd/commands/roles.go88
1 files changed, 88 insertions, 0 deletions
diff --git a/cmd/commands/roles.go b/cmd/commands/roles.go
new file mode 100644
index 000000000..bf7c39476
--- /dev/null
+++ b/cmd/commands/roles.go
@@ -0,0 +1,88 @@
+// Copyright (c) 2016-present Mattermost, Inc. All Rights Reserved.
+// See License.txt for license information.
+
+package commands
+
+import (
+ "errors"
+
+ "github.com/mattermost/mattermost-server/cmd"
+ "github.com/spf13/cobra"
+)
+
+var RolesCmd = &cobra.Command{
+ Use: "roles",
+ Short: "Management of user roles",
+}
+
+var MakeSystemAdminCmd = &cobra.Command{
+ Use: "system_admin [users]",
+ Short: "Set a user as system admin",
+ Long: "Make some users system admins",
+ Example: " roles system_admin user1",
+ RunE: makeSystemAdminCmdF,
+}
+
+var MakeMemberCmd = &cobra.Command{
+ Use: "member [users]",
+ Short: "Remove system admin privileges",
+ Long: "Remove system admin privileges from some users.",
+ Example: " roles member user1",
+ RunE: makeMemberCmdF,
+}
+
+func init() {
+ RolesCmd.AddCommand(
+ MakeSystemAdminCmd,
+ MakeMemberCmd,
+ )
+ cmd.RootCmd.AddCommand(RolesCmd)
+}
+
+func makeSystemAdminCmdF(command *cobra.Command, args []string) error {
+ a, err := cmd.InitDBCommandContextCobra(command)
+ if err != nil {
+ return err
+ }
+
+ if len(args) < 1 {
+ return errors.New("Enter at least one user.")
+ }
+
+ users := getUsersFromUserArgs(a, args)
+ for i, user := range users {
+ if user == nil {
+ return errors.New("Unable to find user '" + args[i] + "'")
+ }
+
+ if _, err := a.UpdateUserRoles(user.Id, "system_admin system_user", true); err != nil {
+ return err
+ }
+ }
+
+ return nil
+}
+
+func makeMemberCmdF(command *cobra.Command, args []string) error {
+ a, err := cmd.InitDBCommandContextCobra(command)
+ if err != nil {
+ return err
+ }
+
+ if len(args) < 1 {
+ return errors.New("Enter at least one user.")
+ }
+
+ users := getUsersFromUserArgs(a, args)
+ for i, user := range users {
+ if user == nil {
+ return errors.New("Unable to find user '" + args[i] + "'")
+ }
+
+ if _, err := a.UpdateUserRoles(user.Id, "system_user", true); err != nil {
+ return err
+ }
+ }
+
+ return nil
+}