Tencent/WeKnora · error
cannot revoke the last remaining system administrator
Error message
cannot revoke the last remaining system administrator
What it means
Sentinel ErrLastSystemAdmin returned inside the revoke transaction when, after the change, the system-admin count would drop to 1 or below — the platform must keep at least one system administrator. The transaction aborts and the handler maps it to 400.
Source
Thrown at internal/application/repository/user.go:18
package repository
import (
"context"
"errors"
"github.com/Tencent/WeKnora/internal/types"
"github.com/Tencent/WeKnora/internal/types/interfaces"
"gorm.io/gorm"
"gorm.io/gorm/clause"
)
var (
ErrUserNotFound = errors.New("user not found")
ErrUserAlreadyExists = errors.New("user already exists")
ErrTokenNotFound = errors.New("token not found")
ErrCannotRevokeSelf = errors.New("cannot revoke your own system admin privileges")
ErrLastSystemAdmin = errors.New("cannot revoke the last remaining system administrator")
ErrUserNotSystemAdmin = errors.New("user is not a system administrator")
)
// userRepository implements user repository interface
type userRepository struct {
db *gorm.DB
}
// NewUserRepository creates a new user repository
func NewUserRepository(db *gorm.DB) interfaces.UserRepository {
return &userRepository{db: db}
}
// CreateUser creates a user
func (r *userRepository) CreateUser(ctx context.Context, user *types.User) error {
// users.tenant_id is nullable in both PostgreSQL and SQLite. GORM would
// otherwise serialise the uint64 zero value as 0, which violates the
// PostgreSQL FK and loses the distinction between "not provisioned yet"View on GitHub (pinned to 988cbb0330)
Solutions
- Promote another user to system admin first, then retry the revocation
- Keep at least one system admin; refuse the operation otherwise
Defensive patterns
Strategy: type-guard
When it happens
Trigger: Thrown at internal/application/repository/user.go:18 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of Tencent/WeKnora@988cbb0330 (2026-09-02).
Data as JSON: /api/errors/35b330ca52dfcfaf.
Report an issue: GitHub.