Skip to content

fzxiehui/gin-admin

 
 

Repository files navigation

gin-admin

RBAC scaffolding based on GIN Gorm 2.0 CASBIN WIRE (DI).

English | 中文

ReportCard GoDoc License

Features

  • 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

Dependent Tools

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.

Dependent Library

  • 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

Getting Started

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

Generate swagger documentation

swag init --parseDependency --generalInfo ./cmd/${APP}/main.go --output ./internal/app/swagger

# Or use Makefile: make swagger

Use wire to generate dependency injection

wire gen ./internal/app

# Or use Makefile: make wire

Use the gin-admin-cli tool to quickly generate modules

Create template file: task.yaml

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;"

Execute generate command

gin-admin-cli g -d . -p github.com/LyricTian/gin-admin/v8 -f ./task.yaml

make swagger

make wire

make start

Project Layout

├── 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               

Contact

wechat qqgroup

MIT License

Copyright (c) 2021 Lyric

About

RBAC scaffolding based on Gin Gorm 2.0 Casbin Wire DI.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Go 99.6%
  • Makefile 0.4%