mirror of
https://github.com/andwati/zitadel.git
synced 2026-10-28 01:52:16 +00:00
feat: project grant commands (#68)
* 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 * feat: add global view functions * 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: use global sql config * 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 * fix: changes from mr * fix: add some tests * Update internal/eventstore/models/field.go Co-Authored-By: livio-a <[email protected]> * fix(eventstore): code quality * fix: add types to aggregate/Event-types * fix: try tests * fix(eventstore): rename modifier* to editor* * fix(eventstore): delete editor_org * fix(migrations): remove editor_org field, rename modifier_* to editor_* * fix: query tests * fix: use prepare funcs * fix: go mod * 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 * fix: go tests * feat: add member funcs * feat: add member model * feat: add member events * feat: add member repo model * fix: better error func testing * fix: project member funcs * fix: add tests * fix: add tests * feat: implement member requests * fix: merge master * fix: merge master * fix: read existing in project repo * fix: fix tests * feat: add internal cache * feat: add cache mock * fix: return values of cache mock * feat: add project role * fix: add cache config * fix: add role to eventstore * fix: use eventstore sdk * fix: use eventstore sdk * fix: add project role grpc requests * fix: fix getby id * fix: changes for mr * fix: change value to interface * feat: add app event creations * fix: searchmethods * Update internal/project/model/project_member.go Co-Authored-By: Silvan <[email protected]> * fix: use get project func * fix: append events * fix: check if value is string on equal ignore case * fix: add changes test * fix: add go mod * fix: add some tests * fix: return err not nil * fix: return err not nil * fix: add aggregate funcs and tests * fix: add oidc aggregate funcs and tests * fix: add oidc * fix: add some tests * fix: tests * fix: oidc validation * fix: generate client secret * fix: generate client id * fix: test change app * fix: deactivate/reactivate application * fix: change oidc config * fix: change oidc config secret * fix: implement grpc app funcs * fix: add application requests * fix: converter * fix: converter * fix: converter and generate clientid * fix: tests * feat: project grant aggregate * feat: project grant * fix: project grant check if role existing * fix: project grant requests * fix: project grant fixes * fix: project grant member model * fix: project grant member aggregate * fix: project grant member eventstore * fix: project grant member requests * fix: problems after merger * fix: new commit * fix: remove enum converter * Update internal/project/model/project_grant.go Co-Authored-By: Livio Amstutz <[email protected]> * Update internal/project/model/project_grant.go Co-Authored-By: Livio Amstutz <[email protected]> * Update internal/project/model/project.go Co-Authored-By: Livio Amstutz <[email protected]> * fix: better sub object handling * fix: imports Co-authored-by: adlerhurst <[email protected]> Co-authored-by: livio-a <[email protected]>
This commit is contained in:
co-authored by
Silvan
Livio Amstutz
parent
04b4cd80b8
commit
8464cfa4fe
@@ -410,6 +410,11 @@ var ManagementService_AuthMethods = utils_auth.MethodMapping{
|
||||
CheckParam: "",
|
||||
},
|
||||
|
||||
"/caos.zitadel.management.api.v1.ManagementService/RemoveProjectGrant": utils_auth.Option{
|
||||
Permission: "project.grant.delete",
|
||||
CheckParam: "",
|
||||
},
|
||||
|
||||
"/caos.zitadel.management.api.v1.ManagementService/GetProjectGrantMemberRoles": utils_auth.Option{
|
||||
Permission: "project.grant.member.read",
|
||||
CheckParam: "",
|
||||
|
||||
+1853
-1802
File diff suppressed because it is too large
Load Diff
@@ -2566,6 +2566,44 @@ func request_ManagementService_ReactivateProjectGrant_0(ctx context.Context, mar
|
||||
|
||||
}
|
||||
|
||||
func request_ManagementService_RemoveProjectGrant_0(ctx context.Context, marshaler runtime.Marshaler, client ManagementServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
|
||||
var protoReq ProjectGrantID
|
||||
var metadata runtime.ServerMetadata
|
||||
|
||||
var (
|
||||
val string
|
||||
ok bool
|
||||
err error
|
||||
_ = err
|
||||
)
|
||||
|
||||
val, ok = pathParams["project_id"]
|
||||
if !ok {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "project_id")
|
||||
}
|
||||
|
||||
protoReq.ProjectId, err = runtime.String(val)
|
||||
|
||||
if err != nil {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "project_id", err)
|
||||
}
|
||||
|
||||
val, ok = pathParams["id"]
|
||||
if !ok {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id")
|
||||
}
|
||||
|
||||
protoReq.Id, err = runtime.String(val)
|
||||
|
||||
if err != nil {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id", err)
|
||||
}
|
||||
|
||||
msg, err := client.RemoveProjectGrant(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
|
||||
return msg, metadata, err
|
||||
|
||||
}
|
||||
|
||||
func request_ManagementService_GetProjectGrantMemberRoles_0(ctx context.Context, marshaler runtime.Marshaler, client ManagementServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
|
||||
var protoReq empty.Empty
|
||||
var metadata runtime.ServerMetadata
|
||||
@@ -5298,6 +5336,26 @@ func RegisterManagementServiceHandlerClient(ctx context.Context, mux *runtime.Se
|
||||
|
||||
})
|
||||
|
||||
mux.Handle("DELETE", pattern_ManagementService_RemoveProjectGrant_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
|
||||
ctx, cancel := context.WithCancel(req.Context())
|
||||
defer cancel()
|
||||
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
|
||||
rctx, err := runtime.AnnotateContext(ctx, mux, req)
|
||||
if err != nil {
|
||||
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
|
||||
return
|
||||
}
|
||||
resp, md, err := request_ManagementService_RemoveProjectGrant_0(rctx, inboundMarshaler, client, req, pathParams)
|
||||
ctx = runtime.NewServerMetadataContext(ctx, md)
|
||||
if err != nil {
|
||||
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
|
||||
return
|
||||
}
|
||||
|
||||
forward_ManagementService_RemoveProjectGrant_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
|
||||
|
||||
})
|
||||
|
||||
mux.Handle("GET", pattern_ManagementService_GetProjectGrantMemberRoles_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
|
||||
ctx, cancel := context.WithCancel(req.Context())
|
||||
defer cancel()
|
||||
@@ -5946,6 +6004,8 @@ var (
|
||||
|
||||
pattern_ManagementService_ReactivateProjectGrant_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2, 1, 0, 4, 1, 5, 3, 2, 4}, []string{"projects", "project_id", "grants", "id", "_reactivate"}, ""))
|
||||
|
||||
pattern_ManagementService_RemoveProjectGrant_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"projects", "project_id", "grants", "id"}, ""))
|
||||
|
||||
pattern_ManagementService_GetProjectGrantMemberRoles_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"projects", "grants", "members", "roles"}, ""))
|
||||
|
||||
pattern_ManagementService_SearchProjectGrantMembers_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2, 1, 0, 4, 1, 5, 3, 2, 4, 2, 5}, []string{"projects", "project_id", "grants", "grant_id", "members", "_search"}, ""))
|
||||
@@ -6160,6 +6220,8 @@ var (
|
||||
|
||||
forward_ManagementService_ReactivateProjectGrant_0 = runtime.ForwardResponseMessage
|
||||
|
||||
forward_ManagementService_RemoveProjectGrant_0 = runtime.ForwardResponseMessage
|
||||
|
||||
forward_ManagementService_GetProjectGrantMemberRoles_0 = runtime.ForwardResponseMessage
|
||||
|
||||
forward_ManagementService_SearchProjectGrantMembers_0 = runtime.ForwardResponseMessage
|
||||
|
||||
@@ -1760,7 +1760,7 @@
|
||||
"200": {
|
||||
"description": "A successful response.",
|
||||
"schema": {
|
||||
"properties": {}
|
||||
"$ref": "#/definitions/v1ProjectGrantMember"
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -1870,7 +1870,7 @@
|
||||
"200": {
|
||||
"description": "A successful response.",
|
||||
"schema": {
|
||||
"properties": {}
|
||||
"$ref": "#/definitions/v1ProjectGrantMember"
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -1936,6 +1936,34 @@
|
||||
"ManagementService"
|
||||
]
|
||||
},
|
||||
"delete": {
|
||||
"operationId": "RemoveProjectGrant",
|
||||
"responses": {
|
||||
"200": {
|
||||
"description": "A successful response.",
|
||||
"schema": {
|
||||
"properties": {}
|
||||
}
|
||||
}
|
||||
},
|
||||
"parameters": [
|
||||
{
|
||||
"name": "project_id",
|
||||
"in": "path",
|
||||
"required": true,
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"name": "id",
|
||||
"in": "path",
|
||||
"required": true,
|
||||
"type": "string"
|
||||
}
|
||||
],
|
||||
"tags": [
|
||||
"ManagementService"
|
||||
]
|
||||
},
|
||||
"put": {
|
||||
"operationId": "UpdateProjectGrant",
|
||||
"responses": {
|
||||
@@ -4435,7 +4463,7 @@
|
||||
"granted_org_domain": {
|
||||
"type": "string"
|
||||
},
|
||||
"role_names": {
|
||||
"role_keys": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string"
|
||||
@@ -4470,7 +4498,7 @@
|
||||
"granted_org_id": {
|
||||
"type": "string"
|
||||
},
|
||||
"role_names": {
|
||||
"role_keys": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string"
|
||||
@@ -4708,7 +4736,7 @@
|
||||
"id": {
|
||||
"type": "string"
|
||||
},
|
||||
"role_names": {
|
||||
"role_keys": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string"
|
||||
@@ -4731,7 +4759,7 @@
|
||||
"project_id": {
|
||||
"type": "string"
|
||||
},
|
||||
"role_names": {
|
||||
"role_keys": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string"
|
||||
@@ -4787,7 +4815,7 @@
|
||||
"id": {
|
||||
"type": "string"
|
||||
},
|
||||
"role_names": {
|
||||
"role_keys": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string"
|
||||
@@ -5228,7 +5256,7 @@
|
||||
"id": {
|
||||
"type": "string"
|
||||
},
|
||||
"role_names": {
|
||||
"role_keys": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string"
|
||||
@@ -5486,7 +5514,7 @@
|
||||
"project_id": {
|
||||
"type": "string"
|
||||
},
|
||||
"role_names": {
|
||||
"role_keys": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string"
|
||||
@@ -5542,7 +5570,7 @@
|
||||
"project_id": {
|
||||
"type": "string"
|
||||
},
|
||||
"role_names": {
|
||||
"role_keys": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string"
|
||||
@@ -5645,7 +5673,7 @@
|
||||
"id": {
|
||||
"type": "string"
|
||||
},
|
||||
"role_names": {
|
||||
"role_keys": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string"
|
||||
|
||||
@@ -58,14 +58,14 @@ func (mr *MockManagementServiceClientMockRecorder) AddOrgMember(arg0, arg1 inter
|
||||
}
|
||||
|
||||
// AddProjectGrantMember mocks base method
|
||||
func (m *MockManagementServiceClient) AddProjectGrantMember(arg0 context.Context, arg1 *grpc.ProjectGrantMemberAdd, arg2 ...grpc0.CallOption) (*emptypb.Empty, error) {
|
||||
func (m *MockManagementServiceClient) AddProjectGrantMember(arg0 context.Context, arg1 *grpc.ProjectGrantMemberAdd, arg2 ...grpc0.CallOption) (*grpc.ProjectGrantMember, error) {
|
||||
m.ctrl.T.Helper()
|
||||
varargs := []interface{}{arg0, arg1}
|
||||
for _, a := range arg2 {
|
||||
varargs = append(varargs, a)
|
||||
}
|
||||
ret := m.ctrl.Call(m, "AddProjectGrantMember", varargs...)
|
||||
ret0, _ := ret[0].(*emptypb.Empty)
|
||||
ret0, _ := ret[0].(*grpc.ProjectGrantMember)
|
||||
ret1, _ := ret[1].(error)
|
||||
return ret0, ret1
|
||||
}
|
||||
@@ -178,14 +178,14 @@ func (mr *MockManagementServiceClientMockRecorder) ChangeOrgMember(arg0, arg1 in
|
||||
}
|
||||
|
||||
// ChangeProjectGrantMember mocks base method
|
||||
func (m *MockManagementServiceClient) ChangeProjectGrantMember(arg0 context.Context, arg1 *grpc.ProjectGrantMemberChange, arg2 ...grpc0.CallOption) (*emptypb.Empty, error) {
|
||||
func (m *MockManagementServiceClient) ChangeProjectGrantMember(arg0 context.Context, arg1 *grpc.ProjectGrantMemberChange, arg2 ...grpc0.CallOption) (*grpc.ProjectGrantMember, error) {
|
||||
m.ctrl.T.Helper()
|
||||
varargs := []interface{}{arg0, arg1}
|
||||
for _, a := range arg2 {
|
||||
varargs = append(varargs, a)
|
||||
}
|
||||
ret := m.ctrl.Call(m, "ChangeProjectGrantMember", varargs...)
|
||||
ret0, _ := ret[0].(*emptypb.Empty)
|
||||
ret0, _ := ret[0].(*grpc.ProjectGrantMember)
|
||||
ret1, _ := ret[1].(error)
|
||||
return ret0, ret1
|
||||
}
|
||||
@@ -1417,6 +1417,26 @@ func (mr *MockManagementServiceClientMockRecorder) RegenerateOIDCClientSecret(ar
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RegenerateOIDCClientSecret", reflect.TypeOf((*MockManagementServiceClient)(nil).RegenerateOIDCClientSecret), varargs...)
|
||||
}
|
||||
|
||||
// RemoveApplication mocks base method
|
||||
func (m *MockManagementServiceClient) RemoveApplication(arg0 context.Context, arg1 *grpc.ApplicationID, arg2 ...grpc0.CallOption) (*emptypb.Empty, error) {
|
||||
m.ctrl.T.Helper()
|
||||
varargs := []interface{}{arg0, arg1}
|
||||
for _, a := range arg2 {
|
||||
varargs = append(varargs, a)
|
||||
}
|
||||
ret := m.ctrl.Call(m, "RemoveApplication", varargs...)
|
||||
ret0, _ := ret[0].(*emptypb.Empty)
|
||||
ret1, _ := ret[1].(error)
|
||||
return ret0, ret1
|
||||
}
|
||||
|
||||
// RemoveApplication indicates an expected call of RemoveApplication
|
||||
func (mr *MockManagementServiceClientMockRecorder) RemoveApplication(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
varargs := append([]interface{}{arg0, arg1}, arg2...)
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RemoveApplication", reflect.TypeOf((*MockManagementServiceClient)(nil).RemoveApplication), varargs...)
|
||||
}
|
||||
|
||||
// RemoveOrgMember mocks base method
|
||||
func (m *MockManagementServiceClient) RemoveOrgMember(arg0 context.Context, arg1 *grpc.RemoveOrgMemberRequest, arg2 ...grpc0.CallOption) (*emptypb.Empty, error) {
|
||||
m.ctrl.T.Helper()
|
||||
@@ -1437,6 +1457,26 @@ func (mr *MockManagementServiceClientMockRecorder) RemoveOrgMember(arg0, arg1 in
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RemoveOrgMember", reflect.TypeOf((*MockManagementServiceClient)(nil).RemoveOrgMember), varargs...)
|
||||
}
|
||||
|
||||
// RemoveProjectGrant mocks base method
|
||||
func (m *MockManagementServiceClient) RemoveProjectGrant(arg0 context.Context, arg1 *grpc.ProjectGrantID, arg2 ...grpc0.CallOption) (*emptypb.Empty, error) {
|
||||
m.ctrl.T.Helper()
|
||||
varargs := []interface{}{arg0, arg1}
|
||||
for _, a := range arg2 {
|
||||
varargs = append(varargs, a)
|
||||
}
|
||||
ret := m.ctrl.Call(m, "RemoveProjectGrant", varargs...)
|
||||
ret0, _ := ret[0].(*emptypb.Empty)
|
||||
ret1, _ := ret[1].(error)
|
||||
return ret0, ret1
|
||||
}
|
||||
|
||||
// RemoveProjectGrant indicates an expected call of RemoveProjectGrant
|
||||
func (mr *MockManagementServiceClientMockRecorder) RemoveProjectGrant(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
varargs := append([]interface{}{arg0, arg1}, arg2...)
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RemoveProjectGrant", reflect.TypeOf((*MockManagementServiceClient)(nil).RemoveProjectGrant), varargs...)
|
||||
}
|
||||
|
||||
// RemoveProjectGrantMember mocks base method
|
||||
func (m *MockManagementServiceClient) RemoveProjectGrantMember(arg0 context.Context, arg1 *grpc.ProjectGrantMemberRemove, arg2 ...grpc0.CallOption) (*emptypb.Empty, error) {
|
||||
m.ctrl.T.Helper()
|
||||
|
||||
@@ -10,23 +10,49 @@ func (s *Server) GetProjectGrantMemberRoles(ctx context.Context, _ *empty.Empty)
|
||||
return nil, errors.ThrowUnimplemented(nil, "GRPC-mGo89", "Not implemented")
|
||||
}
|
||||
|
||||
func (s *Server) SearchProjectGrants(ctx context.Context, request *ProjectGrantSearchRequest) (*ProjectGrantSearchResponse, error) {
|
||||
func (s *Server) SearchProjectGrants(ctx context.Context, in *ProjectGrantSearchRequest) (*ProjectGrantSearchResponse, error) {
|
||||
return nil, errors.ThrowUnimplemented(nil, "GRPC-po9fs", "Not implemented")
|
||||
}
|
||||
|
||||
func (s *Server) ProjectGrantByID(ctx context.Context, request *ProjectGrantID) (*ProjectGrant, error) {
|
||||
return nil, errors.ThrowUnimplemented(nil, "GRPC-nmr54", "Not implemented")
|
||||
func (s *Server) ProjectGrantByID(ctx context.Context, in *ProjectGrantID) (*ProjectGrant, error) {
|
||||
grant, err := s.project.ProjectGrantByID(ctx, in.ProjectId, in.Id)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return projectGrantFromModel(grant), nil
|
||||
}
|
||||
|
||||
func (s *Server) CreateProjectGrant(ctx context.Context, in *ProjectGrantCreate) (*ProjectGrant, error) {
|
||||
return nil, errors.ThrowUnimplemented(nil, "GRPC-fi45f", "Not implemented")
|
||||
grant, err := s.project.AddProjectGrant(ctx, projectGrantCreateToModel(in))
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return projectGrantFromModel(grant), nil
|
||||
}
|
||||
func (s *Server) UpdateProjectGrant(ctx context.Context, in *ProjectGrantUpdate) (*ProjectGrant, error) {
|
||||
return nil, errors.ThrowUnimplemented(nil, "GRPC-nm7Ds", "Not implemented")
|
||||
grant, err := s.project.ChangeProjectGrant(ctx, projectGrantUpdateToModel(in))
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return projectGrantFromModel(grant), nil
|
||||
}
|
||||
func (s *Server) DeactivateProjectGrant(ctx context.Context, in *ProjectGrantID) (*ProjectGrant, error) {
|
||||
return nil, errors.ThrowUnimplemented(nil, "GRPC-xkwpr", "Not implemented")
|
||||
grant, err := s.project.DeactivateProjectGrant(ctx, in.ProjectId, in.Id)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return projectGrantFromModel(grant), nil
|
||||
}
|
||||
|
||||
func (s *Server) ReactivateProjectGrant(ctx context.Context, in *ProjectGrantID) (*ProjectGrant, error) {
|
||||
return nil, errors.ThrowUnimplemented(nil, "GRPC-mdk23", "Not implemented")
|
||||
grant, err := s.project.ReactivateProjectGrant(ctx, in.ProjectId, in.Id)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return projectGrantFromModel(grant), nil
|
||||
}
|
||||
|
||||
func (s *Server) RemoveProjectGrant(ctx context.Context, in *ProjectGrantID) (*empty.Empty, error) {
|
||||
err := s.project.RemoveProjectGrant(ctx, in.ProjectId, in.Id)
|
||||
return &empty.Empty{}, err
|
||||
}
|
||||
|
||||
@@ -0,0 +1,57 @@
|
||||
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 projectGrantFromModel(grant *proj_model.ProjectGrant) *ProjectGrant {
|
||||
creationDate, err := ptypes.TimestampProto(grant.CreationDate)
|
||||
logging.Log("GRPC-8d73s").OnError(err).Debug("unable to parse timestamp")
|
||||
|
||||
changeDate, err := ptypes.TimestampProto(grant.ChangeDate)
|
||||
logging.Log("GRPC-dlso3").OnError(err).Debug("unable to parse timestamp")
|
||||
|
||||
return &ProjectGrant{
|
||||
Id: grant.GrantID,
|
||||
State: projectGrantStateFromModel(grant.State),
|
||||
CreationDate: creationDate,
|
||||
ChangeDate: changeDate,
|
||||
GrantedOrgId: grant.GrantedOrgID,
|
||||
RoleKeys: grant.RoleKeys,
|
||||
Sequence: grant.Sequence,
|
||||
}
|
||||
}
|
||||
|
||||
func projectGrantCreateToModel(grant *ProjectGrantCreate) *proj_model.ProjectGrant {
|
||||
return &proj_model.ProjectGrant{
|
||||
ObjectRoot: models.ObjectRoot{
|
||||
AggregateID: grant.ProjectId,
|
||||
},
|
||||
GrantedOrgID: grant.GrantedOrgId,
|
||||
RoleKeys: grant.RoleKeys,
|
||||
}
|
||||
}
|
||||
|
||||
func projectGrantUpdateToModel(grant *ProjectGrantUpdate) *proj_model.ProjectGrant {
|
||||
return &proj_model.ProjectGrant{
|
||||
ObjectRoot: models.ObjectRoot{
|
||||
AggregateID: grant.ProjectId,
|
||||
},
|
||||
GrantID: grant.Id,
|
||||
RoleKeys: grant.RoleKeys,
|
||||
}
|
||||
}
|
||||
|
||||
func projectGrantStateFromModel(state proj_model.ProjectGrantState) ProjectGrantState {
|
||||
switch state {
|
||||
case proj_model.PROJECTGRANTSTATE_ACTIVE:
|
||||
return ProjectGrantState_PROJECTGRANTSTATE_ACTIVE
|
||||
case proj_model.PROJECTGRANTSTATE_INACTIVE:
|
||||
return ProjectGrantState_PROJECTGRANTSTATE_INACTIVE
|
||||
default:
|
||||
return ProjectGrantState_PROJECTGRANTSTATE_UNSPECIFIED
|
||||
}
|
||||
}
|
||||
@@ -10,14 +10,23 @@ func (s *Server) SearchProjectGrantMembers(ctx context.Context, request *Project
|
||||
return nil, errors.ThrowUnimplemented(nil, "GRPC-pldE4", "Not implemented")
|
||||
}
|
||||
|
||||
func (s *Server) AddProjectGrantMember(ctx context.Context, in *ProjectGrantMemberAdd) (*empty.Empty, error) {
|
||||
return nil, errors.ThrowUnimplemented(nil, "GRPC-po8r3", "Not implemented")
|
||||
func (s *Server) AddProjectGrantMember(ctx context.Context, in *ProjectGrantMemberAdd) (*ProjectGrantMember, error) {
|
||||
member, err := s.project.AddProjectGrantMember(ctx, projectGrantMemberAddToModel(in))
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return projectGrantMemberFromModel(member), nil
|
||||
}
|
||||
|
||||
func (s *Server) ChangeProjectGrantMember(ctx context.Context, in *ProjectGrantMemberChange) (*empty.Empty, error) {
|
||||
return nil, errors.ThrowUnimplemented(nil, "GRPC-asd3c", "Not implemented")
|
||||
func (s *Server) ChangeProjectGrantMember(ctx context.Context, in *ProjectGrantMemberChange) (*ProjectGrantMember, error) {
|
||||
member, err := s.project.ChangeProjectGrantMember(ctx, projectGrantMemberChangeToModel(in))
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return projectGrantMemberFromModel(member), nil
|
||||
}
|
||||
|
||||
func (s *Server) RemoveProjectGrantMember(ctx context.Context, in *ProjectGrantMemberRemove) (*empty.Empty, error) {
|
||||
return nil, errors.ThrowUnimplemented(nil, "GRPC-04kfs", "Not implemented")
|
||||
err := s.project.RemoveProjectGrantMember(ctx, in.ProjectId, in.GrantId, in.UserId)
|
||||
return &empty.Empty{}, err
|
||||
}
|
||||
|
||||
@@ -0,0 +1,46 @@
|
||||
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 projectGrantMemberFromModel(member *proj_model.ProjectGrantMember) *ProjectGrantMember {
|
||||
creationDate, err := ptypes.TimestampProto(member.CreationDate)
|
||||
logging.Log("GRPC-7du3s").OnError(err).Debug("unable to parse timestamp")
|
||||
|
||||
changeDate, err := ptypes.TimestampProto(member.ChangeDate)
|
||||
logging.Log("GRPC-8duew").OnError(err).Debug("unable to parse timestamp")
|
||||
|
||||
return &ProjectGrantMember{
|
||||
CreationDate: creationDate,
|
||||
ChangeDate: changeDate,
|
||||
Sequence: member.Sequence,
|
||||
UserId: member.UserID,
|
||||
Roles: member.Roles,
|
||||
}
|
||||
}
|
||||
|
||||
func projectGrantMemberAddToModel(member *ProjectGrantMemberAdd) *proj_model.ProjectGrantMember {
|
||||
return &proj_model.ProjectGrantMember{
|
||||
ObjectRoot: models.ObjectRoot{
|
||||
AggregateID: member.ProjectId,
|
||||
},
|
||||
GrantID: member.GrantId,
|
||||
UserID: member.UserId,
|
||||
Roles: member.Roles,
|
||||
}
|
||||
}
|
||||
|
||||
func projectGrantMemberChangeToModel(member *ProjectGrantMemberChange) *proj_model.ProjectGrantMember {
|
||||
return &proj_model.ProjectGrantMember{
|
||||
ObjectRoot: models.ObjectRoot{
|
||||
AggregateID: member.ProjectId,
|
||||
},
|
||||
GrantID: member.GrantId,
|
||||
UserID: member.UserId,
|
||||
Roles: member.Roles,
|
||||
}
|
||||
}
|
||||
@@ -931,6 +931,15 @@ service ManagementService {
|
||||
};
|
||||
}
|
||||
|
||||
rpc RemoveProjectGrant(ProjectGrantID) returns (google.protobuf.Empty) {
|
||||
option (google.api.http) = {
|
||||
delete: "/projects/{project_id}/grants/{id}"
|
||||
};
|
||||
|
||||
option (caos.zitadel.utils.v1.auth_option) = {
|
||||
permission: "project.grant.delete"
|
||||
};
|
||||
}
|
||||
|
||||
//PROJECT_GRANT_MEMBER
|
||||
rpc GetProjectGrantMemberRoles(google.protobuf.Empty) returns (ProjectGrantMemberRoles) {
|
||||
@@ -953,7 +962,7 @@ service ManagementService {
|
||||
};
|
||||
}
|
||||
|
||||
rpc AddProjectGrantMember(ProjectGrantMemberAdd) returns (google.protobuf.Empty) {
|
||||
rpc AddProjectGrantMember(ProjectGrantMemberAdd) returns (ProjectGrantMember) {
|
||||
option (google.api.http) = {
|
||||
post: "/projects/{project_id}/grants/{grant_id}/members"
|
||||
body: "*"
|
||||
@@ -964,7 +973,7 @@ service ManagementService {
|
||||
};
|
||||
}
|
||||
|
||||
rpc ChangeProjectGrantMember(ProjectGrantMemberChange) returns (google.protobuf.Empty) {
|
||||
rpc ChangeProjectGrantMember(ProjectGrantMemberChange) returns (ProjectGrantMember) {
|
||||
option (google.api.http) = {
|
||||
put: "/projects/{project_id}/grants/{grant_id}/members/{user_id}"
|
||||
body: "*"
|
||||
@@ -1946,7 +1955,7 @@ message ProjectGrant {
|
||||
string granted_org_id = 3;
|
||||
string granted_org_name = 4;
|
||||
string granted_org_domain = 5;
|
||||
repeated string role_names = 6;
|
||||
repeated string role_keys = 6;
|
||||
ProjectGrantState state = 7;
|
||||
google.protobuf.Timestamp creation_date = 8;
|
||||
google.protobuf.Timestamp change_date = 9;
|
||||
@@ -1957,13 +1966,13 @@ message ProjectGrant {
|
||||
message ProjectGrantCreate {
|
||||
string project_id = 1;
|
||||
string granted_org_id = 2;
|
||||
repeated string role_names = 3;
|
||||
repeated string role_keys = 3;
|
||||
}
|
||||
|
||||
message ProjectGrantUpdate {
|
||||
string project_id = 1;
|
||||
string id = 2;
|
||||
repeated string role_names = 3;
|
||||
repeated string role_keys = 3;
|
||||
}
|
||||
|
||||
message ProjectGrantID {
|
||||
@@ -2064,7 +2073,7 @@ message UserGrant {
|
||||
string user_id = 2;
|
||||
string org_id = 3;
|
||||
string project_id = 4;
|
||||
repeated string role_names = 5;
|
||||
repeated string role_keys = 5;
|
||||
UserGrantState state = 6;
|
||||
google.protobuf.Timestamp creation_date = 7;
|
||||
google.protobuf.Timestamp change_date = 8;
|
||||
@@ -2082,13 +2091,13 @@ message UserGrantCreate {
|
||||
string user_id = 1;
|
||||
string org_id = 2;
|
||||
string project_id = 3;
|
||||
repeated string role_names = 4;
|
||||
repeated string role_keys = 4;
|
||||
}
|
||||
|
||||
message UserGrantUpdate {
|
||||
string user_id = 1;
|
||||
string id = 2;
|
||||
repeated string role_names = 3;
|
||||
repeated string role_keys = 3;
|
||||
}
|
||||
|
||||
message UserGrantID {
|
||||
@@ -2106,7 +2115,7 @@ message ProjectUserGrantUpdate {
|
||||
string project_id = 1;
|
||||
string user_id = 2;
|
||||
string id = 3;
|
||||
repeated string role_names = 4;
|
||||
repeated string role_keys = 4;
|
||||
}
|
||||
|
||||
message ProjectGrantUserGrantID {
|
||||
@@ -2120,14 +2129,14 @@ message ProjectGrantUserGrantCreate {
|
||||
string org_id = 2;
|
||||
string project_grant_id = 3;
|
||||
string project_id = 4 [(validate.rules).string.min_len = 1];
|
||||
repeated string role_names = 5;
|
||||
repeated string role_keys = 5;
|
||||
}
|
||||
|
||||
message ProjectGrantUserGrantUpdate {
|
||||
string project_grant_id = 1;
|
||||
string user_id = 2;
|
||||
string id = 3;
|
||||
repeated string role_names = 4;
|
||||
repeated string role_keys = 4;
|
||||
}
|
||||
|
||||
enum UserGrantState {
|
||||
|
||||
Reference in New Issue
Block a user