m1k1o/neko · warning · ErrMemberInvalidPassword
invalid password
Error message
invalid password
What it means
ErrMemberInvalidPassword is a sentinel error in the neko types package signaling that the supplied password does not match the stored hash for a member during credential checks. It is returned by Login and by MemberProvider.Authenticate when the username exists but authentication fails because of a wrong password (not because the user is missing).
Source
Thrown at server/pkg/types/member.go:8
package types
import "errors"
var (
ErrMemberAlreadyExists = errors.New("member already exists")
ErrMemberDoesNotExist = errors.New("member does not exist")
ErrMemberInvalidPassword = errors.New("invalid password")
)
type MemberProfile struct {
Name string `json:"name"`
// permissions
IsAdmin bool `json:"is_admin" mapstructure:"is_admin"`
CanLogin bool `json:"can_login" mapstructure:"can_login"`
CanConnect bool `json:"can_connect" mapstructure:"can_connect"`
CanWatch bool `json:"can_watch" mapstructure:"can_watch"`
CanHost bool `json:"can_host" mapstructure:"can_host"`
CanShareMedia bool `json:"can_share_media" mapstructure:"can_share_media"`
CanAccessClipboard bool `json:"can_access_clipboard" mapstructure:"can_access_clipboard"`
SendsInactiveCursor bool `json:"sends_inactive_cursor" mapstructure:"sends_inactive_cursor"`
CanSeeInactiveCursors bool `json:"can_see_inactive_cursors" mapstructure:"can_see_inactive_cursors"`
// plugin scope
Plugins PluginSettings `json:"plugins"`View on GitHub (pinned to b0f01cedea)
Solutions
- Retry authentication with the correct password.
- Reset the member's password (UpdatePassword) or recreate the member with the intended credentials.
- Confirm the client is connecting to the intended server instance whose member store matches the credentials.
- Check that the provider's password hashing/verification configuration hasn't changed between versions.
- Log failed-login attempts (without logging the password) to distinguish typos from attacks.
Defensive patterns
Strategy: try-catch
Validate before calling
// caller-side sanity check before sending
if username == "" || password == "" {
return errors.New("username and password required")
} Try / catch
_, _, err := manager.Login(username, password)
if errors.Is(err, types.ErrMemberInvalidPassword) {
// surface 'wrong password' to user; apply rate limiting
return
}
return err Prevention
- Rate-limit and lock out after repeated failures.
- Never log the attempted password.
- Notify users after password resets to update cached clients.
- Use a password manager / secrets store for automated clients.
When it happens
Trigger: Login(username, password) where the password hash comparison fails; MemberProvider.Authenticate with a mismatched password for an existing user.
Common situations: Typo or wrong keyboard layout when typing credentials; stale credentials after a password change; clients caching old tokens/passwords; environment configs loading credentials from a different member store than expected.
Related errors
- member does not exist
- session not found
- session login disabled
- session logins locked
- image data not found
AI-assisted analysis of m1k1o/neko@b0f01cedea (2026-09-01).
Data as JSON: /api/errors/f5cdabf6d2ec2525.
Report an issue: GitHub.