Files
ai-agent/internal/pkg/errorsx/errors.go
T
t 2bbf42b741 refactor(auth): delegate access control to be-system
Remove Agent Desk users, roles, login sessions, tokens, and local permission persistence. Expose the backend as an embeddable ai-agent module with host-provided subject lookup and operation authorization callbacks, and complete the frontend/backend repository split.
2026-08-21 00:41:07 +08:00

112 lines
2.5 KiB
Go

package errorsx
import (
"code.tczkiot.com/wlw/ai-agent/internal/pkg/i18nx"
"github.com/mlogclub/simple/web"
)
const (
CodeInvalidParam = 1000
CodeBusinessError = 2000
CodeAuthUnauthorized = 3000
CodeAuthForbidden = 3001
CodeAuthInvalidToken = 3002
CodeAuthInvalidAccount = 3003
CodeAuthCredentialLocked = 3004
)
func InvalidParam(message string) error {
return web.NewError(CodeInvalidParam, message)
}
func InvalidParamI18n(key string, args ...any) error {
return NewI18nError(CodeInvalidParam, key, args...)
}
func BusinessError(code int, message string) error {
return web.NewError(CodeBusinessError+code, message)
}
func BusinessErrorI18n(code int, key string, args ...any) error {
return NewI18nError(CodeBusinessError+code, key, args...)
}
func Unauthorized(message string) error {
return web.NewError(CodeAuthUnauthorized, message)
}
func UnauthorizedI18n(key string, args ...any) error {
return NewI18nError(CodeAuthUnauthorized, key, args...)
}
func Forbidden(message string) error {
return web.NewError(CodeAuthForbidden, message)
}
func ForbiddenI18n(key string, args ...any) error {
return NewI18nError(CodeAuthForbidden, key, args...)
}
func InvalidToken(message string) error {
return web.NewError(CodeAuthInvalidToken, message)
}
func InvalidTokenI18n(key string, args ...any) error {
return NewI18nError(CodeAuthInvalidToken, key, args...)
}
func InvalidAccount(message string) error {
return web.NewError(CodeAuthInvalidAccount, message)
}
func InvalidAccountI18n(key string, args ...any) error {
return NewI18nError(CodeAuthInvalidAccount, key, args...)
}
func CredentialLocked(message string) error {
return web.NewError(CodeAuthCredentialLocked, message)
}
func CredentialLockedI18n(key string, args ...any) error {
return NewI18nError(CodeAuthCredentialLocked, key, args...)
}
type I18nError struct {
Code int
Key string
Args []any
}
func NewI18nError(code int, key string, args ...any) *I18nError {
return &I18nError{Code: code, Key: key, Args: args}
}
func (e *I18nError) Error() string {
if e == nil {
return ""
}
return e.Message(i18nx.DefaultLocale)
}
func (e *I18nError) Unwrap() error {
if e == nil {
return nil
}
return web.NewError(e.Code, e.Error())
}
func (e *I18nError) Message(locale string) string {
if e == nil {
return ""
}
return i18nx.Getf(locale, e.Key, e.Args...)
}
func (e *I18nError) JsonResult(locale string) *web.JsonResult {
if e == nil {
return web.JsonSuccess()
}
return web.JsonErrorCode(e.Code, e.Message(locale))
}