|
|
|
|
@ -106,28 +106,6 @@ func AuthUser(Authorization string) (*op.User, error) {
|
|
|
|
|
return u, nil
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func AuthAdmin(Authorization string) (*op.User, error) {
|
|
|
|
|
u, err := AuthUser(Authorization)
|
|
|
|
|
if err != nil {
|
|
|
|
|
return nil, err
|
|
|
|
|
}
|
|
|
|
|
if !u.IsAdmin() {
|
|
|
|
|
return nil, errors.New("user is not admin")
|
|
|
|
|
}
|
|
|
|
|
return u, nil
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func AuthRoot(Authorization string) (*op.User, error) {
|
|
|
|
|
u, err := AuthUser(Authorization)
|
|
|
|
|
if err != nil {
|
|
|
|
|
return nil, err
|
|
|
|
|
}
|
|
|
|
|
if !u.IsRoot() {
|
|
|
|
|
return nil, errors.New("user is not admin")
|
|
|
|
|
}
|
|
|
|
|
return u, nil
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func NewAuthUserToken(user *op.User) (string, error) {
|
|
|
|
|
if user.IsBanned() {
|
|
|
|
|
return "", errors.New("user banned")
|
|
|
|
|
@ -206,9 +184,13 @@ func AuthUserMiddleware(ctx *gin.Context) {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func AuthAdminMiddleware(ctx *gin.Context) {
|
|
|
|
|
user, err := AuthAdmin(ctx.GetHeader("Authorization"))
|
|
|
|
|
user, err := AuthUser(ctx.GetHeader("Authorization"))
|
|
|
|
|
if err != nil {
|
|
|
|
|
ctx.AbortWithStatusJSON(http.StatusForbidden, model.NewApiErrorResp(err))
|
|
|
|
|
ctx.AbortWithStatusJSON(http.StatusUnauthorized, model.NewApiErrorResp(err))
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
if !user.IsAdmin() {
|
|
|
|
|
ctx.AbortWithStatusJSON(http.StatusForbidden, model.NewApiErrorStringResp("user is not admin"))
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@ -217,9 +199,13 @@ func AuthAdminMiddleware(ctx *gin.Context) {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func AuthRootMiddleware(ctx *gin.Context) {
|
|
|
|
|
user, err := AuthRoot(ctx.GetHeader("Authorization"))
|
|
|
|
|
user, err := AuthUser(ctx.GetHeader("Authorization"))
|
|
|
|
|
if err != nil {
|
|
|
|
|
ctx.AbortWithStatusJSON(http.StatusForbidden, model.NewApiErrorResp(err))
|
|
|
|
|
ctx.AbortWithStatusJSON(http.StatusUnauthorized, model.NewApiErrorResp(err))
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
if !user.IsRoot() {
|
|
|
|
|
ctx.AbortWithStatusJSON(http.StatusForbidden, model.NewApiErrorStringResp("user is not root"))
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|