Skip to content

ResolveOrCreateUser does not register identity — breaks SendMessage for OIDC users #13

Description

@rowan-stein

User Request

Chat-app e2e tests fail with sender_id: identity not found after architecture migration. OIDC-provisioned users need identity registration.

Specification

Problem

threads v0.3.2 added identity-service validation in SendMessage — it calls identity.GetIdentityType(senderID) and returns InvalidArgument "sender_id: identity not found" if the identity doesn't exist.

users.ResolveOrCreateUser (OIDC auto-provisioning path) creates a user record but does not call identity.RegisterIdentity(). In contrast, users.CreateUser (admin endpoint) does register the identity.

All e2e test users are created via OIDC login → ResolveOrCreateUser, so they lack identity records.

Fix

Add identityClient.RegisterIdentity() to ResolveOrCreateUser when created == true, matching the existing pattern in CreateUser:

// In ResolveOrCreateUser handler, after successful user creation:
if created {
    _, err = s.identityClient.RegisterIdentity(ctx, &identityv1.RegisterIdentityRequest{
        IdentityId:   user.Meta.ID.String(),
        IdentityType: identityv1.IdentityType_IDENTITY_TYPE_USER,
    })
    if err != nil {
        // Rollback user creation
        _ = s.store.DeleteUser(ctx, user.Meta.ID)
        return nil, status.Errorf(codes.Internal, "register identity: %v", err)
    }
}

Files

  • internal/server/server.goResolveOrCreateUser handler (add RegisterIdentity call)
  • Reference: CreateUser handler in same file (already has the pattern)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions