RBAC scaffolding based on GIN + Gorm 2.0 + CASBIN + WIRE (DI).
English | 中文
- Follow the
RESTful API
design specification - Use
Casbin
to implement fine-grained access to the interface design - Use
Wire
to resolve dependencies between modules - Provides rich
Gin
middlewares (JWTAuth,CORS,RequestLogger,RequestRateLimiter,TraceID,CasbinEnforce,Recover,GZIP) - Support
Swagger
go get -u github.com/cosmtrek/air
go get -u github.com/google/wire/cmd/wire
go get -u github.com/swaggo/swag/cmd/swag
- air -- Live reload for Go apps
- wire -- Compile-time Dependency Injection for Go
- swag -- Automatically generate RESTful API documentation with Swagger 2.0 for Go.
- Gin -- The fastest full-featured web framework for Go.
- GORM -- The fantastic ORM library for Golang
- Casbin -- An authorization library that supports access control models like ACL, RBAC, ABAC in Golang
- Wire -- Compile-time Dependency Injection for Go
git clone https://github.com/LyricTian/gin-admin
cd gin-admin
go run cmd/gin-admin/main.go web -c ./configs/config.toml -m ./configs/model.conf --menu ./configs/menu.yaml
# Or use Makefile: make start
The database and table structure will be automatically created during the startup process. After the startup is successful, you can access the swagger address through the browser: http://127.0.0.1:10088/swagger/index.html
swag init --parseDependency --generalInfo ./cmd/${APP}/main.go --output ./internal/app/swagger
# Or use Makefile: make swagger
wire gen ./internal/app
# Or use Makefile: make wire
Use the gin-admin-cli tool to quickly generate modules
name: Task
comment: TaskManage
fields:
- name: Code
type: string
required: true
binding_options: ""
gorm_options: "size:50;index;"
- name: Name
type: string
required: true
binding_options: ""
gorm_options: "size:50;index;"
- name: Memo
type: string
required: false
binding_options: ""
gorm_options: "size:1024;"
gin-admin-cli g -d . -p github.com/LyricTian/gin-admin/v8 -f ./task.yaml
make swagger
make wire
make start
├── cmd
│ └── gin-admin
│ └── main.go
├── configs
│ ├── config.toml
│ ├── menu.yaml
│ └── model.conf
├── docs
├── internal
│ └── app
│ ├── api
│ ├── config
│ ├── contextx
│ ├── dao
│ ├── ginx
│ ├── middleware
│ ├── module
│ ├── router
│ ├── schema
│ ├── service
│ ├── swagger
│ ├── test
├── pkg
│ ├── auth
│ │ └── jwtauth
│ ├── errors
│ ├── gormx
│ ├── logger
│ │ ├── hook
│ └── util
│ ├── conv
│ ├── hash
│ ├── json
│ ├── snowflake
│ ├── structure
│ ├── trace
│ ├── uuid
│ └── yaml
└── scripts
Copyright (c) 2021 Lyric