mirror of https://github.com/chaitin/PandaWiki.git
30 lines
931 B
Go
30 lines
931 B
Go
package middleware
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"github.com/labstack/echo/v4"
|
|
|
|
"github.com/chaitin/panda-wiki/config"
|
|
"github.com/chaitin/panda-wiki/consts"
|
|
"github.com/chaitin/panda-wiki/log"
|
|
"github.com/chaitin/panda-wiki/repo/pg"
|
|
)
|
|
|
|
type AuthMiddleware interface {
|
|
Authorize(next echo.HandlerFunc) echo.HandlerFunc
|
|
ValidateUserRole(role consts.UserRole) echo.MiddlewareFunc
|
|
ValidateKBUserPerm(role consts.UserKBPermission) echo.MiddlewareFunc
|
|
ValidateLicenseEdition(edition consts.LicenseEdition) echo.MiddlewareFunc
|
|
MustGetUserID(c echo.Context) (string, bool)
|
|
}
|
|
|
|
func NewAuthMiddleware(config *config.Config, logger *log.Logger, userAccessRepo *pg.UserAccessRepository, apiTokenRepo *pg.APITokenRepo) (AuthMiddleware, error) {
|
|
switch config.Auth.Type {
|
|
case "jwt":
|
|
return NewJWTMiddleware(config, logger, userAccessRepo, apiTokenRepo), nil
|
|
default:
|
|
return nil, fmt.Errorf("invalid auth type: %s", config.Auth.Type)
|
|
}
|
|
}
|