Changes
4 changed files (+102/-33)
-
-
@@ -205,6 +205,17 @@ },}), nil } if err := event.UpdateProjections(tx, users); err != nil { logger.Error("Failed to update users projection", "error", err) return connect.NewResponse(&workspaceV2.CreateInitialAdminResponse{ Result: &workspaceV2.CreateInitialAdminResponse_SystemError{ SystemError: &errorV1.SystemError{ Message: proto.String("Database error"), }, }, }), nil } if err := tx.Commit(); err != nil { logger.Error("Failed to commit transaction", "error", err) return connect.NewResponse(&workspaceV2.CreateInitialAdminResponse{
-
@@ -216,17 +227,28 @@ },}), nil } logger.Debug("Created an initial admin user", "id", id.String()) for _, u := range users.Projection.Users { if u.GetId() == id.String() { logger.Debug("Created an initial admin user", "id", id.String()) return connect.NewResponse(&workspaceV2.CreateInitialAdminResponse{ Result: &workspaceV2.CreateInitialAdminResponse_Ok{ Ok: &workspaceV2.User{ Id: &workspaceV2.UserID{ Value: proto.String(id.String()), return connect.NewResponse(&workspaceV2.CreateInitialAdminResponse{ Result: &workspaceV2.CreateInitialAdminResponse_Ok{ Ok: projectionUserToMessage(u), }, Name: proto.String(name), DisplayName: proto.String(displayName), IsAdmin: proto.Bool(true), }), nil } } logger.Error( "Creation of user succeeded, but the user does not exist in projection", "id", id.String(), ) return connect.NewResponse(&workspaceV2.CreateInitialAdminResponse{ Result: &workspaceV2.CreateInitialAdminResponse_SystemError{ SystemError: &errorV1.SystemError{ Message: proto.String("Database error"), }, }, }), nil
-
-
-
@@ -265,24 +265,33 @@ return createUserSystemError("Database error")} } if err := event.UpdateProjections(tx, users); err != nil { logger.Error("Failed to update users projection", "error", err) return createUserSystemError("Database error") } if err := tx.Commit(); err != nil { logger.Error("Failed to commit transaction", "error", err) return createUserSystemError("Database error") } logger.Debug("Created a new user", "id", id.String()) for _, u := range users.Projection.Users { if u.GetId() == id.String() { logger.Debug("Created a new user", "id", id.String()) // TODO: 権限を返す return connect.NewResponse(&workspaceV2.CreateUserResponse{ Result: &workspaceV2.CreateUserResponse_Ok{ Ok: &workspaceV2.User{ Id: &workspaceV2.UserID{ Value: proto.String(id.String()), return connect.NewResponse(&workspaceV2.CreateUserResponse{ Result: &workspaceV2.CreateUserResponse_Ok{ Ok: projectionUserToMessage(u), }, Name: proto.String(name), DisplayName: proto.String(displayName), IsAdmin: proto.Bool(req.Msg.GetIsAdmin()), }, }, }), nil }), nil } } logger.Error( "Creation of user succeeded, but the user does not exist in projection", "id", id.String(), ) return createUserSystemError("Database error") }
-
-
-
@@ -0,0 +1,48 @@// SPDX-FileCopyrightText: 2025 Shota FUJI <pockawoooh@gmail.com> // SPDX-License-Identifier: AGPL-3.0-only package workspace import ( "google.golang.org/protobuf/proto" projection "pocka.jp/x/yamori/proto/go/backend/projections/workspace/v1" "pocka.jp/x/yamori/proto/go/backend/workspace/v1/types" workspaceV2 "pocka.jp/x/yamori/proto/go/workspace/v2" ) func projectionUserToMessage(p *projection.Users_User) *workspaceV2.User { permissions := workspaceV2.UserPermissions{} for _, perm := range p.Permissions { switch perm { case types.Permission_PERMISSION_ADD_REGULAR_USER: permissions.CanAddUser = proto.Bool(true) case types.Permission_PERMISSION_DELETE_REGULAR_USER: permissions.CanDeleteRegularUser = proto.Bool(true) case types.Permission_PERMISSION_READ_REGULAR_USER_PROFILE: permissions.CanReadOtherUserProfile = proto.Bool(true) case types.Permission_PERMISSION_UPDATE_REGULAR_USER_PROFILE: permissions.CanUpdateOtherRegularUserProfile = proto.Bool(true) case types.Permission_PERMISSION_UPDATE_SELF_PROFILE: permissions.CanUpdateSelfProfile = proto.Bool(true) case types.Permission_PERMISSION_UPDATE_REGULAR_USER_LOGIN_METHOD: permissions.CanUpdateOtherRegularUserLoginMethod = proto.Bool(true) case types.Permission_PERMISSION_EDIT_WORKSPACE_PROFILE: permissions.CanUpdateWorkspace = proto.Bool(true) } } return &workspaceV2.User{ Id: &workspaceV2.UserID{ Value: p.Id, }, Name: p.Name, DisplayName: p.DisplayName, LoginMethod: &workspaceV2.LoginMethod{ PasswordConfigured: proto.Bool(p.PasswordLogin != nil), }, IsAdmin: p.IsAdmin, Permissions: &permissions, } }
-
-
-
@@ -125,17 +125,7 @@ }res := connect.NewResponse(&workspaceV2.LoginResponse{ Result: &workspaceV2.LoginResponse_Ok{ Ok: &workspaceV2.User{ Id: &workspaceV2.UserID{ Value: u.Id, }, Name: u.Name, DisplayName: u.DisplayName, LoginMethod: &workspaceV2.LoginMethod{ PasswordConfigured: proto.Bool(true), }, IsAdmin: u.IsAdmin, }, Ok: projectionUserToMessage(u), }, })
-