From 88551d36787cea046930973f4ef6962d3e044f2b Mon Sep 17 00:00:00 2001 From: Abin Simon Date: Wed, 29 Dec 2021 12:59:52 +0530 Subject: [PATCH] Add types for user management proto files --- components/usermgmt/buf.gen.yaml | 23 +++++++++ components/usermgmt/buf.lock | 24 +++++++++ components/usermgmt/buf.yaml | 12 +++++ components/usermgmt/go.mod | 3 ++ components/usermgmt/main.go | 2 + .../proto/types/userpb/v3/group.proto | 35 +++++++++++++ .../usermgmt/proto/types/userpb/v3/role.proto | 32 ++++++++++++ .../types/userpb/v3/rolepermission.proto | 31 ++++++++++++ .../usermgmt/proto/types/userpb/v3/user.proto | 49 +++++++++++++++++++ components/usermgmt/readme | 11 +++++ 10 files changed, 222 insertions(+) create mode 100644 components/usermgmt/buf.gen.yaml create mode 100644 components/usermgmt/buf.lock create mode 100644 components/usermgmt/buf.yaml create mode 100644 components/usermgmt/go.mod create mode 100644 components/usermgmt/main.go create mode 100644 components/usermgmt/proto/types/userpb/v3/group.proto create mode 100644 components/usermgmt/proto/types/userpb/v3/role.proto create mode 100644 components/usermgmt/proto/types/userpb/v3/rolepermission.proto create mode 100644 components/usermgmt/proto/types/userpb/v3/user.proto create mode 100644 components/usermgmt/readme diff --git a/components/usermgmt/buf.gen.yaml b/components/usermgmt/buf.gen.yaml new file mode 100644 index 0000000..9324567 --- /dev/null +++ b/components/usermgmt/buf.gen.yaml @@ -0,0 +1,23 @@ +version: v1 +managed: + enabled: true + go_package_prefix: + default: github.com/RafaySystems/rcloud-base/components/usermgmt + except: + - buf.build/googleapis/googleapis + - buf.build/grpc-ecosystem/grpc-gateway + - buf.build/gogo/protobuf +plugins: + - name: go + out: . + opt: paths=source_relative + - name: go-grpc + out: . + opt: + - paths=source_relative + - require_unimplemented_servers=false + - name: grpc-gateway + out: . + opt: paths=source_relative + - name: openapiv2 + out: gen/openapi diff --git a/components/usermgmt/buf.lock b/components/usermgmt/buf.lock new file mode 100644 index 0000000..ee65047 --- /dev/null +++ b/components/usermgmt/buf.lock @@ -0,0 +1,24 @@ +# Generated by buf. DO NOT EDIT. +version: v1 +deps: + - remote: buf.build + owner: gogo + repository: protobuf + branch: main + commit: 4df00b267f944190a229ce3695781e99 + digest: b1-sjLgsg7CzrkOrIjBDh3s-l0aMjE6oqTj85-OsoopKAw= + create_time: 2021-08-10T00:14:28.345069Z + - remote: buf.build + owner: googleapis + repository: googleapis + branch: main + commit: 9088184d3ed04821b7e990024ff05656 + digest: b1---R9Xre3yvH8peoJPQ0dsUYp37KzdlBlx5fjPsYekyI= + create_time: 2021-12-23T15:04:49.66847Z + - remote: buf.build + owner: grpc-ecosystem + repository: grpc-gateway + branch: main + commit: ff83506eb9cc4cf8972f49ce87e6ed3e + digest: b1-iLPHgLaoeWWinMiXXqPnxqE4BThtY3eSbswVGh9GOGI= + create_time: 2021-10-23T16:26:52.283938Z diff --git a/components/usermgmt/buf.yaml b/components/usermgmt/buf.yaml new file mode 100644 index 0000000..9b120ea --- /dev/null +++ b/components/usermgmt/buf.yaml @@ -0,0 +1,12 @@ +version: v1 +name: buf.build/meain/usermgmt +deps: + # - buf.build/googleapis/googleapis + - buf.build/grpc-ecosystem/grpc-gateway + - buf.build/gogo/protobuf +breaking: + use: + - FILE +lint: + use: + - DEFAULT diff --git a/components/usermgmt/go.mod b/components/usermgmt/go.mod new file mode 100644 index 0000000..67bf315 --- /dev/null +++ b/components/usermgmt/go.mod @@ -0,0 +1,3 @@ +module github.com/RafaySystems/rcloud-base/components/usermgmt + +go 1.16 diff --git a/components/usermgmt/main.go b/components/usermgmt/main.go new file mode 100644 index 0000000..faf017a --- /dev/null +++ b/components/usermgmt/main.go @@ -0,0 +1,2 @@ +package usermgmt + diff --git a/components/usermgmt/proto/types/userpb/v3/group.proto b/components/usermgmt/proto/types/userpb/v3/group.proto new file mode 100644 index 0000000..9dd545f --- /dev/null +++ b/components/usermgmt/proto/types/userpb/v3/group.proto @@ -0,0 +1,35 @@ +syntax = "proto3"; +package rafay.dev.types.user.v3; + +import "proto/types/commonpb/v3/common.proto"; +import "proto/types/systempb/v3/project.proto"; +import "protoc-gen-openapiv2/options/annotations.proto"; +// import "google/api/field_behavior.proto"; + +message Group { + option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_schema) = { + json_schema : { + title : "Group" + description : "Group" + required : [ "apiVersion", "kind", "metadata", "spec" ] + } + }; + string apiVersion = 1; // usermgmt.k8smgmt.io/v3 + string kind = 2; // default : "Group" + rafay.dev.types.common.v3.Metadata metadata = 3; + GroupSpec spec = 4; + rafay.dev.types.common.v3.Status status = 5; +} + +message GroupSpec { + repeated rafay.dev.types.system.v3.Project projects = 1; + repeated string users = 2; + string type = 3; +} + +message GroupList { + string apiVersion = 1; + string kind = 2; + rafay.dev.types.common.v3.ListMetadata metadata = 3; + repeated Group items = 4; +} diff --git a/components/usermgmt/proto/types/userpb/v3/role.proto b/components/usermgmt/proto/types/userpb/v3/role.proto new file mode 100644 index 0000000..15afa5f --- /dev/null +++ b/components/usermgmt/proto/types/userpb/v3/role.proto @@ -0,0 +1,32 @@ +syntax = "proto3"; +package rafay.dev.types.user.v3; + +import "proto/types/commonpb/v3/common.proto"; +import "proto/types/userpb/v3/rolepermission.proto"; +import "protoc-gen-openapiv2/options/annotations.proto"; +// import "google/api/field_behavior.proto"; + +message Role { + option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_schema) = { + json_schema : { + title : "Role" + description : "Role" + required : [ "apiVersion", "kind", "metadata", "spec" ] + } + }; + + string apiVersion = 1; // default : "usermgmt.k8smgmt.io/v3" + string kind = 2; // default : "Role" + rafay.dev.types.common.v3.Metadata metadata = 3; + RoleSpec spec = 4; + rafay.dev.types.common.v3.Status status = 5; +} + +message RoleSpec { repeated rafay.dev.types.user.v3.RolePermission rolepermissions = 1; } + +message RoleList { + string apiVersion = 1; + string kind = 2; + rafay.dev.types.common.v3.ListMetadata metadata = 3; + repeated Role items = 4; +} diff --git a/components/usermgmt/proto/types/userpb/v3/rolepermission.proto b/components/usermgmt/proto/types/userpb/v3/rolepermission.proto new file mode 100644 index 0000000..4bc7f14 --- /dev/null +++ b/components/usermgmt/proto/types/userpb/v3/rolepermission.proto @@ -0,0 +1,31 @@ +syntax = "proto3"; +package rafay.dev.types.user.v3; + +import "proto/types/commonpb/v3/common.proto"; +import "protoc-gen-openapiv2/options/annotations.proto"; +// import "google/api/field_behavior.proto"; + +message RolePermission { + option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_schema) = { + json_schema : { + title : "RolePermission" + description : "Role Permission" + required : [ "apiVersion", "kind", "metadata", "spec" ] + } + }; + + string apiVersion = 1; // default : "usermgmt.k8smgmt.io/v3" + string kind = 2; // default : "RolePermission" + rafay.dev.types.common.v3.Metadata metadata = 3; + RolePermissionSpec spec = 4; + rafay.dev.types.common.v3.Status status = 5; +} + +message RolePermissionSpec { repeated string permissions = 1; } + +message RolePermissionList { + string apiVersion = 1; + string kind = 2; + rafay.dev.types.common.v3.ListMetadata metadata = 3; + repeated RolePermission items = 4; +} diff --git a/components/usermgmt/proto/types/userpb/v3/user.proto b/components/usermgmt/proto/types/userpb/v3/user.proto new file mode 100644 index 0000000..1e9c701 --- /dev/null +++ b/components/usermgmt/proto/types/userpb/v3/user.proto @@ -0,0 +1,49 @@ +syntax = "proto3"; +package rafay.dev.types.user.v3; + +import "proto/types/commonpb/v3/common.proto"; +import "proto/types/userpb/v3/role.proto"; +import "proto/types/userpb/v3/rolepermission.proto"; +import "proto/types/userpb/v3/group.proto"; +import "proto/types/systempb/v3/project.proto"; +import "protoc-gen-openapiv2/options/annotations.proto"; +// import "google/api/field_behavior.proto"; + +message User { + option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_schema) = { + json_schema : { + title : "User" + description : "User" + required : [ "apiVersion", "kind", "metadata", "spec" ] + } + }; + + string apiVersion = 1; // default : "usermgmt.k8smgmt.io/v3" + string kind = 2; // default : "User" + rafay.dev.types.common.v3.Metadata metadata = 3; + UserSpec spec = 4; + rafay.dev.types.common.v3.Status status = 5; +} + +message UserSpec { + string firstName = 1; + string lastName = 2; + string username = 3; + string phone = 4; + string password = 5; + string totpRequired = 6; + string totpSecret = 7; + repeated rafay.dev.types.user.v3.Role roles = 8; + repeated rafay.dev.types.user.v3.Group group = 9; + repeated rafay.dev.types.system.v3.Project project = 10; + bool emailVerified = 11; + bool phoneVerified = 12; + bool totpVerified = 13; +} + +message UserList { + string apiVersion = 1; + string kind = 2; + rafay.dev.types.common.v3.ListMetadata metadata = 3; + repeated User items = 4; +} diff --git a/components/usermgmt/readme b/components/usermgmt/readme new file mode 100644 index 0000000..688f79a --- /dev/null +++ b/components/usermgmt/readme @@ -0,0 +1,11 @@ +User management for rcloud + +Dependencies: +- ory/kratos + +Components: +- Glue between frontend and kratos +- Auth validation for use in other modules + +TBD: +- Will casbin be integrated in same module or separate api call? (Probably separate api call) \ No newline at end of file