pocketbase/pocketbase · error

the user is not active

Error message

the user is not active

What it means

Thrown by the Planning Center auth provider when the user resource's `data.attributes.status` is anything other than "active" (e.g. "inactive", "pending", "disabled"). After a successful token exchange, the provider fetches the PCO identity endpoint and refuses login for non-active accounts. The status string is matched exactly, so any other value fails.

Source

Thrown at tools/auth/planningcenter.go:72

	extracted := struct {
		Data struct {
			Id         string `json:"id"`
			Attributes struct {
				Status    string `json:"status"`
				Name      string `json:"name"`
				AvatarURL string `json:"avatar"`
				// don't map the email because users can have multiple assigned
				// and it's not clear if they are verified
			}
		}
	}{}
	if err := json.Unmarshal(data, &extracted); err != nil {
		return nil, err
	}

	if extracted.Data.Attributes.Status != "active" {
		return nil, errors.New("the user is not active")
	}

	user := &AuthUser{
		Id:           extracted.Data.Id,
		Name:         extracted.Data.Attributes.Name,
		AvatarURL:    extracted.Data.Attributes.AvatarURL,
		RawUser:      rawUser,
		AccessToken:  token.AccessToken,
		RefreshToken: token.RefreshToken,
	}

	user.Expiry, _ = types.ParseDateTime(token.Expiry)

	return user, nil
}

View on GitHub (pinned to 5d217ddb50)

Solutions

  1. Have a Planning Center admin set the person's status back to active in the organization.
  2. If login was attempted with a stale session, clear it and re-run the full OAuth flow after reactivation.
  3. Inspect RawUser to see the exact status string returned and confirm it is an account-state issue, not an API/schema change.
  4. If your PCO instance uses an unexpected status vocabulary, verify the API response shape has not changed.
Defensive patterns

Strategy: try-catch

Try / catch

user, err := provider.FetchAuthUser(token)
if err != nil && strings.Contains(err.Error(), "the user is not active") {
    return errors.New("your Planning Center account is not active")
}

Prevention

When it happens

Trigger: OAuth login with a Planning Center person whose account status is not active; organization admin deactivated the person; the account is still in a pending/invitation state.

Common situations: User removed from a Planning Center organization but their OAuth grant/token is cached in a browser; imported accounts defaulting to a non-active status.

Related errors


AI-assisted analysis of pocketbase/pocketbase@5d217ddb50 (2026-08-15). Data as JSON: /api/errors/939a648ab14b235f. Report an issue: GitHub.