@@ -651,48 +651,6 @@ func (q *FakeQuerier) isEveryoneGroup(id uuid.UUID) bool {
651
651
return false
652
652
}
653
653
654
- func (q * FakeQuerier ) GetWorkspaceAgentAndOwnerByAuthToken (ctx context.Context , authToken uuid.UUID ) (database.GetWorkspaceAgentAndOwnerByAuthTokenRow , error ) {
655
- q .mutex .RLock ()
656
- defer q .mutex .RUnlock ()
657
- var resp database.GetWorkspaceAgentAndOwnerByAuthTokenRow
658
- var found bool
659
- for _ , agt := range q .workspaceAgents {
660
- if agt .AuthToken == authToken {
661
- resp .WorkspaceAgent = agt
662
- found = true
663
- break
664
- }
665
- }
666
- if ! found {
667
- return resp , sql .ErrNoRows
668
- }
669
-
670
- // get the related workspace and user
671
- for _ , res := range q .workspaceResources {
672
- if resp .WorkspaceAgent .ResourceID != res .ID {
673
- continue
674
- }
675
- for _ , build := range q .workspaceBuilds {
676
- if build .JobID != res .JobID {
677
- continue
678
- }
679
- for _ , ws := range q .workspaces {
680
- if build .WorkspaceID != ws .ID {
681
- continue
682
- }
683
- resp .WorkspaceID = ws .ID
684
- if usr , err := q .getUserByIDNoLock (ws .OwnerID ); err == nil {
685
- resp .OwnerID = usr .ID
686
- resp .OwnerRoles = usr .RBACRoles
687
- resp .OwnerName = usr .Username
688
- return resp , nil
689
- }
690
- }
691
- }
692
- }
693
- return database.GetWorkspaceAgentAndOwnerByAuthTokenRow {}, sql .ErrNoRows
694
- }
695
-
696
654
func (* FakeQuerier ) AcquireLock (_ context.Context , _ int64 ) error {
697
655
return xerrors .New ("AcquireLock must only be called within a transaction" )
698
656
}
@@ -2837,36 +2795,48 @@ func (q *FakeQuerier) GetWorkspaceAgentAndOwnerByAuthToken(_ context.Context, au
2837
2795
q .mutex .RLock ()
2838
2796
defer q .mutex .RUnlock ()
2839
2797
var resp database.GetWorkspaceAgentAndOwnerByAuthTokenRow
2840
- var found bool
2798
+ AgentLoop:
2841
2799
for _ , agt := range q .workspaceAgents {
2842
- if agt .AuthToken == authToken {
2843
- resp .WorkspaceAgent = agt
2844
- found = true
2845
- break
2846
- }
2847
- }
2848
- if ! found {
2849
- return resp , sql .ErrNoRows
2850
- }
2851
-
2852
- // get the related workspace and user
2853
- for _ , res := range q .workspaceResources {
2854
- if resp .WorkspaceAgent .ResourceID != res .ID {
2855
- continue
2856
- }
2857
- for _ , build := range q .workspaceBuilds {
2858
- if build .JobID != res .JobID { // <-- jobID does not match up
2859
- continue
2800
+ if agt .AuthToken != authToken {
2801
+ continue AgentLoop
2802
+ }
2803
+ // get the related workspace and user
2804
+ ResourceLoop:
2805
+ for _ , res := range q .workspaceResources {
2806
+ if agt .ResourceID != res .ID {
2807
+ continue ResourceLoop
2860
2808
}
2861
- for _ , ws := range q .workspaces {
2862
- if build .WorkspaceID != ws .ID {
2863
- continue
2809
+ BuildLoop:
2810
+ for _ , build := range q .workspaceBuilds {
2811
+ if build .JobID != res .JobID {
2812
+ continue BuildLoop
2864
2813
}
2865
- resp .WorkspaceID = ws .ID
2866
- if usr , err := q .getUserByIDNoLock (ws .OwnerID ); err == nil {
2814
+ WorkspaceLoop:
2815
+ for _ , ws := range q .workspaces {
2816
+ if build .WorkspaceID != ws .ID {
2817
+ continue WorkspaceLoop
2818
+ }
2819
+ resp .WorkspaceID = ws .ID
2820
+ usr , err := q .getUserByIDNoLock (ws .OwnerID )
2821
+ if err != nil {
2822
+ return database.GetWorkspaceAgentAndOwnerByAuthTokenRow {}, sql .ErrNoRows
2823
+ }
2867
2824
resp .OwnerID = usr .ID
2868
- resp .OwnerRoles = usr .RBACRoles
2825
+ resp .OwnerRoles = append (usr .RBACRoles , "member" )
2826
+ // We also need to get org roles for the user
2869
2827
resp .OwnerName = usr .Username
2828
+ resp .WorkspaceAgent = agt
2829
+ for _ , mem := range q .organizationMembers {
2830
+ if mem .UserID == usr .ID {
2831
+ resp .OwnerRoles = append (resp .OwnerRoles , fmt .Sprintf ("organization-member:%s" , mem .OrganizationID .String ()))
2832
+ }
2833
+ }
2834
+ // And group memberships
2835
+ for _ , groupMem := range q .groupMembers {
2836
+ if groupMem .UserID == usr .ID {
2837
+ resp .OwnerGroups = append (resp .OwnerGroups , groupMem .GroupID .String ())
2838
+ }
2839
+ }
2870
2840
return resp , nil
2871
2841
}
2872
2842
}
0 commit comments