fix: changes (#1482)

* fix: changes

* change listquery to changequery

* fix: changes in auth

Co-authored-by: Max Peintner <max@caos.ch>
This commit is contained in:
Livio Amstutz 2021-03-29 10:32:23 +02:00 committed by GitHub
parent 0a058a821e
commit 48456b84b9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
12 changed files with 54 additions and 38 deletions

View File

@ -69,6 +69,7 @@ import {
VerifyMyPhoneRequest,
VerifyMyPhoneResponse,
} from '../proto/generated/zitadel/auth_pb';
import { ChangeQuery } from '../proto/generated/zitadel/change_pb';
import { ListQuery } from '../proto/generated/zitadel/object_pb';
import { Org, OrgQuery } from '../proto/generated/zitadel/org_pb';
import { Gender, User, WebAuthNVerification } from '../proto/generated/zitadel/user_pb';
@ -502,14 +503,15 @@ export class GrpcAuthService {
return this.grpcService.auth.verifyMyPhone(req, null).then(resp => resp.toObject());
}
public listMyUserChanges(limit: number, offset: number): Promise<ListMyUserChangesResponse.AsObject> {
public listMyUserChanges(limit: number, sequence: number): Promise<ListMyUserChangesResponse.AsObject> {
const req = new ListMyUserChangesRequest();
const query = new ListQuery();
const query = new ChangeQuery();
if (limit) {
query.setLimit(limit);
}
if (offset) {
query.setOffset(offset);
if (sequence) {
query.setSequence(sequence);
}
req.setQuery(query);
return this.grpcService.auth.listMyUserChanges(req, null).then(resp => resp.toObject());

View File

@ -5,6 +5,7 @@ import { BehaviorSubject } from 'rxjs';
import { AppQuery } from '../proto/generated/zitadel/app_pb';
import { KeyType } from '../proto/generated/zitadel/auth_n_key_pb';
import { ChangeQuery } from '../proto/generated/zitadel/change_pb';
import { IDPOwnerType } from '../proto/generated/zitadel/idp_pb';
import {
AddAPIAppRequest,
@ -1144,62 +1145,63 @@ export class ManagementService {
return this.grpcService.mgmt.bulkRemoveUserGrant(req, null).then(resp => resp.toObject());
}
public listAppChanges(appId: string, projectId: string, limit: number, offset: number): Promise<ListAppChangesResponse.AsObject> {
public listAppChanges(appId: string, projectId: string, limit: number, sequence: number): Promise<ListAppChangesResponse.AsObject> {
const req = new ListAppChangesRequest();
const query = new ListQuery();
const query = new ChangeQuery();
req.setAppId(appId);
req.setProjectId(projectId);
if (limit) {
query.setLimit(limit);
}
if (offset) {
query.setOffset(offset);
if (sequence) {
query.setSequence(sequence);
}
req.setQuery(query);
return this.grpcService.mgmt.listAppChanges(req, null).then(resp => resp.toObject());
}
public listOrgChanges(limit: number, offset: number): Promise<ListOrgChangesResponse.AsObject> {
public listOrgChanges(limit: number, sequence: number): Promise<ListOrgChangesResponse.AsObject> {
const req = new ListOrgChangesRequest();
const query = new ListQuery();
const query = new ChangeQuery();
if (limit) {
query.setLimit(limit);
}
if (offset) {
query.setOffset(offset);
if (sequence) {
query.setSequence(sequence);
}
req.setQuery(query);
return this.grpcService.mgmt.listOrgChanges(req, null).then(resp => resp.toObject());
}
public listProjectChanges(projectId: string, limit: number, offset: number): Promise<ListProjectChangesResponse.AsObject> {
public listProjectChanges(projectId: string, limit: number, sequence: number): Promise<ListProjectChangesResponse.AsObject> {
const req = new ListProjectChangesRequest();
req.setProjectId(projectId);
const query = new ListQuery();
const query = new ChangeQuery();
if (limit) {
query.setLimit(limit);
}
if (offset) {
query.setOffset(offset);
if (sequence) {
query.setSequence(sequence);
}
req.setQuery(query);
return this.grpcService.mgmt.listProjectChanges(req, null).then(resp => resp.toObject());
}
public listUserChanges(userId: string, limit: number, offset: number): Promise<ListUserChangesResponse.AsObject> {
public listUserChanges(userId: string, limit: number, sequence: number): Promise<ListUserChangesResponse.AsObject> {
const req = new ListUserChangesRequest();
req.setUserId(userId);
const query = new ListQuery();
const query = new ChangeQuery();
if (limit) {
query.setLimit(limit);
}
if (offset) {
query.setOffset(offset);
if (sequence) {
query.setSequence(sequence);
}
req.setQuery(query);

View File

@ -23,12 +23,12 @@ func (s *Server) GetMyUser(ctx context.Context, _ *auth_pb.GetMyUserRequest) (*a
}
func (s *Server) ListMyUserChanges(ctx context.Context, req *auth_pb.ListMyUserChangesRequest) (*auth_pb.ListMyUserChangesResponse, error) {
offset, limit, asc := object.ListQueryToModel(req.Query)
sequence, limit, asc := change.ChangeQueryToModel(req.Query)
features, err := s.repo.GetOrgFeatures(ctx, authz.GetCtxData(ctx).ResourceOwner)
if err != nil {
return nil, err
}
changes, err := s.repo.MyUserChanges(ctx, offset, limit, asc, features.AuditLogRetention)
changes, err := s.repo.MyUserChanges(ctx, sequence, limit, asc, features.AuditLogRetention)
if err != nil {
return nil, err
}

View File

@ -8,6 +8,13 @@ import (
"github.com/caos/zitadel/pkg/grpc/message"
)
func ChangeQueryToModel(query *change_pb.ChangeQuery) (sequence uint64, limit uint64, asc bool) {
if query == nil {
return 0, 0, false
}
return query.Sequence, uint64(query.Limit), query.Asc
}
func UserChangesToPb(changes []*user_model.UserChange) []*change_pb.Change {
c := make([]*change_pb.Change, len(changes))
for i, change := range changes {

View File

@ -32,12 +32,12 @@ func (s *Server) GetOrgByDomainGlobal(ctx context.Context, req *mgmt_pb.GetOrgBy
}
func (s *Server) ListOrgChanges(ctx context.Context, req *mgmt_pb.ListOrgChangesRequest) (*mgmt_pb.ListOrgChangesResponse, error) {
offset, limit, asc := object.ListQueryToModel(req.Query)
sequence, limit, asc := change_grpc.ChangeQueryToModel(req.Query)
features, err := s.features.GetOrgFeatures(ctx, authz.GetCtxData(ctx).OrgID)
if err != nil {
return nil, err
}
response, err := s.org.OrgChanges(ctx, authz.GetCtxData(ctx).OrgID, offset, limit, asc, features.AuditLogRetention)
response, err := s.org.OrgChanges(ctx, authz.GetCtxData(ctx).OrgID, sequence, limit, asc, features.AuditLogRetention)
if err != nil {
return nil, err
}

View File

@ -72,12 +72,12 @@ func (s *Server) ListGrantedProjects(ctx context.Context, req *mgmt_pb.ListGrant
}
func (s *Server) ListProjectChanges(ctx context.Context, req *mgmt_pb.ListProjectChangesRequest) (*mgmt_pb.ListProjectChangesResponse, error) {
offset, limit, asc := object_grpc.ListQueryToModel(req.Query)
sequence, limit, asc := change_grpc.ChangeQueryToModel(req.Query)
features, err := s.features.GetOrgFeatures(ctx, authz.GetCtxData(ctx).OrgID)
if err != nil {
return nil, err
}
res, err := s.project.ProjectChanges(ctx, req.ProjectId, offset, limit, asc, features.AuditLogRetention)
res, err := s.project.ProjectChanges(ctx, req.ProjectId, sequence, limit, asc, features.AuditLogRetention)
if err != nil {
return nil, err
}

View File

@ -41,12 +41,12 @@ func (s *Server) ListApps(ctx context.Context, req *mgmt_pb.ListAppsRequest) (*m
}
func (s *Server) ListAppChanges(ctx context.Context, req *mgmt_pb.ListAppChangesRequest) (*mgmt_pb.ListAppChangesResponse, error) {
offset, limit, asc := object_grpc.ListQueryToModel(req.Query)
sequence, limit, asc := change_grpc.ChangeQueryToModel(req.Query)
features, err := s.features.GetOrgFeatures(ctx, authz.GetCtxData(ctx).OrgID)
if err != nil {
return nil, err
}
res, err := s.project.ApplicationChanges(ctx, req.ProjectId, req.AppId, offset, limit, asc, features.AuditLogRetention)
res, err := s.project.ApplicationChanges(ctx, req.ProjectId, req.AppId, sequence, limit, asc, features.AuditLogRetention)
if err != nil {
return nil, err
}

View File

@ -52,12 +52,12 @@ func (s *Server) ListUsers(ctx context.Context, req *mgmt_pb.ListUsersRequest) (
}
func (s *Server) ListUserChanges(ctx context.Context, req *mgmt_pb.ListUserChangesRequest) (*mgmt_pb.ListUserChangesResponse, error) {
offset, limit, asc := object.ListQueryToModel(req.Query)
sequence, limit, asc := change_grpc.ChangeQueryToModel(req.Query)
features, err := s.features.GetOrgFeatures(ctx, authz.GetCtxData(ctx).OrgID)
if err != nil {
return nil, err
}
res, err := s.user.UserChanges(ctx, req.UserId, offset, limit, asc, features.AuditLogRetention)
res, err := s.user.UserChanges(ctx, req.UserId, sequence, limit, asc, features.AuditLogRetention)
if err != nil {
return nil, err
}

View File

@ -56,9 +56,6 @@ func (q *SearchQuery) LatestSequenceFilter(sequence uint64) *SearchQuery {
return q
}
sortOrder := Operation_Greater
if q.Desc {
sortOrder = Operation_Less
}
return q.setFilter(NewFilter(Field_LatestSequence, sequence, sortOrder))
}

View File

@ -420,7 +420,7 @@ message GetMyUserResponse {
}
message ListMyUserChangesRequest {
zitadel.v1.ListQuery query = 1;
zitadel.change.v1.ChangeQuery query = 1;
}
message ListMyUserChangesResponse {

View File

@ -14,4 +14,10 @@ message Change {
string editor_id = 4;
string editor_display_name = 5;
string resource_owner_id = 6;
}
message ChangeQuery {
uint64 sequence = 1;
uint32 limit = 2;
bool asc = 3;
}

View File

@ -135,6 +135,7 @@ service ManagementService {
rpc ListUserChanges(ListUserChangesRequest) returns (ListUserChangesResponse) {
option (google.api.http) = {
post: "/users/{user_id}/changes/_search"
body: "*"
};
option (zitadel.v1.auth_option) = {
@ -536,6 +537,7 @@ service ManagementService {
rpc ListOrgChanges(ListOrgChangesRequest) returns (ListOrgChangesResponse) {
option (google.api.http) = {
post: "/orgs/me/changes/_search"
body: "*"
};
option (zitadel.v1.auth_option) = {
@ -1867,7 +1869,7 @@ message ListUsersResponse {
}
message ListUserChangesRequest {
zitadel.v1.ListQuery query = 1;
zitadel.change.v1.ChangeQuery query = 1;
string user_id = 2 [(validate.rules).string = {min_len: 1, max_len: 200}];
}
@ -2265,7 +2267,7 @@ message GetOrgByDomainGlobalRequest {
}
message ListOrgChangesRequest {
zitadel.v1.ListQuery query = 1;
zitadel.change.v1.ChangeQuery query = 1;
}
message ListOrgChangesResponse {
@ -2429,7 +2431,7 @@ message ListGrantedProjectsResponse {
}
message ListProjectChangesRequest {
zitadel.v1.ListQuery query = 1;
zitadel.change.v1.ChangeQuery query = 1;
string project_id = 2 [(validate.rules).string = {min_len: 1, max_len: 200}];
}
@ -2609,7 +2611,7 @@ message ListAppsResponse {
}
message ListAppChangesRequest {
zitadel.v1.ListQuery query = 1;
zitadel.change.v1.ChangeQuery query = 1;
string project_id = 2 [(validate.rules).string = {min_len: 1, max_len: 200}];
string app_id = 3 [(validate.rules).string = {min_len: 1, max_len: 200}];
}