From 751e1bdc910cc076401187bf59c2991dde37e40b Mon Sep 17 00:00:00 2001 From: Antoine Grondin Date: Fri, 5 Sep 2025 16:16:34 +0900 Subject: [PATCH] pass desired username around, in case the user needs to be created --- go/svc/auth/v1/service.pb.go | 26 ++++++++++++++++++-------- js/svc/auth/v1/service_pb.ts | 8 +++++++- proto/svc/auth/v1/service.proto | 18 ++++++++++++++++-- 3 files changed, 41 insertions(+), 11 deletions(-) diff --git a/go/svc/auth/v1/service.pb.go b/go/svc/auth/v1/service.pb.go index 5c7349b..51448ff 100644 --- a/go/svc/auth/v1/service.pb.go +++ b/go/svc/auth/v1/service.pb.go @@ -7,6 +7,7 @@ package authv1 import ( + _ "buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go/buf/validate" v1 "github.com/humanlogio/api/go/types/v1" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" @@ -332,6 +333,7 @@ type BeginDeviceAuthRequest struct { // *BeginDeviceAuthRequest_ByName Organization isBeginDeviceAuthRequest_Organization `protobuf_oneof:"organization"` ReturnToUrl string `protobuf:"bytes,2,opt,name=return_to_url,json=returnToUrl,proto3" json:"return_to_url,omitempty"` + Username string `protobuf:"bytes,3,opt,name=username,proto3" json:"username,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -398,6 +400,13 @@ func (x *BeginDeviceAuthRequest) GetReturnToUrl() string { return "" } +func (x *BeginDeviceAuthRequest) GetUsername() string { + if x != nil { + return x.Username + } + return "" +} + type isBeginDeviceAuthRequest_Organization interface { isBeginDeviceAuthRequest_Organization() } @@ -609,28 +618,29 @@ var File_svc_auth_v1_service_proto protoreflect.FileDescriptor const file_svc_auth_v1_service_proto_rawDesc = "" + "\n" + - "\x19svc/auth/v1/service.proto\x12\vsvc.auth.v1\x1a\x1egoogle/protobuf/duration.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1atypes/v1/environment.proto\x1a\x13types/v1/meta.proto\x1a\x19types/v1/user_token.proto\x1a\x16types/v1/version.proto\"2\n" + - "\x14CheckUsernameRequest\x12\x1a\n" + - "\busername\x18\x01 \x01(\tR\busername\"5\n" + + "\x19svc/auth/v1/service.proto\x12\vsvc.auth.v1\x1a\x1bbuf/validate/validate.proto\x1a\x1egoogle/protobuf/duration.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1atypes/v1/environment.proto\x1a\x13types/v1/meta.proto\x1a\x19types/v1/user_token.proto\x1a\x16types/v1/version.proto\"Y\n" + + "\x14CheckUsernameRequest\x12A\n" + + "\busername\x18\x01 \x01(\tB%\xbaH\"r \x10\x03\x18'2\x1a^[a-zA-Z0-9][a-zA-Z0-9-]+$R\busername\"5\n" + "\x15CheckUsernameResponse\x12\x1c\n" + - "\tavailable\x18\x01 \x01(\bR\tavailable\"\xd5\x01\n" + + "\tavailable\x18\x01 \x01(\bR\tavailable\"\xfc\x01\n" + "\x11GetAuthURLRequest\x12\x15\n" + "\x05by_id\x18d \x01(\x03H\x00R\x04byId\x12\x19\n" + "\aby_name\x18e \x01(\tH\x00R\x06byName\x12\"\n" + "\rreturn_to_url\x18\x02 \x01(\tR\vreturnToUrl\x12>\n" + - "\tlocalhost\x18\x03 \x01(\v2 .svc.auth.v1.LocalhostViaBrowserR\tlocalhost\x12\x1a\n" + - "\busername\x18\x04 \x01(\tR\busernameB\x0e\n" + + "\tlocalhost\x18\x03 \x01(\v2 .svc.auth.v1.LocalhostViaBrowserR\tlocalhost\x12A\n" + + "\busername\x18\x04 \x01(\tB%\xbaH\"r \x10\x03\x18'2\x1a^[a-zA-Z0-9][a-zA-Z0-9-]+$R\busernameB\x0e\n" + "\forganization\"\x9c\x01\n" + "\x13LocalhostViaBrowser\x12\"\n" + "\farchitecture\x18\x01 \x01(\tR\farchitecture\x12)\n" + "\x10operating_system\x18\x02 \x01(\tR\x0foperatingSystem\x126\n" + "\rusing_version\x18\x03 \x01(\v2\x11.types.v1.VersionR\fusingVersion\"/\n" + "\x12GetAuthURLResponse\x12\x19\n" + - "\bauth_url\x18\x01 \x01(\tR\aauthUrl\"~\n" + + "\bauth_url\x18\x01 \x01(\tR\aauthUrl\"\xc1\x01\n" + "\x16BeginDeviceAuthRequest\x12\x15\n" + "\x05by_id\x18d \x01(\x03H\x00R\x04byId\x12\x19\n" + "\aby_name\x18e \x01(\tH\x00R\x06byName\x12\"\n" + - "\rreturn_to_url\x18\x02 \x01(\tR\vreturnToUrlB\x0e\n" + + "\rreturn_to_url\x18\x02 \x01(\tR\vreturnToUrl\x12A\n" + + "\busername\x18\x03 \x01(\tB%\xbaH\"r \x10\x03\x18'2\x1a^[a-zA-Z0-9][a-zA-Z0-9-]+$R\busernameB\x0e\n" + "\forganization\"\xe4\x01\n" + "\x17BeginDeviceAuthResponse\x12\x10\n" + "\x03url\x18\x01 \x01(\tR\x03url\x12\x1f\n" + diff --git a/js/svc/auth/v1/service_pb.ts b/js/svc/auth/v1/service_pb.ts index d165996..4e54a12 100644 --- a/js/svc/auth/v1/service_pb.ts +++ b/js/svc/auth/v1/service_pb.ts @@ -4,6 +4,7 @@ import type { GenFile, GenMessage, GenService } from "@bufbuild/protobuf/codegenv2"; import { fileDesc, messageDesc, serviceDesc } from "@bufbuild/protobuf/codegenv2"; +import { file_buf_validate_validate } from "../../../buf/validate/validate_pb"; import type { Duration, Timestamp } from "@bufbuild/protobuf/wkt"; import { file_google_protobuf_duration, file_google_protobuf_timestamp } from "@bufbuild/protobuf/wkt"; import { file_types_v1_environment } from "../../../types/v1/environment_pb"; @@ -18,7 +19,7 @@ import type { Message } from "@bufbuild/protobuf"; * Describes the file svc/auth/v1/service.proto. */ export const file_svc_auth_v1_service: GenFile = /*@__PURE__*/ - fileDesc("ChlzdmMvYXV0aC92MS9zZXJ2aWNlLnByb3RvEgtzdmMuYXV0aC52MSIoChRDaGVja1VzZXJuYW1lUmVxdWVzdBIQCgh1c2VybmFtZRgBIAEoCSIqChVDaGVja1VzZXJuYW1lUmVzcG9uc2USEQoJYXZhaWxhYmxlGAEgASgIIqUBChFHZXRBdXRoVVJMUmVxdWVzdBIPCgVieV9pZBhkIAEoA0gAEhEKB2J5X25hbWUYZSABKAlIABIVCg1yZXR1cm5fdG9fdXJsGAIgASgJEjMKCWxvY2FsaG9zdBgDIAEoCzIgLnN2Yy5hdXRoLnYxLkxvY2FsaG9zdFZpYUJyb3dzZXISEAoIdXNlcm5hbWUYBCABKAlCDgoMb3JnYW5pemF0aW9uIm8KE0xvY2FsaG9zdFZpYUJyb3dzZXISFAoMYXJjaGl0ZWN0dXJlGAEgASgJEhgKEG9wZXJhdGluZ19zeXN0ZW0YAiABKAkSKAoNdXNpbmdfdmVyc2lvbhgDIAEoCzIRLnR5cGVzLnYxLlZlcnNpb24iJgoSR2V0QXV0aFVSTFJlc3BvbnNlEhAKCGF1dGhfdXJsGAEgASgJImMKFkJlZ2luRGV2aWNlQXV0aFJlcXVlc3QSDwoFYnlfaWQYZCABKANIABIRCgdieV9uYW1lGGUgASgJSAASFQoNcmV0dXJuX3RvX3VybBgCIAEoCUIOCgxvcmdhbml6YXRpb24isAEKF0JlZ2luRGV2aWNlQXV0aFJlc3BvbnNlEgsKA3VybBgBIAEoCRITCgtkZXZpY2VfY29kZRgCIAEoCRIRCgl1c2VyX2NvZGUYAyABKAkSLgoKZXhwaXJlc19hdBgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASMAoNcG9sbF9pbnRlcnZhbBgFIAEoCzIZLmdvb2dsZS5wcm90b2J1Zi5EdXJhdGlvbiJzChlDb21wbGV0ZURldmljZUF1dGhSZXF1ZXN0EhMKC2RldmljZV9jb2RlGAEgASgJEhEKCXVzZXJfY29kZRgCIAEoCRIUCgxhcmNoaXRlY3R1cmUYBSABKAkSGAoQb3BlcmF0aW5nX3N5c3RlbRgGIAEoCSJAChpDb21wbGV0ZURldmljZUF1dGhSZXNwb25zZRIiCgV0b2tlbhgBIAEoCzITLnR5cGVzLnYxLlVzZXJUb2tlbjKBAwoLQXV0aFNlcnZpY2USTwoKR2V0QXV0aFVSTBIeLnN2Yy5hdXRoLnYxLkdldEF1dGhVUkxSZXF1ZXN0Gh8uc3ZjLmF1dGgudjEuR2V0QXV0aFVSTFJlc3BvbnNlIgASXgoPQmVnaW5EZXZpY2VBdXRoEiMuc3ZjLmF1dGgudjEuQmVnaW5EZXZpY2VBdXRoUmVxdWVzdBokLnN2Yy5hdXRoLnYxLkJlZ2luRGV2aWNlQXV0aFJlc3BvbnNlIgASZwoSQ29tcGxldGVEZXZpY2VBdXRoEiYuc3ZjLmF1dGgudjEuQ29tcGxldGVEZXZpY2VBdXRoUmVxdWVzdBonLnN2Yy5hdXRoLnYxLkNvbXBsZXRlRGV2aWNlQXV0aFJlc3BvbnNlIgASWAoNQ2hlY2tVc2VybmFtZRIhLnN2Yy5hdXRoLnYxLkNoZWNrVXNlcm5hbWVSZXF1ZXN0GiIuc3ZjLmF1dGgudjEuQ2hlY2tVc2VybmFtZVJlc3BvbnNlIgBCngEKD2NvbS5zdmMuYXV0aC52MUIMU2VydmljZVByb3RvUAFaL2dpdGh1Yi5jb20vaHVtYW5sb2dpby9hcGkvZ28vc3ZjL2F1dGgvdjE7YXV0aHYxogIDU0FYqgILU3ZjLkF1dGguVjHKAgtTdmNcQXV0aFxWMeICF1N2Y1xBdXRoXFYxXEdQQk1ldGFkYXRh6gINU3ZjOjpBdXRoOjpWMWIGcHJvdG8z", [file_google_protobuf_duration, file_google_protobuf_timestamp, file_types_v1_environment, file_types_v1_meta, file_types_v1_user_token, file_types_v1_version]); + fileDesc("ChlzdmMvYXV0aC92MS9zZXJ2aWNlLnByb3RvEgtzdmMuYXV0aC52MSJPChRDaGVja1VzZXJuYW1lUmVxdWVzdBI3Cgh1c2VybmFtZRgBIAEoCUIlukgiciAQAxgnMhpeW2EtekEtWjAtOV1bYS16QS1aMC05LV0rJCIqChVDaGVja1VzZXJuYW1lUmVzcG9uc2USEQoJYXZhaWxhYmxlGAEgASgIIswBChFHZXRBdXRoVVJMUmVxdWVzdBIPCgVieV9pZBhkIAEoA0gAEhEKB2J5X25hbWUYZSABKAlIABIVCg1yZXR1cm5fdG9fdXJsGAIgASgJEjMKCWxvY2FsaG9zdBgDIAEoCzIgLnN2Yy5hdXRoLnYxLkxvY2FsaG9zdFZpYUJyb3dzZXISNwoIdXNlcm5hbWUYBCABKAlCJbpIInIgEAMYJzIaXlthLXpBLVowLTldW2EtekEtWjAtOS1dKyRCDgoMb3JnYW5pemF0aW9uIm8KE0xvY2FsaG9zdFZpYUJyb3dzZXISFAoMYXJjaGl0ZWN0dXJlGAEgASgJEhgKEG9wZXJhdGluZ19zeXN0ZW0YAiABKAkSKAoNdXNpbmdfdmVyc2lvbhgDIAEoCzIRLnR5cGVzLnYxLlZlcnNpb24iJgoSR2V0QXV0aFVSTFJlc3BvbnNlEhAKCGF1dGhfdXJsGAEgASgJIpwBChZCZWdpbkRldmljZUF1dGhSZXF1ZXN0Eg8KBWJ5X2lkGGQgASgDSAASEQoHYnlfbmFtZRhlIAEoCUgAEhUKDXJldHVybl90b191cmwYAiABKAkSNwoIdXNlcm5hbWUYAyABKAlCJbpIInIgEAMYJzIaXlthLXpBLVowLTldW2EtekEtWjAtOS1dKyRCDgoMb3JnYW5pemF0aW9uIrABChdCZWdpbkRldmljZUF1dGhSZXNwb25zZRILCgN1cmwYASABKAkSEwoLZGV2aWNlX2NvZGUYAiABKAkSEQoJdXNlcl9jb2RlGAMgASgJEi4KCmV4cGlyZXNfYXQYBCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjAKDXBvbGxfaW50ZXJ2YWwYBSABKAsyGS5nb29nbGUucHJvdG9idWYuRHVyYXRpb24icwoZQ29tcGxldGVEZXZpY2VBdXRoUmVxdWVzdBITCgtkZXZpY2VfY29kZRgBIAEoCRIRCgl1c2VyX2NvZGUYAiABKAkSFAoMYXJjaGl0ZWN0dXJlGAUgASgJEhgKEG9wZXJhdGluZ19zeXN0ZW0YBiABKAkiQAoaQ29tcGxldGVEZXZpY2VBdXRoUmVzcG9uc2USIgoFdG9rZW4YASABKAsyEy50eXBlcy52MS5Vc2VyVG9rZW4ygQMKC0F1dGhTZXJ2aWNlEk8KCkdldEF1dGhVUkwSHi5zdmMuYXV0aC52MS5HZXRBdXRoVVJMUmVxdWVzdBofLnN2Yy5hdXRoLnYxLkdldEF1dGhVUkxSZXNwb25zZSIAEl4KD0JlZ2luRGV2aWNlQXV0aBIjLnN2Yy5hdXRoLnYxLkJlZ2luRGV2aWNlQXV0aFJlcXVlc3QaJC5zdmMuYXV0aC52MS5CZWdpbkRldmljZUF1dGhSZXNwb25zZSIAEmcKEkNvbXBsZXRlRGV2aWNlQXV0aBImLnN2Yy5hdXRoLnYxLkNvbXBsZXRlRGV2aWNlQXV0aFJlcXVlc3QaJy5zdmMuYXV0aC52MS5Db21wbGV0ZURldmljZUF1dGhSZXNwb25zZSIAElgKDUNoZWNrVXNlcm5hbWUSIS5zdmMuYXV0aC52MS5DaGVja1VzZXJuYW1lUmVxdWVzdBoiLnN2Yy5hdXRoLnYxLkNoZWNrVXNlcm5hbWVSZXNwb25zZSIAQp4BCg9jb20uc3ZjLmF1dGgudjFCDFNlcnZpY2VQcm90b1ABWi9naXRodWIuY29tL2h1bWFubG9naW8vYXBpL2dvL3N2Yy9hdXRoL3YxO2F1dGh2MaICA1NBWKoCC1N2Yy5BdXRoLlYxygILU3ZjXEF1dGhcVjHiAhdTdmNcQXV0aFxWMVxHUEJNZXRhZGF0YeoCDVN2Yzo6QXV0aDo6VjFiBnByb3RvMw", [file_buf_validate_validate, file_google_protobuf_duration, file_google_protobuf_timestamp, file_types_v1_environment, file_types_v1_meta, file_types_v1_user_token, file_types_v1_version]); /** * @generated from message svc.auth.v1.CheckUsernameRequest @@ -169,6 +170,11 @@ export type BeginDeviceAuthRequest = Message<"svc.auth.v1.BeginDeviceAuthRequest * @generated from field: string return_to_url = 2; */ returnToUrl: string; + + /** + * @generated from field: string username = 3; + */ + username: string; }; /** diff --git a/proto/svc/auth/v1/service.proto b/proto/svc/auth/v1/service.proto index 03f1390..c70fd4e 100644 --- a/proto/svc/auth/v1/service.proto +++ b/proto/svc/auth/v1/service.proto @@ -2,6 +2,7 @@ syntax = "proto3"; package svc.auth.v1; +import "buf/validate/validate.proto"; import "google/protobuf/duration.proto"; import "google/protobuf/timestamp.proto"; import "types/v1/environment.proto"; @@ -20,7 +21,11 @@ service AuthService { } message CheckUsernameRequest { - string username = 1; + string username = 1 [ + (buf.validate.field).string.min_len = 3, + (buf.validate.field).string.max_len = 39, + (buf.validate.field).string.pattern = "^[a-zA-Z0-9][a-zA-Z0-9-]+$" + ]; } message CheckUsernameResponse { @@ -35,7 +40,11 @@ message GetAuthURLRequest { } string return_to_url = 2; LocalhostViaBrowser localhost = 3; - string username = 4; + string username = 4 [ + (buf.validate.field).string.min_len = 3, + (buf.validate.field).string.max_len = 39, + (buf.validate.field).string.pattern = "^[a-zA-Z0-9][a-zA-Z0-9-]+$" + ]; } message LocalhostViaBrowser { @@ -54,6 +63,11 @@ message BeginDeviceAuthRequest { string by_name = 101; } string return_to_url = 2; + string username = 3 [ + (buf.validate.field).string.min_len = 3, + (buf.validate.field).string.max_len = 39, + (buf.validate.field).string.pattern = "^[a-zA-Z0-9][a-zA-Z0-9-]+$" + ]; } message BeginDeviceAuthResponse {