mirror of
https://github.com/zitadel/zitadel.git
synced 2025-12-05 23:22:14 +00:00
Project commands (#26)
* feat: eventstore repository * fix: remove gorm * version * feat: pkg * feat: add some files for project * feat: eventstore without eventstore-lib * rename files * gnueg * fix: key json * fix: add object * fix: change imports * fix: internal models * fix: some imports * fix: global model * fix: add some functions on repo * feat(eventstore): sdk * fix(eventstore): search query * fix(eventstore): rename app to eventstore * delete empty test * remove unused func * merge master * fix(eventstore): tests * fix(models): delete unused struct * fix: some funcitons * feat(eventstore): implemented push events * fix: move project eventstore to project package * fix: change project eventstore funcs * feat(eventstore): overwrite context data * fix: change project eventstore * fix: add project repo to mgmt server * feat(types): SQL-config * fix: commented code * feat(eventstore): options to overwrite editor * feat: auth interceptor and cockroach migrations * fix: migrations * fix: fix filter * fix: not found on getbyid * fix: add sequence * fix: add some tests * fix(eventstore): nullable sequence * fix: add some tests * merge * fix: add some tests * fix(migrations): correct statements for sequence * fix: add some tests * fix: add some tests * fix: changes from mr * Update internal/eventstore/models/field.go Co-Authored-By: livio-a <livio.a@gmail.com> * fix(eventstore): code quality * fix: add types to aggregate/Event-types * fix(eventstore): rename modifier* to editor* * fix(eventstore): delete editor_org * fix(migrations): remove editor_org field, rename modifier_* to editor_* * fix: generate files * fix(eventstore): tests * fix(eventstore): rename modifier to editor * fix(migrations): add cluster migration, fix(migrations): fix typo of host in clean clsuter * fix(eventstore): move health * fix(eventstore): AggregateTypeFilter aggregateType as param * code quality * feat: start implementing project members * feat: remove member funcs * feat: remove member model * feat: remove member events * feat: remove member repo model * fix: better error func testing * Update docs/local.md Co-Authored-By: Silvan <silvan.reusser@gmail.com> * Update docs/local.md Co-Authored-By: Silvan <silvan.reusser@gmail.com> * fix: mr requests * fix: md file Co-authored-by: adlerhurst <silvan.reusser@gmail.com> Co-authored-by: livio-a <livio.a@gmail.com>
This commit is contained in:
@@ -2,6 +2,8 @@ package api
|
||||
|
||||
import (
|
||||
"context"
|
||||
"github.com/caos/zitadel/internal/api/auth"
|
||||
"github.com/caos/zitadel/internal/management/repository"
|
||||
|
||||
grpc_util "github.com/caos/zitadel/internal/api/grpc"
|
||||
"github.com/caos/zitadel/internal/api/grpc/server"
|
||||
@@ -12,8 +14,8 @@ type Config struct {
|
||||
GRPC grpc_util.Config
|
||||
}
|
||||
|
||||
func Start(ctx context.Context, conf Config) {
|
||||
grpcServer := grpc.StartServer(conf.GRPC.ToServerConfig())
|
||||
func Start(ctx context.Context, conf Config, authZ auth.Config, repo repository.Repository) {
|
||||
grpcServer := grpc.StartServer(conf.GRPC.ToServerConfig(), authZ, repo)
|
||||
grpcGateway := grpc.StartGateway(conf.GRPC.ToGatewayConfig())
|
||||
|
||||
server.StartServer(ctx, grpcServer)
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -3280,6 +3280,10 @@
|
||||
},
|
||||
"oidc_config": {
|
||||
"$ref": "#/definitions/v1OIDCConfig"
|
||||
},
|
||||
"sequence": {
|
||||
"type": "string",
|
||||
"format": "uint64"
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -3832,6 +3836,10 @@
|
||||
},
|
||||
"domain": {
|
||||
"type": "string"
|
||||
},
|
||||
"sequence": {
|
||||
"type": "string",
|
||||
"format": "uint64"
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -3874,6 +3882,10 @@
|
||||
"creation_date": {
|
||||
"type": "string",
|
||||
"format": "date-time"
|
||||
},
|
||||
"sequence": {
|
||||
"type": "string",
|
||||
"format": "uint64"
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -3994,6 +4006,10 @@
|
||||
"expire_warn_days": {
|
||||
"type": "string",
|
||||
"format": "uint64"
|
||||
},
|
||||
"sequence": {
|
||||
"type": "string",
|
||||
"format": "uint64"
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -4071,6 +4087,10 @@
|
||||
"has_symbol": {
|
||||
"type": "boolean",
|
||||
"format": "boolean"
|
||||
},
|
||||
"sequence": {
|
||||
"type": "string",
|
||||
"format": "uint64"
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -4160,6 +4180,10 @@
|
||||
"show_lock_out_failures": {
|
||||
"type": "boolean",
|
||||
"format": "boolean"
|
||||
},
|
||||
"sequence": {
|
||||
"type": "string",
|
||||
"format": "uint64"
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -4256,6 +4280,10 @@
|
||||
},
|
||||
"grant_id": {
|
||||
"type": "string"
|
||||
},
|
||||
"sequence": {
|
||||
"type": "string",
|
||||
"format": "uint64"
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -4304,6 +4332,10 @@
|
||||
},
|
||||
"project_name": {
|
||||
"type": "string"
|
||||
},
|
||||
"sequence": {
|
||||
"type": "string",
|
||||
"format": "uint64"
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -4366,6 +4398,10 @@
|
||||
"creation_date": {
|
||||
"type": "string",
|
||||
"format": "date-time"
|
||||
},
|
||||
"sequence": {
|
||||
"type": "string",
|
||||
"format": "uint64"
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -4676,6 +4712,10 @@
|
||||
"creation_date": {
|
||||
"type": "string",
|
||||
"format": "date-time"
|
||||
},
|
||||
"sequence": {
|
||||
"type": "string",
|
||||
"format": "uint64"
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -4812,6 +4852,10 @@
|
||||
},
|
||||
"group": {
|
||||
"type": "string"
|
||||
},
|
||||
"sequence": {
|
||||
"type": "string",
|
||||
"format": "uint64"
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -4969,7 +5013,7 @@
|
||||
"enum": [
|
||||
"PROJECTSTATE_UNSPECIFIED",
|
||||
"PROJECTSTATE_ACTIVE",
|
||||
"PROJECTSSTATE_INACTIVE"
|
||||
"PROJECTSTATE_INACTIVE"
|
||||
],
|
||||
"default": "PROJECTSTATE_UNSPECIFIED"
|
||||
},
|
||||
@@ -5231,6 +5275,10 @@
|
||||
},
|
||||
"street_address": {
|
||||
"type": "string"
|
||||
},
|
||||
"sequence": {
|
||||
"type": "string",
|
||||
"format": "uint64"
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -5254,6 +5302,10 @@
|
||||
},
|
||||
"street_address": {
|
||||
"type": "string"
|
||||
},
|
||||
"sequence": {
|
||||
"type": "string",
|
||||
"format": "uint64"
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -5269,6 +5321,10 @@
|
||||
"is_email_verified": {
|
||||
"type": "boolean",
|
||||
"format": "boolean"
|
||||
},
|
||||
"sequence": {
|
||||
"type": "string",
|
||||
"format": "uint64"
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -5324,6 +5380,10 @@
|
||||
},
|
||||
"project_name": {
|
||||
"type": "string"
|
||||
},
|
||||
"sequence": {
|
||||
"type": "string",
|
||||
"format": "uint64"
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -5470,6 +5530,10 @@
|
||||
"is_phone_verified": {
|
||||
"type": "boolean",
|
||||
"format": "boolean"
|
||||
},
|
||||
"sequence": {
|
||||
"type": "string",
|
||||
"format": "uint64"
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -5502,6 +5566,10 @@
|
||||
},
|
||||
"user_name": {
|
||||
"type": "string"
|
||||
},
|
||||
"sequence": {
|
||||
"type": "string",
|
||||
"format": "uint64"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
@@ -7,16 +7,32 @@ import (
|
||||
)
|
||||
|
||||
func (s *Server) CreateProject(ctx context.Context, in *ProjectCreateRequest) (*Project, error) {
|
||||
return nil, errors.ThrowUnimplemented(nil, "GRPC-mo34X", "Not implemented")
|
||||
project, err := s.project.CreateProject(ctx, in.Name)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return projectFromModel(project), nil
|
||||
}
|
||||
func (s *Server) UpdateProject(ctx context.Context, in *ProjectUpdateRequest) (*Project, error) {
|
||||
return nil, errors.ThrowUnimplemented(nil, "GRPC-0o4fB", "Not implemented")
|
||||
project, err := s.project.UpdateProject(ctx, projectUpdateToModel(in))
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return projectFromModel(project), nil
|
||||
}
|
||||
func (s *Server) DeactivateProject(ctx context.Context, in *ProjectID) (*Project, error) {
|
||||
return nil, errors.ThrowUnimplemented(nil, "GRPC-4Sck8", "Not implemented")
|
||||
project, err := s.project.DeactivateProject(ctx, in.Id)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return projectFromModel(project), nil
|
||||
}
|
||||
func (s *Server) ReactivateProject(ctx context.Context, in *ProjectID) (*Project, error) {
|
||||
return nil, errors.ThrowUnimplemented(nil, "GRPC-0oVre", "Not implemented")
|
||||
project, err := s.project.ReactivateProject(ctx, in.Id)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return projectFromModel(project), nil
|
||||
}
|
||||
|
||||
func (s *Server) SearchProjects(ctx context.Context, in *ProjectSearchRequest) (*ProjectSearchResponse, error) {
|
||||
@@ -24,7 +40,11 @@ func (s *Server) SearchProjects(ctx context.Context, in *ProjectSearchRequest) (
|
||||
}
|
||||
|
||||
func (s *Server) ProjectByID(ctx context.Context, id *ProjectID) (*Project, error) {
|
||||
return nil, errors.ThrowUnimplemented(nil, "GRPC-plV5x", "Not implemented")
|
||||
project, err := s.project.ProjectByID(ctx, id.Id)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return projectFromModel(project), nil
|
||||
}
|
||||
|
||||
func (s *Server) GetGrantedProjectGrantByID(ctx context.Context, request *GrantedGrantID) (*ProjectGrant, error) {
|
||||
|
||||
45
pkg/management/api/grpc/project_converter.go
Normal file
45
pkg/management/api/grpc/project_converter.go
Normal file
@@ -0,0 +1,45 @@
|
||||
package grpc
|
||||
|
||||
import (
|
||||
"github.com/caos/logging"
|
||||
"github.com/caos/zitadel/internal/eventstore/models"
|
||||
proj_model "github.com/caos/zitadel/internal/project/model"
|
||||
"github.com/golang/protobuf/ptypes"
|
||||
)
|
||||
|
||||
func projectFromModel(project *proj_model.Project) *Project {
|
||||
creationDate, err := ptypes.TimestampProto(project.CreationDate)
|
||||
logging.Log("GRPC-iejs3").OnError(err).Debug("unable to parse timestamp")
|
||||
|
||||
changeDate, err := ptypes.TimestampProto(project.ChangeDate)
|
||||
logging.Log("GRPC-di7rw").OnError(err).Debug("unable to parse timestamp")
|
||||
|
||||
return &Project{
|
||||
Id: project.ID,
|
||||
State: projectStateFromModel(project.State),
|
||||
CreationDate: creationDate,
|
||||
ChangeDate: changeDate,
|
||||
Name: project.Name,
|
||||
Sequence: project.Sequence,
|
||||
}
|
||||
}
|
||||
|
||||
func projectStateFromModel(state proj_model.ProjectState) ProjectState {
|
||||
switch state {
|
||||
case proj_model.Active:
|
||||
return ProjectState_PROJECTSTATE_ACTIVE
|
||||
case proj_model.Inactive:
|
||||
return ProjectState_PROJECTSTATE_INACTIVE
|
||||
default:
|
||||
return ProjectState_PROJECTSTATE_UNSPECIFIED
|
||||
}
|
||||
}
|
||||
|
||||
func projectUpdateToModel(project *ProjectUpdateRequest) *proj_model.Project {
|
||||
return &proj_model.Project{
|
||||
ObjectRoot: models.ObjectRoot{
|
||||
ID: project.Id,
|
||||
},
|
||||
Name: project.Name,
|
||||
}
|
||||
}
|
||||
@@ -1,8 +1,11 @@
|
||||
package grpc
|
||||
|
||||
import (
|
||||
"github.com/caos/zitadel/internal/api/auth"
|
||||
grpc_util "github.com/caos/zitadel/internal/api/grpc"
|
||||
"github.com/caos/zitadel/internal/api/grpc/server/middleware"
|
||||
mgmt_auth "github.com/caos/zitadel/internal/management/auth"
|
||||
"github.com/caos/zitadel/internal/management/repository"
|
||||
grpc_middleware "github.com/grpc-ecosystem/go-grpc-middleware"
|
||||
"google.golang.org/grpc"
|
||||
)
|
||||
@@ -10,12 +13,18 @@ import (
|
||||
var _ ManagementServiceServer = (*Server)(nil)
|
||||
|
||||
type Server struct {
|
||||
port string
|
||||
port string
|
||||
project repository.ProjectRepository
|
||||
verifier *mgmt_auth.TokenVerifier
|
||||
authZ auth.Config
|
||||
}
|
||||
|
||||
func StartServer(conf grpc_util.ServerConfig) *Server {
|
||||
func StartServer(conf grpc_util.ServerConfig, authZ auth.Config, repo repository.Repository) *Server {
|
||||
return &Server{
|
||||
port: conf.Port,
|
||||
port: conf.Port,
|
||||
project: repo,
|
||||
authZ: authZ,
|
||||
verifier: mgmt_auth.Start(),
|
||||
}
|
||||
}
|
||||
|
||||
@@ -29,6 +38,7 @@ func (s *Server) GRPCServer() (*grpc.Server, error) {
|
||||
grpc.UnaryInterceptor(
|
||||
grpc_middleware.ChainUnaryServer(
|
||||
middleware.ErrorHandler(),
|
||||
ManagementService_Authorization_Interceptor(s.verifier, &s.authZ),
|
||||
),
|
||||
),
|
||||
)
|
||||
|
||||
@@ -1269,6 +1269,7 @@ message User {
|
||||
string postal_code = 20;
|
||||
string region = 21;
|
||||
string street_address = 22;
|
||||
uint64 sequence = 23;
|
||||
}
|
||||
|
||||
enum UserState {
|
||||
@@ -1337,6 +1338,7 @@ message UserProfile {
|
||||
string preferred_language = 7;
|
||||
Gender gender = 8;
|
||||
string user_name = 9;
|
||||
uint64 sequence = 10;
|
||||
}
|
||||
|
||||
message UpdateUserProfileRequest {
|
||||
@@ -1353,6 +1355,7 @@ message UserEmail {
|
||||
string id = 1;
|
||||
string email = 2;
|
||||
bool is_email_verified = 3;
|
||||
uint64 sequence = 4;
|
||||
}
|
||||
|
||||
message UpdateUserEmailRequest {
|
||||
@@ -1365,6 +1368,7 @@ message UserPhone {
|
||||
string id = 1;
|
||||
string phone = 2;
|
||||
bool is_phone_verified = 3;
|
||||
uint64 sequence = 5;
|
||||
}
|
||||
|
||||
message UpdateUserPhoneRequest {
|
||||
@@ -1380,6 +1384,7 @@ message UserAddress {
|
||||
string postal_code = 4;
|
||||
string region = 5;
|
||||
string street_address = 6;
|
||||
uint64 sequence = 7;
|
||||
}
|
||||
|
||||
message UpdateUserAddressRequest {
|
||||
@@ -1451,6 +1456,7 @@ message PasswordComplexityPolicy {
|
||||
bool has_uppercase = 8;
|
||||
bool has_number = 9;
|
||||
bool has_symbol = 10;
|
||||
uint64 sequence = 11;
|
||||
}
|
||||
|
||||
message PasswordComplexityPolicyCreate {
|
||||
@@ -1484,6 +1490,7 @@ message PasswordAgePolicy {
|
||||
google.protobuf.Timestamp change_date = 5;
|
||||
uint64 max_age_days = 6;
|
||||
uint64 expire_warn_days = 7;
|
||||
uint64 sequence = 8;
|
||||
}
|
||||
|
||||
message PasswordAgePolicyCreate {
|
||||
@@ -1511,6 +1518,7 @@ message PasswordLockoutPolicy {
|
||||
google.protobuf.Timestamp change_date = 5;
|
||||
uint64 max_attempts = 6;
|
||||
bool show_lock_out_failures = 7;
|
||||
uint64 sequence = 8;
|
||||
}
|
||||
|
||||
message PasswordLockoutPolicyCreate {
|
||||
@@ -1548,6 +1556,7 @@ message Org {
|
||||
google.protobuf.Timestamp change_date = 4;
|
||||
string name = 5;
|
||||
string domain = 6;
|
||||
uint64 sequence = 7;
|
||||
}
|
||||
|
||||
enum OrgState {
|
||||
@@ -1569,6 +1578,7 @@ message OrgMember {
|
||||
repeated string roles = 6;
|
||||
google.protobuf.Timestamp change_date = 7;
|
||||
google.protobuf.Timestamp creation_date = 8;
|
||||
uint64 sequence = 9;
|
||||
}
|
||||
|
||||
message AddOrgMemberRequest {
|
||||
@@ -1641,12 +1651,13 @@ message Project {
|
||||
string org_name = 9;
|
||||
string org_domain = 10;
|
||||
string grant_id = 11;
|
||||
uint64 sequence = 12;
|
||||
}
|
||||
|
||||
enum ProjectState {
|
||||
PROJECTSTATE_UNSPECIFIED = 0;
|
||||
PROJECTSTATE_ACTIVE = 1;
|
||||
PROJECTSSTATE_INACTIVE = 2;
|
||||
PROJECTSTATE_INACTIVE = 2;
|
||||
}
|
||||
|
||||
enum ProjectType {
|
||||
@@ -1692,6 +1703,7 @@ message ProjectMember {
|
||||
repeated string roles = 6;
|
||||
google.protobuf.Timestamp change_date = 7;
|
||||
google.protobuf.Timestamp creation_date = 8;
|
||||
uint64 sequence = 10;
|
||||
}
|
||||
|
||||
message ProjectMemberAdd {
|
||||
@@ -1724,6 +1736,7 @@ message ProjectRole {
|
||||
string display_name = 3;
|
||||
google.protobuf.Timestamp creation_date = 4;
|
||||
string group = 5;
|
||||
uint64 sequence = 6;
|
||||
}
|
||||
|
||||
message ProjectRoleRemove {
|
||||
@@ -1800,6 +1813,7 @@ message Application {
|
||||
oneof app_config {
|
||||
OIDCConfig oidc_config = 8;
|
||||
}
|
||||
uint64 sequence = 9;
|
||||
}
|
||||
|
||||
message ApplicationUpdate {
|
||||
@@ -1906,6 +1920,7 @@ message ProjectGrant {
|
||||
google.protobuf.Timestamp creation_date = 8;
|
||||
google.protobuf.Timestamp change_date = 9;
|
||||
string project_name = 10;
|
||||
uint64 sequence = 11;
|
||||
}
|
||||
|
||||
message ProjectGrantCreate {
|
||||
@@ -1961,6 +1976,7 @@ message ProjectGrantMember {
|
||||
repeated string roles = 6;
|
||||
google.protobuf.Timestamp change_date = 7;
|
||||
google.protobuf.Timestamp creation_date = 8;
|
||||
uint64 sequence = 9;
|
||||
}
|
||||
|
||||
message ProjectGrantMemberAdd {
|
||||
@@ -2028,6 +2044,7 @@ message UserGrant {
|
||||
string org_name = 13;
|
||||
string org_domain = 14;
|
||||
string project_name = 15;
|
||||
uint64 sequence = 16;
|
||||
}
|
||||
|
||||
message UserGrantCreate {
|
||||
|
||||
Reference in New Issue
Block a user