Simple boilerplate modular using Echo Framework (Golang)
Before you start, please make sure that you have install glide
and start mysql
. Afterward, please follow below steps.
- Clone this project.
- In current directory, execute
glide install
. - Update mysql config in
config.toml
. - Last,
go run main.go
Middleware Authorizer can support multiple roles, like in in modules/user/main.go
- All roles can acess
e.GET("/restricted", restricted, utils.Authorizer())
- Only roles user can access
e.GET("/restricted-user", restricted, utils.Authorizer("user"))
- Only roles admin can access
e.GET("/restricted-admin", restricted, utils.Authorizer("admin"))
- Roles admin and rols user can access
e.GET("/restricted-user-admin", restricted, utils.Authorizer("admin", "user"))
RequestHandler in file utils/request
will parsing, validate and excecute logic functions
err, result := utils.RequestHandler(c, new(LoginRequest), UserLogic.Login)
c
is contextLoginRequest
is struct request paramaterUserLogic.Login
is a functions logic
func Login(c echo.Context) error {
err, result := utils.RequestHandler(c, new(LoginRequest), UserLogic.Login)
if err != nil {
return utils.ErrorResponse(c, err)
}
return utils.SuccessResponse(c, result)
}
type LoginRequest struct {
Email string `json:"email" xml:"email" form:"email" query:"email" valid:"email,required"`
Password string `json:"password" xml:"password" form:"password" query:"password" valid:"required,length(6|50)"`
}
func (l *Logic) Login(ctx echo.Context, params interface{}) (error, interface{}) {
paramater := params.(*LoginRequest)
.....
.....
.....
}