2020-04-07 11:23:04 +00:00
|
|
|
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{
|
2020-04-21 15:00:32 +00:00
|
|
|
Id: project.AggregateID,
|
2020-04-07 11:23:04 +00:00
|
|
|
State: projectStateFromModel(project.State),
|
|
|
|
CreationDate: creationDate,
|
|
|
|
ChangeDate: changeDate,
|
|
|
|
Name: project.Name,
|
|
|
|
Sequence: project.Sequence,
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2020-05-11 10:16:29 +00:00
|
|
|
func grantedProjectSearchResponseFromModel(response *proj_model.GrantedProjectSearchResponse) *GrantedProjectSearchResponse {
|
|
|
|
return &GrantedProjectSearchResponse{
|
|
|
|
Offset: response.Offset,
|
|
|
|
Limit: response.Limit,
|
|
|
|
TotalResult: response.TotalResult,
|
|
|
|
Result: grantedProjectsFromModel(response.Result),
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func grantedProjectsFromModel(projects []*proj_model.GrantedProjectView) []*GrantedProject {
|
|
|
|
converted := make([]*GrantedProject, len(projects))
|
|
|
|
for i, project := range projects {
|
|
|
|
converted[i] = grantedProjectFromModel(project)
|
|
|
|
}
|
|
|
|
return converted
|
|
|
|
}
|
|
|
|
|
|
|
|
func grantedProjectFromModel(project *proj_model.GrantedProjectView) *GrantedProject {
|
|
|
|
creationDate, err := ptypes.TimestampProto(project.CreationDate)
|
|
|
|
logging.Log("GRPC-dlso3").OnError(err).Debug("unable to parse timestamp")
|
|
|
|
|
|
|
|
changeDate, err := ptypes.TimestampProto(project.ChangeDate)
|
|
|
|
logging.Log("GRPC-sope3").OnError(err).Debug("unable to parse timestamp")
|
|
|
|
|
|
|
|
return &GrantedProject{
|
|
|
|
Id: project.ProjectID,
|
|
|
|
State: projectStateFromModel(project.State),
|
|
|
|
CreationDate: creationDate,
|
|
|
|
ChangeDate: changeDate,
|
|
|
|
Name: project.Name,
|
|
|
|
Sequence: project.Sequence,
|
|
|
|
ResourceOwner: project.ResourceOwner,
|
|
|
|
OrgId: project.OrgID,
|
|
|
|
OrgName: project.OrgName,
|
|
|
|
OrgDomain: project.OrgDomain,
|
|
|
|
GrantId: project.GrantID,
|
2020-06-10 10:39:25 +00:00
|
|
|
Type: projectTypeFromModel(project.Type),
|
2020-05-11 10:16:29 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func projectRoleSearchResponseFromModel(response *proj_model.ProjectRoleSearchResponse) *ProjectRoleSearchResponse {
|
|
|
|
return &ProjectRoleSearchResponse{
|
|
|
|
Offset: response.Offset,
|
|
|
|
Limit: response.Limit,
|
|
|
|
TotalResult: response.TotalResult,
|
|
|
|
Result: projectRoleViewsFromModel(response.Result),
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func projectRoleViewsFromModel(roles []*proj_model.ProjectRoleView) []*ProjectRoleView {
|
|
|
|
converted := make([]*ProjectRoleView, len(roles))
|
|
|
|
for i, role := range roles {
|
|
|
|
converted[i] = projectRoleViewFromModel(role)
|
|
|
|
}
|
|
|
|
return converted
|
|
|
|
}
|
|
|
|
|
|
|
|
func projectRoleViewFromModel(role *proj_model.ProjectRoleView) *ProjectRoleView {
|
|
|
|
creationDate, err := ptypes.TimestampProto(role.CreationDate)
|
|
|
|
logging.Log("GRPC-dlso3").OnError(err).Debug("unable to parse timestamp")
|
|
|
|
|
|
|
|
return &ProjectRoleView{
|
|
|
|
ProjectId: role.ProjectID,
|
|
|
|
CreationDate: creationDate,
|
|
|
|
Key: role.Key,
|
|
|
|
Group: role.Group,
|
|
|
|
DisplayName: role.DisplayName,
|
|
|
|
Sequence: role.Sequence,
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2020-04-07 11:23:04 +00:00
|
|
|
func projectStateFromModel(state proj_model.ProjectState) ProjectState {
|
|
|
|
switch state {
|
2020-04-21 15:00:32 +00:00
|
|
|
case proj_model.PROJECTSTATE_ACTIVE:
|
2020-04-07 11:23:04 +00:00
|
|
|
return ProjectState_PROJECTSTATE_ACTIVE
|
2020-04-21 15:00:32 +00:00
|
|
|
case proj_model.PROJECTSTATE_INACTIVE:
|
2020-04-07 11:23:04 +00:00
|
|
|
return ProjectState_PROJECTSTATE_INACTIVE
|
|
|
|
default:
|
|
|
|
return ProjectState_PROJECTSTATE_UNSPECIFIED
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2020-05-11 10:16:29 +00:00
|
|
|
func projectTypeFromModel(projecttype proj_model.ProjectType) ProjectType {
|
|
|
|
switch projecttype {
|
|
|
|
case proj_model.PROJECTTYPE_OWNED:
|
|
|
|
return ProjectType_PROJECTTYPE_OWNED
|
|
|
|
case proj_model.PROJECTTYPE_GRANTED:
|
|
|
|
return ProjectType_PROJECTTYPE_GRANTED
|
|
|
|
default:
|
|
|
|
return ProjectType_PROJECTTYPE_UNSPECIFIED
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2020-04-07 11:23:04 +00:00
|
|
|
func projectUpdateToModel(project *ProjectUpdateRequest) *proj_model.Project {
|
|
|
|
return &proj_model.Project{
|
|
|
|
ObjectRoot: models.ObjectRoot{
|
2020-04-21 15:00:32 +00:00
|
|
|
AggregateID: project.Id,
|
2020-04-07 11:23:04 +00:00
|
|
|
},
|
|
|
|
Name: project.Name,
|
|
|
|
}
|
|
|
|
}
|
2020-04-21 15:00:32 +00:00
|
|
|
|
|
|
|
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,
|
|
|
|
}
|
|
|
|
}
|
2020-05-11 10:16:29 +00:00
|
|
|
|
|
|
|
func grantedProjectSearchRequestsToModel(project *GrantedProjectSearchRequest) *proj_model.GrantedProjectSearchRequest {
|
|
|
|
return &proj_model.GrantedProjectSearchRequest{
|
|
|
|
Offset: project.Offset,
|
|
|
|
Limit: project.Limit,
|
|
|
|
Queries: grantedProjectSearchQueriesToModel(project.Queries),
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func grantedProjectSearchQueriesToModel(queries []*GrantedProjectSearchQuery) []*proj_model.GrantedProjectSearchQuery {
|
|
|
|
converted := make([]*proj_model.GrantedProjectSearchQuery, len(queries))
|
|
|
|
for i, q := range queries {
|
|
|
|
converted[i] = grantedProjectSearchQueryToModel(q)
|
|
|
|
}
|
|
|
|
return converted
|
|
|
|
}
|
|
|
|
|
|
|
|
func grantedProjectSearchQueryToModel(query *GrantedProjectSearchQuery) *proj_model.GrantedProjectSearchQuery {
|
|
|
|
return &proj_model.GrantedProjectSearchQuery{
|
|
|
|
Key: projectSearchKeyToModel(query.Key),
|
|
|
|
Method: searchMethodToModel(query.Method),
|
|
|
|
Value: query.Value,
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func projectSearchKeyToModel(key GrantedProjectSearchKey) proj_model.GrantedProjectSearchKey {
|
|
|
|
switch key {
|
|
|
|
case GrantedProjectSearchKey_PROJECTSEARCHKEY_PROJECT_NAME:
|
|
|
|
return proj_model.GRANTEDPROJECTSEARCHKEY_NAME
|
|
|
|
default:
|
|
|
|
return proj_model.GRANTEDPROJECTSEARCHKEY_UNSPECIFIED
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func projectRoleSearchRequestsToModel(role *ProjectRoleSearchRequest) *proj_model.ProjectRoleSearchRequest {
|
|
|
|
return &proj_model.ProjectRoleSearchRequest{
|
|
|
|
Offset: role.Offset,
|
|
|
|
Limit: role.Limit,
|
|
|
|
Queries: projectRoleSearchQueriesToModel(role.Queries),
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func projectRoleSearchQueriesToModel(queries []*ProjectRoleSearchQuery) []*proj_model.ProjectRoleSearchQuery {
|
|
|
|
converted := make([]*proj_model.ProjectRoleSearchQuery, len(queries))
|
|
|
|
for i, q := range queries {
|
|
|
|
converted[i] = projectRoleSearchQueryToModel(q)
|
|
|
|
}
|
|
|
|
return converted
|
|
|
|
}
|
|
|
|
|
|
|
|
func projectRoleSearchQueryToModel(query *ProjectRoleSearchQuery) *proj_model.ProjectRoleSearchQuery {
|
|
|
|
return &proj_model.ProjectRoleSearchQuery{
|
|
|
|
Key: projectRoleSearchKeyToModel(query.Key),
|
|
|
|
Method: searchMethodToModel(query.Method),
|
|
|
|
Value: query.Value,
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func projectRoleSearchKeyToModel(key ProjectRoleSearchKey) proj_model.ProjectRoleSearchKey {
|
|
|
|
switch key {
|
|
|
|
case ProjectRoleSearchKey_PROJECTROLESEARCHKEY_KEY:
|
|
|
|
return proj_model.PROJECTROLESEARCHKEY_KEY
|
|
|
|
case ProjectRoleSearchKey_PROJECTROLESEARCHKEY_DISPLAY_NAME:
|
|
|
|
return proj_model.PROJECTROLESEARCHKEY_DISPLAY_NAME
|
|
|
|
default:
|
|
|
|
return proj_model.PROJECTROLESEARCHKEY_UNSPECIFIED
|
|
|
|
}
|
|
|
|
}
|