github.com/kotovmak/go-admin@v1.1.1/adm/add.go (about) 1 package main 2 3 import ( 4 "runtime" 5 "strings" 6 7 "github.com/kotovmak/go-admin/modules/auth" 8 "github.com/kotovmak/go-admin/modules/db" 9 "github.com/kotovmak/go-admin/modules/db/dialect" 10 "gopkg.in/ini.v1" 11 ) 12 13 func addUser(cfgFile string) { 14 15 clear(runtime.GOOS) 16 cliInfo() 17 18 var ( 19 driverName, host, port, dbFile, user, password, 20 database, schema, name, nickname, userPassword string 21 ) 22 23 if cfgFile != "" { 24 cfgModel, err := ini.Load(cfgFile) 25 26 if err != nil { 27 panic(newError("wrong config file path")) 28 } 29 30 languageCfg, err := cfgModel.GetSection("language") 31 32 if err == nil { 33 setDefaultLangSet(languageCfg.Key("language").Value()) 34 } 35 36 userCfg, err := cfgModel.GetSection("user") 37 38 if err == nil { 39 name = userCfg.Key("name").Value() 40 nickname = userCfg.Key("nickname").Value() 41 userPassword = userCfg.Key("password").Value() 42 } 43 44 dbCfgModel, exist := cfgModel.GetSection("database") 45 46 if exist == nil { 47 driverName = dbCfgModel.Key("driver").Value() 48 host = dbCfgModel.Key("host").Value() 49 user = dbCfgModel.Key("username").Value() 50 port = dbCfgModel.Key("port").Value() 51 dbFile = dbCfgModel.Key("file").Value() 52 password = dbCfgModel.Key("password").Value() 53 database = dbCfgModel.Key("database").Value() 54 } 55 } 56 57 conn := askForDBConnection(&dbInfo{ 58 File: dbFile, 59 DriverName: driverName, 60 Host: host, 61 Port: port, 62 User: user, 63 Password: password, 64 Schema: schema, 65 Database: database, 66 }) 67 68 if name == "" { 69 name = promptWithDefault("user login name", "") 70 } 71 72 if nickname == "" { 73 nickname = promptWithDefault("user nickname", "") 74 } 75 76 if userPassword == "" { 77 userPassword = promptWithDefault("user password", "") 78 } 79 80 checkExist, err := db.WithDriver(conn).Table("goadmin_users"). 81 Where("name", "=", name). 82 First() 83 84 if db.CheckError(err, db.QUERY) { 85 panic(err) 86 } 87 88 if checkExist != nil { 89 panic(newError("user record exists")) 90 } 91 92 _, err = db.WithDriver(conn).Table("goadmin_users"). 93 Insert(dialect.H{ 94 "name": name, 95 "username": nickname, 96 "password": auth.EncodePassword([]byte(userPassword)), 97 }) 98 99 if db.CheckError(err, db.INSERT) { 100 panic(err) 101 } 102 103 printSuccessInfo("Add admin user success~~🍺🍺") 104 } 105 106 func addPermission(cfgFile string) { 107 108 clear(runtime.GOOS) 109 cliInfo() 110 111 var ( 112 driverName, host, port, dbFile, user, password, 113 database, schema, tablesStr string 114 tables []string 115 ) 116 117 if cfgFile != "" { 118 cfgModel, err := ini.Load(cfgFile) 119 120 if err != nil { 121 panic(newError("wrong config file path")) 122 } 123 124 languageCfg, err := cfgModel.GetSection("language") 125 126 if err == nil { 127 setDefaultLangSet(languageCfg.Key("language").Value()) 128 } 129 130 userCfg, err := cfgModel.GetSection("permission") 131 132 if err == nil { 133 tablesStr = userCfg.Key("tables").Value() 134 } 135 136 if tablesStr != "" { 137 tables = strings.Split(strings.TrimSpace(tablesStr), ",") 138 } 139 140 dbCfgModel, exist := cfgModel.GetSection("database") 141 142 if exist == nil { 143 driverName = dbCfgModel.Key("driver").Value() 144 host = dbCfgModel.Key("host").Value() 145 user = dbCfgModel.Key("username").Value() 146 port = dbCfgModel.Key("port").Value() 147 dbFile = dbCfgModel.Key("file").Value() 148 password = dbCfgModel.Key("password").Value() 149 database = dbCfgModel.Key("database").Value() 150 } 151 } 152 153 conn := askForDBConnection(&dbInfo{ 154 File: dbFile, 155 DriverName: driverName, 156 Host: host, 157 Port: port, 158 User: user, 159 Password: password, 160 Schema: schema, 161 Database: database, 162 }) 163 164 if tablesStr == "" { 165 tablesStr = promptWithDefault("tables to generate, use comma to split", "") 166 } 167 168 if tablesStr == "" { 169 panic(newError("empty tables")) 170 } 171 172 tables = strings.Split(strings.TrimSpace(tablesStr), ",") 173 174 for _, table := range tables { 175 insertPermissionOfTable(conn, table) 176 } 177 178 printSuccessInfo("Add table permissions success~~🍺🍺") 179 } 180 181 func insertPermissionOfTable(conn db.Connection, table string) { 182 table = strings.ToLower(table) 183 insertPermissionInfoDB(conn, table+" "+getWord("Query"), table+"_query", "GET", "/info/"+table) 184 insertPermissionInfoDB(conn, table+" "+getWord("Show Edit Form Page"), table+"_show_edit", "GET", 185 "/info/"+table+"/edit") 186 insertPermissionInfoDB(conn, table+" "+getWord("Show Create Form Page"), table+"_show_create", "GET", 187 "/info/"+table+"/new") 188 insertPermissionInfoDB(conn, table+" "+getWord("Edit"), table+"_edit", "POST", 189 "/edit/"+table) 190 insertPermissionInfoDB(conn, table+" "+getWord("Create"), table+"_create", "POST", 191 "/new/"+table) 192 insertPermissionInfoDB(conn, table+" "+getWord("Delete"), table+"_delete", "POST", 193 "/delete/"+table) 194 insertPermissionInfoDB(conn, table+" "+getWord("Export"), table+"_export", "POST", 195 "/export/"+table) 196 } 197 198 func insertPermissionInfoDB(conn db.Connection, name, slug, httpMethod, httpPath string) { 199 checkExist, err := db.WithDriver(conn).Table("goadmin_permissions"). 200 Where("slug", "=", slug). 201 First() 202 203 if db.CheckError(err, db.QUERY) { 204 panic(err) 205 } 206 207 if checkExist != nil { 208 return 209 } 210 211 _, err = db.WithDriver(conn).Table("goadmin_permissions"). 212 Insert(dialect.H{ 213 "name": name, 214 "slug": slug, 215 "http_method": httpMethod, 216 "http_path": httpPath, 217 }) 218 219 if db.CheckError(err, db.INSERT) { 220 panic(err) 221 } 222 }