@@ -2,7 +2,6 @@ package api
2
2
3
3
import (
4
4
"context"
5
- "io/ioutil"
6
5
"net/http"
7
6
8
7
"github.com/gorilla/mux"
@@ -14,7 +13,6 @@ import (
14
13
"github.com/ovh/cds/engine/api/user"
15
14
"github.com/ovh/cds/engine/service"
16
15
"github.com/ovh/cds/sdk"
17
- "github.com/ovh/cds/sdk/exportentities"
18
16
)
19
17
20
18
func (api * API ) getGroupsHandler () service.Handler {
@@ -78,40 +76,6 @@ func (api *API) getGroupHandler() service.Handler {
78
76
}
79
77
}
80
78
81
- func (api * API ) getGroupExportHandler () service.Handler {
82
- return func (ctx context.Context , w http.ResponseWriter , r * http.Request ) error {
83
- vars := mux .Vars (r )
84
-
85
- groupName := vars ["permGroupName" ]
86
-
87
- format := FormString (r , "format" )
88
- if format == "" {
89
- format = "yaml"
90
- }
91
- f , err := exportentities .GetFormat (format )
92
- if err != nil {
93
- return err
94
- }
95
-
96
- g , err := group .LoadByName (ctx , api .mustDB (), groupName , group .LoadOptions .Default )
97
- if err != nil {
98
- return err
99
- }
100
-
101
- b , err := exportentities .Marshal (g , f )
102
- if err != nil {
103
- return err
104
- }
105
-
106
- if _ , err := w .Write (b ); err != nil {
107
- return sdk .WithStack (err )
108
- }
109
-
110
- w .Header ().Add ("Content-Type" , f .ContentType ())
111
- return nil
112
- }
113
- }
114
-
115
79
func (api * API ) postGroupHandler () service.Handler {
116
80
return func (ctx context.Context , w http.ResponseWriter , r * http.Request ) error {
117
81
var newGroup sdk.Group
@@ -493,132 +457,3 @@ func (api *API) deleteGroupUserHandler() service.Handler {
493
457
return service .WriteJSON (w , g , http .StatusOK )
494
458
}
495
459
}
496
-
497
- func (api * API ) postGroupImportHandler () service.Handler {
498
- return func (ctx context.Context , w http.ResponseWriter , r * http.Request ) error {
499
- body , err := ioutil .ReadAll (r .Body )
500
- if err != nil {
501
- return sdk .NewErrorWithStack (err , sdk .NewErrorFrom (sdk .ErrWrongRequest , "unable to read body" ))
502
- }
503
-
504
- contentType := r .Header .Get ("Content-Type" )
505
- if contentType == "" {
506
- contentType = http .DetectContentType (body )
507
- }
508
- format , err := exportentities .GetFormatFromContentType (contentType )
509
- if err != nil {
510
- return err
511
- }
512
-
513
- var data sdk.Group
514
- if err := exportentities .Unmarshal (body , format , & data ); err != nil {
515
- return err
516
- }
517
- if err := data .IsValid (); err != nil {
518
- return err
519
- }
520
- if err := data .Members .IsValid (); err != nil {
521
- return err
522
- }
523
-
524
- tx , err := api .mustDB ().Begin ()
525
- if err != nil {
526
- return sdk .WrapError (err , "cannot start transaction" )
527
- }
528
- defer tx .Rollback () // nolint
529
-
530
- oldGroup , err := group .LoadByName (ctx , tx , data .Name ,
531
- group .LoadOptions .WithMembers ,
532
- group .LoadOptions .WithOrganization ,
533
- )
534
- if err != nil && ! sdk .ErrorIs (err , sdk .ErrNotFound ) {
535
- return sdk .WrapError (err , "cannot load group: %s" , data .Name )
536
- }
537
- if oldGroup != nil {
538
- if ! isGroupAdmin (ctx , oldGroup ) {
539
- if isAdmin (ctx ) {
540
- trackSudo (ctx , w )
541
- } else {
542
- return sdk .WithStack (sdk .ErrForbidden )
543
- }
544
- }
545
- }
546
-
547
- // Add user data and validate members
548
- for i := range data .Members {
549
- var u * sdk.AuthentifiedUser
550
- if data .Members [i ].ID != "" {
551
- u , err = user .LoadByID (ctx , tx , data .Members [i ].ID )
552
- } else {
553
- u , err = user .LoadByUsername (ctx , tx , data .Members [i ].Username )
554
- }
555
- if err != nil {
556
- return err
557
- }
558
- data .Members [i ].ID = u .ID
559
- }
560
-
561
- if err := group .Upsert (ctx , tx , oldGroup , & data ); err != nil {
562
- return sdk .WrapError (err , "cannot update group with id: %d" , data .ID )
563
- }
564
-
565
- // Check that user's Organization match group Organization
566
- if err := group .EnsureOrganization (ctx , tx , & data ); err != nil {
567
- return err
568
- }
569
-
570
- if oldGroup != nil {
571
- // Remove the group from consumers for removed users
572
- removedUserIDs := oldGroup .Members .DiffUserIDs (data .Members )
573
- for i := range removedUserIDs {
574
- u , err := user .LoadByID (ctx , tx , removedUserIDs [i ])
575
- if err != nil {
576
- return err
577
- }
578
- if err := authentication .ConsumerInvalidateGroupForUser (ctx , tx , & data , u ); err != nil {
579
- return err
580
- }
581
- }
582
-
583
- // Restore group on consumers for added users
584
- addedUserIDs := data .Members .DiffUserIDs (oldGroup .Members )
585
- for i := range addedUserIDs {
586
- if err := authentication .ConsumerRestoreInvalidatedGroupForUser (ctx , tx , data .ID , addedUserIDs [i ]); err != nil {
587
- return err
588
- }
589
- }
590
- }
591
-
592
- if err := tx .Commit (); err != nil {
593
- return sdk .WithStack (err )
594
- }
595
-
596
- // In case where the user remove himself from group, do not return it
597
- consumer := getAPIConsumer (ctx )
598
- for i := range data .Members {
599
- var found bool
600
- if data .Members [i ].ID == consumer .AuthentifiedUser .ID {
601
- found = true
602
- break
603
- }
604
- if ! found {
605
- return service .WriteJSON (w , nil , http .StatusOK )
606
- }
607
- }
608
-
609
- // Load extra data for group
610
- if err := group .LoadOptions .Default (ctx , api .mustDB (), & data ); err != nil {
611
- return err
612
- }
613
-
614
- b , err := exportentities .Marshal (data , format )
615
- if err != nil {
616
- return err
617
- }
618
- if _ , err := w .Write (b ); err != nil {
619
- return sdk .WithStack (err )
620
- }
621
- w .Header ().Add ("Content-Type" , format .ContentType ())
622
- return nil
623
- }
624
- }
0 commit comments