mirror of
https://github.com/zitadel/zitadel.git
synced 2025-10-17 22:03:44 +00:00
feat: application commands (#50)
* 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 <livio.a@gmail.com> * 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 <silvan.reusser@gmail.com> * 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 * fix: some fixes * feat: mr changes * fix: remove state converted * fix: add default oidc config * fix: use crypto pw generator * fix: rename responsetype * create GeneratorConfig and refactor some crypto.Generator code (#70) * Update internal/project/model/project_role.go Co-Authored-By: Silvan <silvan.reusser@gmail.com> * fix: change objectroot id * fix: caos err id Co-authored-by: adlerhurst <silvan.reusser@gmail.com> Co-authored-by: livio-a <livio.a@gmail.com>
This commit is contained in:
@@ -3,33 +3,69 @@ package grpc
|
||||
import (
|
||||
"context"
|
||||
"github.com/caos/zitadel/internal/errors"
|
||||
"github.com/golang/protobuf/ptypes/empty"
|
||||
)
|
||||
|
||||
func (s *Server) SearchApplications(ctx context.Context, request *ApplicationSearchRequest) (*ApplicationSearchResponse, error) {
|
||||
func (s *Server) SearchApplications(ctx context.Context, in *ApplicationSearchRequest) (*ApplicationSearchResponse, error) {
|
||||
return nil, errors.ThrowUnimplemented(nil, "GRPC-yW23f", "Not implemented")
|
||||
}
|
||||
|
||||
func (s *Server) ApplicationByID(ctx context.Context, request *ApplicationID) (*Application, error) {
|
||||
return nil, errors.ThrowUnimplemented(nil, "GRPC-bmr6X", "Not implemented")
|
||||
func (s *Server) ApplicationByID(ctx context.Context, in *ApplicationID) (*Application, error) {
|
||||
app, err := s.project.ApplicationByID(ctx, in.ProjectId, in.Id)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return appFromModel(app), nil
|
||||
}
|
||||
|
||||
func (s *Server) CreateOIDCApplication(ctx context.Context, in *OIDCApplicationCreate) (*Application, error) {
|
||||
return nil, errors.ThrowUnimplemented(nil, "GRPC-poe4d", "Not implemented")
|
||||
app, err := s.project.AddApplication(ctx, oidcAppCreateToModel(in))
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return appFromModel(app), nil
|
||||
}
|
||||
func (s *Server) UpdateApplication(ctx context.Context, in *ApplicationUpdate) (*Application, error) {
|
||||
return nil, errors.ThrowUnimplemented(nil, "GRPC-bmt6J", "Not implemented")
|
||||
app, err := s.project.ChangeApplication(ctx, appUpdateToModel(in))
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return appFromModel(app), nil
|
||||
}
|
||||
func (s *Server) DeactivateApplication(ctx context.Context, in *ApplicationID) (*Application, error) {
|
||||
return nil, errors.ThrowUnimplemented(nil, "GRPC-cD34f", "Not implemented")
|
||||
app, err := s.project.DeactivateApplication(ctx, in.ProjectId, in.Id)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return appFromModel(app), nil
|
||||
}
|
||||
func (s *Server) ReactivateApplication(ctx context.Context, in *ApplicationID) (*Application, error) {
|
||||
return nil, errors.ThrowUnimplemented(nil, "GRPC-mo98S", "Not implemented")
|
||||
app, err := s.project.ReactivateApplication(ctx, in.ProjectId, in.Id)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return appFromModel(app), nil
|
||||
}
|
||||
|
||||
func (s *Server) RemoveApplication(ctx context.Context, in *ApplicationID) (*empty.Empty, error) {
|
||||
err := s.project.RemoveApplication(ctx, in.ProjectId, in.Id)
|
||||
return &empty.Empty{}, err
|
||||
}
|
||||
|
||||
func (s *Server) UpdateApplicationOIDCConfig(ctx context.Context, in *OIDCConfigUpdate) (*OIDCConfig, error) {
|
||||
return nil, errors.ThrowUnimplemented(nil, "GRPC-xm56g", "Not implemented")
|
||||
config, err := s.project.ChangeOIDCConfig(ctx, oidcConfigUpdateToModel(in))
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return oidcConfigFromModel(config), nil
|
||||
}
|
||||
|
||||
func (s *Server) RegenerateOIDCClientSecret(ctx context.Context, in *ApplicationID) (*ClientSecret, error) {
|
||||
return nil, errors.ThrowUnimplemented(nil, "GRPC-dlwp3", "Not implemented")
|
||||
config, err := s.project.ChangeOIDConfigSecret(ctx, in.ProjectId, in.Id)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &ClientSecret{ClientSecret: config.ClientSecretString}, nil
|
||||
}
|
||||
|
||||
func (s *Server) ApplicationChanges(ctx context.Context, changesRequest *ChangeRequest) (*Changes, error) {
|
||||
|
225
pkg/management/api/grpc/application_converter.go
Normal file
225
pkg/management/api/grpc/application_converter.go
Normal file
@@ -0,0 +1,225 @@
|
||||
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 appFromModel(app *proj_model.Application) *Application {
|
||||
creationDate, err := ptypes.TimestampProto(app.CreationDate)
|
||||
logging.Log("GRPC-iejs3").OnError(err).Debug("unable to parse timestamp")
|
||||
|
||||
changeDate, err := ptypes.TimestampProto(app.ChangeDate)
|
||||
logging.Log("GRPC-di7rw").OnError(err).Debug("unable to parse timestamp")
|
||||
|
||||
return &Application{
|
||||
Id: app.AppID,
|
||||
State: appStateFromModel(app.State),
|
||||
CreationDate: creationDate,
|
||||
ChangeDate: changeDate,
|
||||
Name: app.Name,
|
||||
Sequence: app.Sequence,
|
||||
AppConfig: appConfigFromModel(app),
|
||||
}
|
||||
}
|
||||
|
||||
func appConfigFromModel(app *proj_model.Application) isApplication_AppConfig {
|
||||
if app.Type == proj_model.APPTYPE_OIDC {
|
||||
return &Application_OidcConfig{
|
||||
OidcConfig: oidcConfigFromModel(app.OIDCConfig),
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func oidcConfigFromModel(config *proj_model.OIDCConfig) *OIDCConfig {
|
||||
return &OIDCConfig{
|
||||
RedirectUris: config.RedirectUris,
|
||||
ResponseTypes: oidcResponseTypesFromModel(config.ResponseTypes),
|
||||
GrantTypes: oidcGrantTypesFromModel(config.GrantTypes),
|
||||
ApplicationType: oidcApplicationTypeFromModel(config.ApplicationType),
|
||||
ClientId: config.ClientID,
|
||||
ClientSecret: config.ClientSecretString,
|
||||
AuthMethodType: oidcAuthMethodTypeFromModel(config.AuthMethodType),
|
||||
PostLogoutRedirectUris: config.PostLogoutRedirectUris,
|
||||
}
|
||||
}
|
||||
|
||||
func oidcAppCreateToModel(app *OIDCApplicationCreate) *proj_model.Application {
|
||||
return &proj_model.Application{
|
||||
ObjectRoot: models.ObjectRoot{
|
||||
AggregateID: app.ProjectId,
|
||||
},
|
||||
Name: app.Name,
|
||||
Type: proj_model.APPTYPE_OIDC,
|
||||
OIDCConfig: &proj_model.OIDCConfig{
|
||||
RedirectUris: app.RedirectUris,
|
||||
ResponseTypes: oidcResponseTypesToModel(app.ResponseTypes),
|
||||
GrantTypes: oidcGrantTypesToModel(app.GrantTypes),
|
||||
ApplicationType: oidcApplicationTypeToModel(app.ApplicationType),
|
||||
AuthMethodType: oidcAuthMethodTypeToModel(app.AuthMethodType),
|
||||
PostLogoutRedirectUris: app.PostLogoutRedirectUris,
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
func appUpdateToModel(app *ApplicationUpdate) *proj_model.Application {
|
||||
return &proj_model.Application{
|
||||
ObjectRoot: models.ObjectRoot{
|
||||
AggregateID: app.ProjectId,
|
||||
},
|
||||
AppID: app.Id,
|
||||
Name: app.Name,
|
||||
}
|
||||
}
|
||||
|
||||
func oidcConfigUpdateToModel(app *OIDCConfigUpdate) *proj_model.OIDCConfig {
|
||||
return &proj_model.OIDCConfig{
|
||||
ObjectRoot: models.ObjectRoot{
|
||||
AggregateID: app.ProjectId,
|
||||
},
|
||||
AppID: app.ApplicationId,
|
||||
RedirectUris: app.RedirectUris,
|
||||
ResponseTypes: oidcResponseTypesToModel(app.ResponseTypes),
|
||||
GrantTypes: oidcGrantTypesToModel(app.GrantTypes),
|
||||
ApplicationType: oidcApplicationTypeToModel(app.ApplicationType),
|
||||
AuthMethodType: oidcAuthMethodTypeToModel(app.AuthMethodType),
|
||||
PostLogoutRedirectUris: app.PostLogoutRedirectUris,
|
||||
}
|
||||
}
|
||||
|
||||
func appStateFromModel(state proj_model.AppState) AppState {
|
||||
switch state {
|
||||
case proj_model.APPSTATE_ACTIVE:
|
||||
return AppState_APPSTATE_ACTIVE
|
||||
case proj_model.APPSTATE_INACTIVE:
|
||||
return AppState_APPSTATE_INACTIVE
|
||||
default:
|
||||
return AppState_APPSTATE_UNSPECIFIED
|
||||
}
|
||||
}
|
||||
|
||||
func oidcResponseTypesToModel(responseTypes []OIDCResponseType) []proj_model.OIDCResponseType {
|
||||
if responseTypes == nil || len(responseTypes) == 0 {
|
||||
return []proj_model.OIDCResponseType{proj_model.OIDCRESPONSETYPE_CODE}
|
||||
}
|
||||
oidcResponseTypes := make([]proj_model.OIDCResponseType, len(responseTypes))
|
||||
|
||||
for i, responseType := range responseTypes {
|
||||
switch responseType {
|
||||
case OIDCResponseType_OIDCRESPONSETYPE_CODE:
|
||||
oidcResponseTypes[i] = proj_model.OIDCRESPONSETYPE_CODE
|
||||
case OIDCResponseType_OIDCRESPONSETYPE_ID_TOKEN:
|
||||
oidcResponseTypes[i] = proj_model.OIDCRESPONSETYPE_ID_TOKEN
|
||||
case OIDCResponseType_OIDCRESPONSETYPE_TOKEN:
|
||||
oidcResponseTypes[i] = proj_model.OIDCRESPONSETYPE_TOKEN
|
||||
}
|
||||
}
|
||||
|
||||
return oidcResponseTypes
|
||||
}
|
||||
|
||||
func oidcResponseTypesFromModel(responseTypes []proj_model.OIDCResponseType) []OIDCResponseType {
|
||||
oidcResponseTypes := make([]OIDCResponseType, len(responseTypes))
|
||||
|
||||
for i, responseType := range responseTypes {
|
||||
switch responseType {
|
||||
case proj_model.OIDCRESPONSETYPE_CODE:
|
||||
oidcResponseTypes[i] = OIDCResponseType_OIDCRESPONSETYPE_CODE
|
||||
case proj_model.OIDCRESPONSETYPE_ID_TOKEN:
|
||||
oidcResponseTypes[i] = OIDCResponseType_OIDCRESPONSETYPE_ID_TOKEN
|
||||
case proj_model.OIDCRESPONSETYPE_TOKEN:
|
||||
oidcResponseTypes[i] = OIDCResponseType_OIDCRESPONSETYPE_TOKEN
|
||||
}
|
||||
}
|
||||
|
||||
return oidcResponseTypes
|
||||
}
|
||||
|
||||
func oidcGrantTypesToModel(grantTypes []OIDCGrantType) []proj_model.OIDCGrantType {
|
||||
if grantTypes == nil || len(grantTypes) == 0 {
|
||||
return []proj_model.OIDCGrantType{proj_model.OIDCGRANTTYPE_AUTHORIZATION_CODE}
|
||||
}
|
||||
oidcGrantTypes := make([]proj_model.OIDCGrantType, len(grantTypes))
|
||||
|
||||
for i, grantType := range grantTypes {
|
||||
switch grantType {
|
||||
case OIDCGrantType_OIDCGRANTTYPE_AUTHORIZATION_CODE:
|
||||
oidcGrantTypes[i] = proj_model.OIDCGRANTTYPE_AUTHORIZATION_CODE
|
||||
case OIDCGrantType_OIDCGRANTTYPE_IMPLICIT:
|
||||
oidcGrantTypes[i] = proj_model.OIDCGRANTTYPE_IMPLICIT
|
||||
case OIDCGrantType_OIDCGRANTTYPE_REFRESH_TOKEN:
|
||||
oidcGrantTypes[i] = proj_model.OIDCGRANTTYPE_REFRESH_TOKEN
|
||||
}
|
||||
}
|
||||
return oidcGrantTypes
|
||||
}
|
||||
|
||||
func oidcGrantTypesFromModel(grantTypes []proj_model.OIDCGrantType) []OIDCGrantType {
|
||||
oidcGrantTypes := make([]OIDCGrantType, len(grantTypes))
|
||||
|
||||
for i, grantType := range grantTypes {
|
||||
switch grantType {
|
||||
case proj_model.OIDCGRANTTYPE_AUTHORIZATION_CODE:
|
||||
oidcGrantTypes[i] = OIDCGrantType_OIDCGRANTTYPE_AUTHORIZATION_CODE
|
||||
case proj_model.OIDCGRANTTYPE_IMPLICIT:
|
||||
oidcGrantTypes[i] = OIDCGrantType_OIDCGRANTTYPE_IMPLICIT
|
||||
case proj_model.OIDCGRANTTYPE_REFRESH_TOKEN:
|
||||
oidcGrantTypes[i] = OIDCGrantType_OIDCGRANTTYPE_REFRESH_TOKEN
|
||||
}
|
||||
}
|
||||
return oidcGrantTypes
|
||||
}
|
||||
|
||||
func oidcApplicationTypeToModel(appType OIDCApplicationType) proj_model.OIDCApplicationType {
|
||||
switch appType {
|
||||
case OIDCApplicationType_OIDCAPPLICATIONTYPE_WEB:
|
||||
return proj_model.OIDCAPPLICATIONTYPE_WEB
|
||||
case OIDCApplicationType_OIDCAPPLICATIONTYPE_USER_AGENT:
|
||||
return proj_model.OIDCAPPLICATIONTYPE_USER_AGENT
|
||||
case OIDCApplicationType_OIDCAPPLICATIONTYPE_NATIVE:
|
||||
return proj_model.OIDCAPPLICATIONTYPE_NATIVE
|
||||
}
|
||||
return proj_model.OIDCAPPLICATIONTYPE_WEB
|
||||
}
|
||||
|
||||
func oidcApplicationTypeFromModel(appType proj_model.OIDCApplicationType) OIDCApplicationType {
|
||||
switch appType {
|
||||
case proj_model.OIDCAPPLICATIONTYPE_WEB:
|
||||
return OIDCApplicationType_OIDCAPPLICATIONTYPE_WEB
|
||||
case proj_model.OIDCAPPLICATIONTYPE_USER_AGENT:
|
||||
return OIDCApplicationType_OIDCAPPLICATIONTYPE_USER_AGENT
|
||||
case proj_model.OIDCAPPLICATIONTYPE_NATIVE:
|
||||
return OIDCApplicationType_OIDCAPPLICATIONTYPE_NATIVE
|
||||
default:
|
||||
return OIDCApplicationType_OIDCAPPLICATIONTYPE_WEB
|
||||
}
|
||||
}
|
||||
|
||||
func oidcAuthMethodTypeToModel(authType OIDCAuthMethodType) proj_model.OIDCAuthMethodType {
|
||||
switch authType {
|
||||
case OIDCAuthMethodType_OIDCAUTHMETHODTYPE_BASIC:
|
||||
return proj_model.OIDCAUTHMETHODTYPE_BASIC
|
||||
case OIDCAuthMethodType_OIDCAUTHMETHODTYPE_POST:
|
||||
return proj_model.OIDCAUTHMETHODTYPE_POST
|
||||
case OIDCAuthMethodType_OIDCAUTHMETHODTYPE_NONE:
|
||||
return proj_model.OIDCAUTHMETHODTYPE_NONE
|
||||
default:
|
||||
return proj_model.OIDCAUTHMETHODTYPE_BASIC
|
||||
}
|
||||
}
|
||||
|
||||
func oidcAuthMethodTypeFromModel(authType proj_model.OIDCAuthMethodType) OIDCAuthMethodType {
|
||||
switch authType {
|
||||
case proj_model.OIDCAUTHMETHODTYPE_BASIC:
|
||||
return OIDCAuthMethodType_OIDCAUTHMETHODTYPE_BASIC
|
||||
case proj_model.OIDCAUTHMETHODTYPE_POST:
|
||||
return OIDCAuthMethodType_OIDCAUTHMETHODTYPE_POST
|
||||
case proj_model.OIDCAUTHMETHODTYPE_NONE:
|
||||
return OIDCAuthMethodType_OIDCAUTHMETHODTYPE_NONE
|
||||
default:
|
||||
return OIDCAuthMethodType_OIDCAUTHMETHODTYPE_BASIC
|
||||
}
|
||||
}
|
@@ -325,6 +325,11 @@ var ManagementService_AuthMethods = utils_auth.MethodMapping{
|
||||
CheckParam: "Id",
|
||||
},
|
||||
|
||||
"/caos.zitadel.management.api.v1.ManagementService/ChangeProjectRole": utils_auth.Option{
|
||||
Permission: "project.role.write",
|
||||
CheckParam: "Id",
|
||||
},
|
||||
|
||||
"/caos.zitadel.management.api.v1.ManagementService/RemoveProjectRole": utils_auth.Option{
|
||||
Permission: "project.role.delete",
|
||||
CheckParam: "Id",
|
||||
@@ -360,6 +365,11 @@ var ManagementService_AuthMethods = utils_auth.MethodMapping{
|
||||
CheckParam: "ProjectId",
|
||||
},
|
||||
|
||||
"/caos.zitadel.management.api.v1.ManagementService/RemoveApplication": utils_auth.Option{
|
||||
Permission: "project.app.delete",
|
||||
CheckParam: "ProjectId",
|
||||
},
|
||||
|
||||
"/caos.zitadel.management.api.v1.ManagementService/UpdateApplicationOIDCConfig": utils_auth.Option{
|
||||
Permission: "project.app.write",
|
||||
CheckParam: "ProjectId",
|
||||
|
File diff suppressed because it is too large
Load Diff
@@ -1860,6 +1860,52 @@ func request_ManagementService_AddProjectRole_0(ctx context.Context, marshaler r
|
||||
|
||||
}
|
||||
|
||||
func request_ManagementService_ChangeProjectRole_0(ctx context.Context, marshaler runtime.Marshaler, client ManagementServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
|
||||
var protoReq ProjectRoleChange
|
||||
var metadata runtime.ServerMetadata
|
||||
|
||||
newReader, berr := utilities.IOReaderFactory(req.Body)
|
||||
if berr != nil {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
|
||||
}
|
||||
if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
|
||||
}
|
||||
|
||||
var (
|
||||
val string
|
||||
ok bool
|
||||
err error
|
||||
_ = 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)
|
||||
}
|
||||
|
||||
val, ok = pathParams["key"]
|
||||
if !ok {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "key")
|
||||
}
|
||||
|
||||
protoReq.Key, err = runtime.String(val)
|
||||
|
||||
if err != nil {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "key", err)
|
||||
}
|
||||
|
||||
msg, err := client.ChangeProjectRole(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
|
||||
return msg, metadata, err
|
||||
|
||||
}
|
||||
|
||||
func request_ManagementService_RemoveProjectRole_0(ctx context.Context, marshaler runtime.Marshaler, client ManagementServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
|
||||
var protoReq ProjectRoleRemove
|
||||
var metadata runtime.ServerMetadata
|
||||
@@ -1882,15 +1928,15 @@ func request_ManagementService_RemoveProjectRole_0(ctx context.Context, marshale
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id", err)
|
||||
}
|
||||
|
||||
val, ok = pathParams["name"]
|
||||
val, ok = pathParams["key"]
|
||||
if !ok {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "name")
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "key")
|
||||
}
|
||||
|
||||
protoReq.Name, err = runtime.String(val)
|
||||
protoReq.Key, err = runtime.String(val)
|
||||
|
||||
if err != nil {
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "name", err)
|
||||
return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "key", err)
|
||||
}
|
||||
|
||||
msg, err := client.RemoveProjectRole(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
|
||||
@@ -2144,6 +2190,44 @@ func request_ManagementService_ReactivateApplication_0(ctx context.Context, mars
|
||||
|
||||
}
|
||||
|
||||
func request_ManagementService_RemoveApplication_0(ctx context.Context, marshaler runtime.Marshaler, client ManagementServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
|
||||
var protoReq ApplicationID
|
||||
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.RemoveApplication(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
|
||||
return msg, metadata, err
|
||||
|
||||
}
|
||||
|
||||
func request_ManagementService_UpdateApplicationOIDCConfig_0(ctx context.Context, marshaler runtime.Marshaler, client ManagementServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
|
||||
var protoReq OIDCConfigUpdate
|
||||
var metadata runtime.ServerMetadata
|
||||
@@ -4874,6 +4958,26 @@ func RegisterManagementServiceHandlerClient(ctx context.Context, mux *runtime.Se
|
||||
|
||||
})
|
||||
|
||||
mux.Handle("PUT", pattern_ManagementService_ChangeProjectRole_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_ChangeProjectRole_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_ChangeProjectRole_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
|
||||
|
||||
})
|
||||
|
||||
mux.Handle("DELETE", pattern_ManagementService_RemoveProjectRole_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
|
||||
ctx, cancel := context.WithCancel(req.Context())
|
||||
defer cancel()
|
||||
@@ -5014,6 +5118,26 @@ func RegisterManagementServiceHandlerClient(ctx context.Context, mux *runtime.Se
|
||||
|
||||
})
|
||||
|
||||
mux.Handle("DELETE", pattern_ManagementService_RemoveApplication_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_RemoveApplication_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_RemoveApplication_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
|
||||
|
||||
})
|
||||
|
||||
mux.Handle("PUT", pattern_ManagementService_UpdateApplicationOIDCConfig_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
|
||||
ctx, cancel := context.WithCancel(req.Context())
|
||||
defer cancel()
|
||||
@@ -5788,7 +5912,9 @@ var (
|
||||
|
||||
pattern_ManagementService_AddProjectRole_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2}, []string{"projects", "id", "roles"}, ""))
|
||||
|
||||
pattern_ManagementService_RemoveProjectRole_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", "id", "roles", "name"}, ""))
|
||||
pattern_ManagementService_ChangeProjectRole_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", "id", "roles", "key"}, ""))
|
||||
|
||||
pattern_ManagementService_RemoveProjectRole_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", "id", "roles", "key"}, ""))
|
||||
|
||||
pattern_ManagementService_SearchApplications_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2, 2, 3}, []string{"projects", "project_id", "applications", "_search"}, ""))
|
||||
|
||||
@@ -5802,6 +5928,8 @@ var (
|
||||
|
||||
pattern_ManagementService_ReactivateApplication_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", "applications", "id", "_reactivate"}, ""))
|
||||
|
||||
pattern_ManagementService_RemoveApplication_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", "applications", "id"}, ""))
|
||||
|
||||
pattern_ManagementService_UpdateApplicationOIDCConfig_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", "applications", "application_id", "oidcconfig"}, ""))
|
||||
|
||||
pattern_ManagementService_RegenerateOIDCClientSecret_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", "applications", "id", "oidcconfig", "_changeclientsecret"}, ""))
|
||||
@@ -5998,6 +6126,8 @@ var (
|
||||
|
||||
forward_ManagementService_AddProjectRole_0 = runtime.ForwardResponseMessage
|
||||
|
||||
forward_ManagementService_ChangeProjectRole_0 = runtime.ForwardResponseMessage
|
||||
|
||||
forward_ManagementService_RemoveProjectRole_0 = runtime.ForwardResponseMessage
|
||||
|
||||
forward_ManagementService_SearchApplications_0 = runtime.ForwardResponseMessage
|
||||
@@ -6012,6 +6142,8 @@ var (
|
||||
|
||||
forward_ManagementService_ReactivateApplication_0 = runtime.ForwardResponseMessage
|
||||
|
||||
forward_ManagementService_RemoveApplication_0 = runtime.ForwardResponseMessage
|
||||
|
||||
forward_ManagementService_UpdateApplicationOIDCConfig_0 = runtime.ForwardResponseMessage
|
||||
|
||||
forward_ManagementService_RegenerateOIDCClientSecret_0 = runtime.ForwardResponseMessage
|
||||
|
@@ -1318,7 +1318,7 @@
|
||||
"200": {
|
||||
"description": "A successful response.",
|
||||
"schema": {
|
||||
"properties": {}
|
||||
"$ref": "#/definitions/v1ProjectRole"
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -1343,7 +1343,7 @@
|
||||
]
|
||||
}
|
||||
},
|
||||
"/projects/{id}/roles/{name}": {
|
||||
"/projects/{id}/roles/{key}": {
|
||||
"delete": {
|
||||
"operationId": "RemoveProjectRole",
|
||||
"responses": {
|
||||
@@ -1362,7 +1362,7 @@
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"name": "name",
|
||||
"name": "key",
|
||||
"in": "path",
|
||||
"required": true,
|
||||
"type": "string"
|
||||
@@ -1371,6 +1371,42 @@
|
||||
"tags": [
|
||||
"ManagementService"
|
||||
]
|
||||
},
|
||||
"put": {
|
||||
"operationId": "ChangeProjectRole",
|
||||
"responses": {
|
||||
"200": {
|
||||
"description": "A successful response.",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/v1ProjectRole"
|
||||
}
|
||||
}
|
||||
},
|
||||
"parameters": [
|
||||
{
|
||||
"name": "id",
|
||||
"in": "path",
|
||||
"required": true,
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"name": "key",
|
||||
"in": "path",
|
||||
"required": true,
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"name": "body",
|
||||
"in": "body",
|
||||
"required": true,
|
||||
"schema": {
|
||||
"$ref": "#/definitions/v1ProjectRoleChange"
|
||||
}
|
||||
}
|
||||
],
|
||||
"tags": [
|
||||
"ManagementService"
|
||||
]
|
||||
}
|
||||
},
|
||||
"/projects/{project_id}/applications/_search": {
|
||||
@@ -1473,6 +1509,34 @@
|
||||
"ManagementService"
|
||||
]
|
||||
},
|
||||
"delete": {
|
||||
"operationId": "RemoveApplication",
|
||||
"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": "UpdateApplication",
|
||||
"responses": {
|
||||
@@ -3868,7 +3932,7 @@
|
||||
"enum": [
|
||||
"OIDCRESPONSETYPE_CODE",
|
||||
"OIDCRESPONSETYPE_ID_TOKEN",
|
||||
"OIDCRESPONSETYPE_TOKEN_ID_TOKEN"
|
||||
"OIDCRESPONSETYPE_TOKEN"
|
||||
],
|
||||
"default": "OIDCRESPONSETYPE_CODE"
|
||||
},
|
||||
@@ -4898,7 +4962,7 @@
|
||||
"project_id": {
|
||||
"type": "string"
|
||||
},
|
||||
"name": {
|
||||
"key": {
|
||||
"type": "string"
|
||||
},
|
||||
"display_name": {
|
||||
@@ -4908,6 +4972,10 @@
|
||||
"type": "string",
|
||||
"format": "date-time"
|
||||
},
|
||||
"change_date": {
|
||||
"type": "string",
|
||||
"format": "date-time"
|
||||
},
|
||||
"group": {
|
||||
"type": "string"
|
||||
},
|
||||
@@ -4923,7 +4991,24 @@
|
||||
"id": {
|
||||
"type": "string"
|
||||
},
|
||||
"name": {
|
||||
"key": {
|
||||
"type": "string"
|
||||
},
|
||||
"display_name": {
|
||||
"type": "string"
|
||||
},
|
||||
"group": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
},
|
||||
"v1ProjectRoleChange": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"id": {
|
||||
"type": "string"
|
||||
},
|
||||
"key": {
|
||||
"type": "string"
|
||||
},
|
||||
"display_name": {
|
||||
@@ -4938,7 +5023,7 @@
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"PROJECTROLESEARCHKEY_UNSPECIFIED",
|
||||
"PROJECTROLESEARCHKEY_NAME",
|
||||
"PROJECTROLESEARCHKEY_KEY",
|
||||
"PROJECTROLESEARCHKEY_DISPLAY_NAME"
|
||||
],
|
||||
"default": "PROJECTROLESEARCHKEY_UNSPECIFIED"
|
||||
|
@@ -98,14 +98,14 @@ func (mr *MockManagementServiceClientMockRecorder) AddProjectMember(arg0, arg1 i
|
||||
}
|
||||
|
||||
// AddProjectRole mocks base method
|
||||
func (m *MockManagementServiceClient) AddProjectRole(arg0 context.Context, arg1 *grpc.ProjectRoleAdd, arg2 ...grpc0.CallOption) (*emptypb.Empty, error) {
|
||||
func (m *MockManagementServiceClient) AddProjectRole(arg0 context.Context, arg1 *grpc.ProjectRoleAdd, arg2 ...grpc0.CallOption) (*grpc.ProjectRole, error) {
|
||||
m.ctrl.T.Helper()
|
||||
varargs := []interface{}{arg0, arg1}
|
||||
for _, a := range arg2 {
|
||||
varargs = append(varargs, a)
|
||||
}
|
||||
ret := m.ctrl.Call(m, "AddProjectRole", varargs...)
|
||||
ret0, _ := ret[0].(*emptypb.Empty)
|
||||
ret0, _ := ret[0].(*grpc.ProjectRole)
|
||||
ret1, _ := ret[1].(error)
|
||||
return ret0, ret1
|
||||
}
|
||||
@@ -217,6 +217,26 @@ func (mr *MockManagementServiceClientMockRecorder) ChangeProjectMember(arg0, arg
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ChangeProjectMember", reflect.TypeOf((*MockManagementServiceClient)(nil).ChangeProjectMember), varargs...)
|
||||
}
|
||||
|
||||
// ChangeProjectRole mocks base method
|
||||
func (m *MockManagementServiceClient) ChangeProjectRole(arg0 context.Context, arg1 *grpc.ProjectRoleChange, arg2 ...grpc0.CallOption) (*grpc.ProjectRole, error) {
|
||||
m.ctrl.T.Helper()
|
||||
varargs := []interface{}{arg0, arg1}
|
||||
for _, a := range arg2 {
|
||||
varargs = append(varargs, a)
|
||||
}
|
||||
ret := m.ctrl.Call(m, "ChangeProjectRole", varargs...)
|
||||
ret0, _ := ret[0].(*grpc.ProjectRole)
|
||||
ret1, _ := ret[1].(error)
|
||||
return ret0, ret1
|
||||
}
|
||||
|
||||
// ChangeProjectRole indicates an expected call of ChangeProjectRole
|
||||
func (mr *MockManagementServiceClientMockRecorder) ChangeProjectRole(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, "ChangeProjectRole", reflect.TypeOf((*MockManagementServiceClient)(nil).ChangeProjectRole), varargs...)
|
||||
}
|
||||
|
||||
// ChangeUserEmail mocks base method
|
||||
func (m *MockManagementServiceClient) ChangeUserEmail(arg0 context.Context, arg1 *grpc.UpdateUserEmailRequest, arg2 ...grpc0.CallOption) (*grpc.UserEmail, error) {
|
||||
m.ctrl.T.Helper()
|
||||
|
@@ -51,11 +51,24 @@ func (s *Server) GetGrantedProjectGrantByID(ctx context.Context, request *Grante
|
||||
return nil, errors.ThrowUnimplemented(nil, "GRPC-974vd", "Not implemented")
|
||||
}
|
||||
|
||||
func (s *Server) AddProjectRole(ctx context.Context, in *ProjectRoleAdd) (*empty.Empty, error) {
|
||||
return nil, errors.ThrowUnimplemented(nil, "GRPC-0ow2C", "Not implemented")
|
||||
func (s *Server) AddProjectRole(ctx context.Context, in *ProjectRoleAdd) (*ProjectRole, error) {
|
||||
role, err := s.project.AddProjectRole(ctx, projectRoleAddToModel(in))
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return projectRoleFromModel(role), nil
|
||||
}
|
||||
func (s *Server) ChangeProjectRole(ctx context.Context, in *ProjectRoleChange) (*ProjectRole, error) {
|
||||
role, err := s.project.ChangeProjectRole(ctx, projectRoleChangeToModel(in))
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return projectRoleFromModel(role), nil
|
||||
}
|
||||
|
||||
func (s *Server) RemoveProjectRole(ctx context.Context, in *ProjectRoleRemove) (*empty.Empty, error) {
|
||||
return nil, errors.ThrowUnimplemented(nil, "GRPC-bm6iB", "Not implemented")
|
||||
err := s.project.RemoveProjectRole(ctx, in.Id, in.Key)
|
||||
return &empty.Empty{}, err
|
||||
}
|
||||
|
||||
func (s *Server) SearchProjectRoles(ctx context.Context, in *ProjectRoleSearchRequest) (*ProjectRoleSearchResponse, error) {
|
||||
|
@@ -15,7 +15,7 @@ func projectFromModel(project *proj_model.Project) *Project {
|
||||
logging.Log("GRPC-di7rw").OnError(err).Debug("unable to parse timestamp")
|
||||
|
||||
return &Project{
|
||||
Id: project.ID,
|
||||
Id: project.AggregateID,
|
||||
State: projectStateFromModel(project.State),
|
||||
CreationDate: creationDate,
|
||||
ChangeDate: changeDate,
|
||||
@@ -26,9 +26,9 @@ func projectFromModel(project *proj_model.Project) *Project {
|
||||
|
||||
func projectStateFromModel(state proj_model.ProjectState) ProjectState {
|
||||
switch state {
|
||||
case proj_model.Active:
|
||||
case proj_model.PROJECTSTATE_ACTIVE:
|
||||
return ProjectState_PROJECTSTATE_ACTIVE
|
||||
case proj_model.Inactive:
|
||||
case proj_model.PROJECTSTATE_INACTIVE:
|
||||
return ProjectState_PROJECTSTATE_INACTIVE
|
||||
default:
|
||||
return ProjectState_PROJECTSTATE_UNSPECIFIED
|
||||
@@ -38,8 +38,47 @@ func projectStateFromModel(state proj_model.ProjectState) ProjectState {
|
||||
func projectUpdateToModel(project *ProjectUpdateRequest) *proj_model.Project {
|
||||
return &proj_model.Project{
|
||||
ObjectRoot: models.ObjectRoot{
|
||||
ID: project.Id,
|
||||
AggregateID: project.Id,
|
||||
},
|
||||
Name: project.Name,
|
||||
}
|
||||
}
|
||||
|
||||
func projectRoleFromModel(role *proj_model.ProjectRole) *ProjectRole {
|
||||
creationDate, err := ptypes.TimestampProto(role.CreationDate)
|
||||
logging.Log("GRPC-due83").OnError(err).Debug("unable to parse timestamp")
|
||||
|
||||
changeDate, err := ptypes.TimestampProto(role.ChangeDate)
|
||||
logging.Log("GRPC-id93s").OnError(err).Debug("unable to parse timestamp")
|
||||
|
||||
return &ProjectRole{
|
||||
CreationDate: creationDate,
|
||||
ChangeDate: changeDate,
|
||||
Sequence: role.Sequence,
|
||||
Key: role.Key,
|
||||
DisplayName: role.DisplayName,
|
||||
Group: role.Group,
|
||||
}
|
||||
}
|
||||
|
||||
func projectRoleAddToModel(role *ProjectRoleAdd) *proj_model.ProjectRole {
|
||||
return &proj_model.ProjectRole{
|
||||
ObjectRoot: models.ObjectRoot{
|
||||
AggregateID: role.Id,
|
||||
},
|
||||
Key: role.Key,
|
||||
DisplayName: role.DisplayName,
|
||||
Group: role.Group,
|
||||
}
|
||||
}
|
||||
|
||||
func projectRoleChangeToModel(role *ProjectRoleChange) *proj_model.ProjectRole {
|
||||
return &proj_model.ProjectRole{
|
||||
ObjectRoot: models.ObjectRoot{
|
||||
AggregateID: role.Id,
|
||||
},
|
||||
Key: role.Key,
|
||||
DisplayName: role.DisplayName,
|
||||
Group: role.Group,
|
||||
}
|
||||
}
|
||||
|
@@ -26,7 +26,7 @@ func projectMemberFromModel(member *proj_model.ProjectMember) *ProjectMember {
|
||||
func projectMemberAddToModel(member *ProjectMemberAdd) *proj_model.ProjectMember {
|
||||
return &proj_model.ProjectMember{
|
||||
ObjectRoot: models.ObjectRoot{
|
||||
ID: member.Id,
|
||||
AggregateID: member.Id,
|
||||
},
|
||||
UserID: member.UserId,
|
||||
Roles: member.Roles,
|
||||
@@ -36,7 +36,7 @@ func projectMemberAddToModel(member *ProjectMemberAdd) *proj_model.ProjectMember
|
||||
func projectMemberChangeToModel(member *ProjectMemberChange) *proj_model.ProjectMember {
|
||||
return &proj_model.ProjectMember{
|
||||
ObjectRoot: models.ObjectRoot{
|
||||
ID: member.Id,
|
||||
AggregateID: member.Id,
|
||||
},
|
||||
UserID: member.UserId,
|
||||
Roles: member.Roles,
|
||||
|
@@ -722,7 +722,7 @@ service ManagementService {
|
||||
};
|
||||
}
|
||||
|
||||
rpc AddProjectRole(ProjectRoleAdd) returns (google.protobuf.Empty) {
|
||||
rpc AddProjectRole(ProjectRoleAdd) returns (ProjectRole) {
|
||||
option (google.api.http) = {
|
||||
post: "/projects/{id}/roles"
|
||||
body: "*"
|
||||
@@ -734,9 +734,21 @@ service ManagementService {
|
||||
};
|
||||
}
|
||||
|
||||
rpc ChangeProjectRole(ProjectRoleChange) returns (ProjectRole) {
|
||||
option (google.api.http) = {
|
||||
put: "/projects/{id}/roles/{key}"
|
||||
body: "*"
|
||||
};
|
||||
|
||||
option (caos.zitadel.utils.v1.auth_option) = {
|
||||
permission: "project.role.write"
|
||||
check_field_name: "Id"
|
||||
};
|
||||
}
|
||||
|
||||
rpc RemoveProjectRole(ProjectRoleRemove) returns (google.protobuf.Empty) {
|
||||
option (google.api.http) = {
|
||||
delete: "/projects/{id}/roles/{name}"
|
||||
delete: "/projects/{id}/roles/{key}"
|
||||
};
|
||||
|
||||
option (caos.zitadel.utils.v1.auth_option) = {
|
||||
@@ -817,6 +829,17 @@ service ManagementService {
|
||||
};
|
||||
}
|
||||
|
||||
rpc RemoveApplication(ApplicationID) returns (google.protobuf.Empty) {
|
||||
option (google.api.http) = {
|
||||
delete: "/projects/{project_id}/applications/{id}"
|
||||
};
|
||||
|
||||
option (caos.zitadel.utils.v1.auth_option) = {
|
||||
permission: "project.app.delete"
|
||||
check_field_name: "ProjectId"
|
||||
};
|
||||
}
|
||||
|
||||
rpc UpdateApplicationOIDCConfig(OIDCConfigUpdate) returns (OIDCConfig) {
|
||||
option (google.api.http) = {
|
||||
put: "/projects/{project_id}/applications/{application_id}/oidcconfig"
|
||||
@@ -1724,24 +1747,32 @@ message ProjectMemberRemove {
|
||||
}
|
||||
|
||||
message ProjectRoleAdd {
|
||||
string id = 1;
|
||||
string key = 2;
|
||||
string display_name = 3;
|
||||
string group = 4;
|
||||
}
|
||||
|
||||
message ProjectRoleChange {
|
||||
string id = 1;
|
||||
string name = 2;
|
||||
string key = 2;
|
||||
string display_name = 3;
|
||||
string group = 4;
|
||||
}
|
||||
|
||||
message ProjectRole {
|
||||
string project_id = 1;
|
||||
string name = 2;
|
||||
string key = 2;
|
||||
string display_name = 3;
|
||||
google.protobuf.Timestamp creation_date = 4;
|
||||
string group = 5;
|
||||
uint64 sequence = 6;
|
||||
google.protobuf.Timestamp change_date = 5;
|
||||
string group = 6;
|
||||
uint64 sequence = 7;
|
||||
}
|
||||
|
||||
message ProjectRoleRemove {
|
||||
string id = 1;
|
||||
string name = 2;
|
||||
string key = 2;
|
||||
}
|
||||
|
||||
message ProjectRoleSearchResponse {
|
||||
@@ -1766,7 +1797,7 @@ message ProjectRoleSearchQuery {
|
||||
|
||||
enum ProjectRoleSearchKey {
|
||||
PROJECTROLESEARCHKEY_UNSPECIFIED = 0;
|
||||
PROJECTROLESEARCHKEY_NAME = 1;
|
||||
PROJECTROLESEARCHKEY_KEY = 1;
|
||||
PROJECTROLESEARCHKEY_DISPLAY_NAME = 2;
|
||||
}
|
||||
|
||||
@@ -1859,7 +1890,7 @@ message OIDCConfigUpdate {
|
||||
enum OIDCResponseType {
|
||||
OIDCRESPONSETYPE_CODE = 0;
|
||||
OIDCRESPONSETYPE_ID_TOKEN = 1;
|
||||
OIDCRESPONSETYPE_TOKEN_ID_TOKEN = 2;
|
||||
OIDCRESPONSETYPE_TOKEN = 2;
|
||||
}
|
||||
|
||||
enum OIDCGrantType {
|
||||
|
Reference in New Issue
Block a user