基于Gin开发的后台脚手架,集成了、数据库操作、日志管理、权限分配管理、多模板页面、自动分页器、数据库迁移和填充、Docker集成部署等功能、静态资源打包
MIT License
GingowebGinAdmin star
✅
✅
✅
✅
✅Docker
✅
✅
✅API JWT
✅redis
✅HTTP
🔲
🔲csrf
🔲
git
git clone https://github.com/gphper/ginadmin.git
go mod download
configs/config.yaml
mysql:
- name: "default"
username: "root"
password: "123456"
database: "db_ginadmin"
host: "127.0.0.1"
port: 3306
max_open_conn: 50
max_idle_conn: 20
redis:
addr: "localhost:6379"
db: 0
password: ""
session:
session_name: "gosession_id"
base:
host: 0.0.0.0
port: 20011
log_media: "redis"
go run .\cmd\ginadmin
http://localhost:/admin/loginadmin 111111
vscode launch.json
{
"version": "0.2.0",
"configurations": [
{
"name": "ginadmin",
"type": "go",
"request": "launch",
"mode": "debug",
"program": "${workspaceRoot}/cmd/ginadmin",
"trace": true,
"args":[
"--root_path=${workspaceRoot}"
],
}
}
conf
mysql:
- name: "default"
username: "docker"
password: "123456"
database: "docker_mysql"
host: "localmysql"
port: 3306
max_open_conn: 50
max_idle_conn: 20
redis:
addr: "localredis:6379"
db: 0
password: "ginadmin"
session:
session_name: "gosession_id"
base:
host: 0.0.0.0
port: 20010
log_media: "redis"
docker-compose up -d
docker exec -it ginadmin-web bash
go mod tidy
go run ./cmd/ginadmin/ run
http://localhost:20010/admin/login
redis
127.0.0.1
6380
ginadmin
mysql
localhost
3310
docker
123456
|--api // Api
|--build //
|--cmd //
|--configs //
|--deployments // docker-compose
|--internal //
|--logs //
|--pkg //
|--web //
pkg/paginater/paginater.go
PageOperation
adminDb := models.Db.Table("admin_users").Select("nickname","username").Where("uid != ?", 1)
adminUserData := paginater.PageOperation(c, adminDb, 1, &adminUserList)
html
{{ .adminUserData.PageHtml }}
internal/router/default.go
loggers.LogInfo()
github.com/gphper/ginadmin/pkg/loggers`
loggers.LogInfo("admin", "this is a info message", map[string]string{
"user_info": "this is a user info",
})
log_media
fileredis
models TableName() string
GetModels
func GetModels() []interface{} {
return []interface{}{
&AdminUsers{},
&AdminGroup{},
}
}
model BaseModle TableName FillData() AdminUsers
pkg/cron/cron.go
configs/config.go
structtype AppConf struct {
BaseConf `yaml:"base"`
}
type BaseConf struct {
Port string `yaml:"port"`
}
configs/config.yaml
base:
port: 20011
configs.App.BaseConf.Port
web/views/template
/
internal/menu/menu.go
casbincasbincasbin
pkg/casbinauth/casbin.go
gin.context
info,_ := c.Get("userInfo")
template judgeContainPriv
pkg/template/default.go
"judgeContainPriv": func(username string, obj string, act string) bool {
if username == "admin" {
return true
}
ok, err := casbinauth.Check(username, obj, act)
if !ok || err != nil {
return false
}
return true
},
go install github.com/swaggo/swag/cmd/swag
swag init -g cmd/ginadmin/main.go
go run .\cmd\ginadmin\ run
http://localhost:20010/swagger/index.html
go build .\cmd\ginadmin
go build -tags=embed .\cmd\ginadmin
PS F:\ginadmin> go run .\cmd\ginadmin\ run -h
Run app
Usage:
ginadmin run [flags]
Flags:
-c, --config path string config path
-h, --help help for run
-m, --mode string dev or release (default "dev")
PS F:\ginadmin> go run .\cmd\ginadmin\ db migrate -h
DB Migrate
Usage:
ginadmin db migrate [-t table] [flags]
Flags:
-c, --config path string config path
-h, --help help for migrate
-t, --table string input a table name
PS F:\ginadmin> go run .\cmd\ginadmin\ db seed -h
DB Seed
Usage:
ginadmin db seed [-t table] [flags]
Flags:
-c, --config path string config path
-h, --help help for seed
-t, --table string input a table name