|
|
@ -10,6 +10,7 @@ import ( |
|
|
|
"github.com/spf13/viper" |
|
|
|
|
|
|
|
"cygnux.net/kepler/config" |
|
|
|
"cygnux.net/kepler/misc" |
|
|
|
"cygnux.net/kepler/restlet" |
|
|
|
) |
|
|
|
|
|
|
@ -160,20 +161,139 @@ var delUserCmd = &cobra.Command{ |
|
|
|
}, |
|
|
|
} |
|
|
|
|
|
|
|
var modUserCmd = &cobra.Command{ |
|
|
|
Use: "mod_user", |
|
|
|
Short: "Modify User", |
|
|
|
Run: func(cmd *cobra.Command, args []string) { |
|
|
|
//name, _ := cmd.Flags().GetString("name")
|
|
|
|
//validateEmptyString(name, "name")
|
|
|
|
var updateMap = make(map[string]interface{}) |
|
|
|
remove, _ := cmd.Flags().GetBool("remove") |
|
|
|
password, _ := cmd.Flags().GetString("password") |
|
|
|
if password != "" { |
|
|
|
updateMap["password"] = misc.MD5Hash(password) |
|
|
|
} |
|
|
|
email, _ := cmd.Flags().GetString("email") |
|
|
|
if email != "" { |
|
|
|
updateMap["email"] = email |
|
|
|
} |
|
|
|
groups, _ := cmd.Flags().GetStringArray("groups") |
|
|
|
if len(args) < 1 { |
|
|
|
return |
|
|
|
} |
|
|
|
log.SetFormatter(&log.TextFormatter{}) |
|
|
|
cfg := config.MakeVConfig(viper.GetViper()) |
|
|
|
ctx, e := restlet.NewDummyContext(cfg) |
|
|
|
if nil != e { |
|
|
|
log.Errorln("> Setup Context failed:>", e) |
|
|
|
os.Exit(1) |
|
|
|
} |
|
|
|
session := xql.MakeSession(ctx.SQL(), "postgres", true) |
|
|
|
defer session.Close() |
|
|
|
if e := session.Begin(); nil != e { |
|
|
|
log.Errorln("> Session begin failed:>", e) |
|
|
|
os.Exit(1) |
|
|
|
} |
|
|
|
if len(updateMap) > 0 { |
|
|
|
for _, arg := range args { |
|
|
|
if e := ModUserProps(session, arg, updateMap); nil != e { |
|
|
|
die("ModUserProps failed:", e) |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
if len(groups) > 0 { |
|
|
|
for _, arg := range args { |
|
|
|
if e := ModUserGroups(session, arg, remove, groups...); nil != e { |
|
|
|
die("ModUserGroups failed:", e) |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
if e := session.Commit(); nil != e { |
|
|
|
_ = session.Rollback() |
|
|
|
log.Errorln("> Session commit failed:>", e) |
|
|
|
os.Exit(1) |
|
|
|
} |
|
|
|
}, |
|
|
|
} |
|
|
|
|
|
|
|
var modGroupCmd = &cobra.Command{ |
|
|
|
Use: "mod_group", |
|
|
|
Short: "Modify Group", |
|
|
|
Run: func(cmd *cobra.Command, args []string) { |
|
|
|
desc, _ := cmd.Flags().GetString("desc") |
|
|
|
//validateEmptyString(name, "name")
|
|
|
|
var updateMap = make(map[string]interface{}) |
|
|
|
remove, _ := cmd.Flags().GetBool("remove") |
|
|
|
roles, _ := cmd.Flags().GetStringArray("roles") |
|
|
|
if len(args) < 1 { |
|
|
|
return |
|
|
|
} |
|
|
|
if desc != "" { |
|
|
|
updateMap["desc"] = desc |
|
|
|
} |
|
|
|
log.SetFormatter(&log.TextFormatter{}) |
|
|
|
cfg := config.MakeVConfig(viper.GetViper()) |
|
|
|
ctx, e := restlet.NewDummyContext(cfg) |
|
|
|
if nil != e { |
|
|
|
log.Errorln("> Setup Context failed:>", e) |
|
|
|
os.Exit(1) |
|
|
|
} |
|
|
|
session := xql.MakeSession(ctx.SQL(), "postgres", true) |
|
|
|
defer session.Close() |
|
|
|
if e := session.Begin(); nil != e { |
|
|
|
log.Errorln("> Session begin failed:>", e) |
|
|
|
os.Exit(1) |
|
|
|
} |
|
|
|
if len(updateMap) > 0 { |
|
|
|
for _, arg := range args { |
|
|
|
if e := ModGroupProps(session, arg, updateMap); nil != e { |
|
|
|
die("ModGroupProps failed:", e) |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
if len(roles) > 0 { |
|
|
|
for _, arg := range args { |
|
|
|
if e := ModGroupPermissions(session, arg, remove, roles...); nil != e { |
|
|
|
die("ModGroupPermissions failed:", e) |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
if e := session.Commit(); nil != e { |
|
|
|
_ = session.Rollback() |
|
|
|
log.Errorln("> Session commit failed:>", e) |
|
|
|
os.Exit(1) |
|
|
|
} |
|
|
|
}, |
|
|
|
} |
|
|
|
|
|
|
|
var Command = &cobra.Command{ |
|
|
|
Use: "auth", |
|
|
|
Short: "User & Group managements", |
|
|
|
} |
|
|
|
|
|
|
|
func die(a ...interface{}) { |
|
|
|
fmt.Println(a...) |
|
|
|
os.Exit(1) |
|
|
|
} |
|
|
|
func init() { |
|
|
|
Command.AddCommand(addGroupCmd, addUserCmd, delGroupCmd, delUserCmd) |
|
|
|
|
|
|
|
addGroupCmd.Flags().StringP("name", "N", "", "Name of Group") |
|
|
|
addGroupCmd.Flags().StringP("desc", "C", "", "Comment of Group") |
|
|
|
addGroupCmd.Flags().StringArrayP("roles", "R", nil, "Roles of Group") |
|
|
|
|
|
|
|
modGroupCmd.Flags().StringP("desc", "C", "", "Comment of Group") |
|
|
|
modGroupCmd.Flags().StringArrayP("roles", "R", nil, "Roles of Group") |
|
|
|
modGroupCmd.Flags().Bool("remove", false, "Remove roles") |
|
|
|
|
|
|
|
addUserCmd.Flags().StringP("name", "N", "", "Name of User") |
|
|
|
addUserCmd.Flags().StringP("password", "P", "", "Password of User") |
|
|
|
addUserCmd.Flags().StringP("email", "M", "", "Email of User") |
|
|
|
addUserCmd.Flags().StringArrayP("groups", "G", nil, "Groups of User") |
|
|
|
|
|
|
|
modUserCmd.Flags().StringP("password", "P", "", "Password of User") |
|
|
|
modUserCmd.Flags().StringP("email", "M", "", "Email of User") |
|
|
|
modUserCmd.Flags().StringArrayP("groups", "G", nil, "Groups of User") |
|
|
|
modUserCmd.Flags().Bool("remove", false, "Remove from groups") |
|
|
|
|
|
|
|
Command.AddCommand(addGroupCmd, addUserCmd, delGroupCmd, delUserCmd, modUserCmd, modGroupCmd) |
|
|
|
} |