@@ -837,22 +837,22 @@ func (q *querier) DeleteOAuth2ProviderAppCodeByID(ctx context.Context, id uuid.U
837
837
838
838
func (q * querier ) DeleteOAuth2ProviderAppCodesByAppAndUserID (ctx context.Context , arg database.DeleteOAuth2ProviderAppCodesByAppAndUserIDParams ) error {
839
839
if err := q .authorizeContext (ctx , policy .ActionDelete ,
840
- rbac .ResourceOAuth2ProviderAppCodeToken .WithOwner (arg .UserID .String ())); err != nil {
840
+ rbac .ResourceOauth2AppCodeToken .WithOwner (arg .UserID .String ())); err != nil {
841
841
return err
842
842
}
843
843
return q .db .DeleteOAuth2ProviderAppCodesByAppAndUserID (ctx , arg )
844
844
}
845
845
846
846
func (q * querier ) DeleteOAuth2ProviderAppSecretByID (ctx context.Context , id uuid.UUID ) error {
847
- if err := q .authorizeContext (ctx , policy .ActionDelete , rbac .ResourceOAuth2ProviderAppSecret ); err != nil {
847
+ if err := q .authorizeContext (ctx , policy .ActionDelete , rbac .ResourceOauth2AppSecret ); err != nil {
848
848
return err
849
849
}
850
850
return q .db .DeleteOAuth2ProviderAppSecretByID (ctx , id )
851
851
}
852
852
853
853
func (q * querier ) DeleteOAuth2ProviderAppTokensByAppAndUserID (ctx context.Context , arg database.DeleteOAuth2ProviderAppTokensByAppAndUserIDParams ) error {
854
854
if err := q .authorizeContext (ctx , policy .ActionDelete ,
855
- rbac .ResourceOAuth2ProviderAppCodeToken .WithOwner (arg .UserID .String ())); err != nil {
855
+ rbac .ResourceOauth2AppCodeToken .WithOwner (arg .UserID .String ())); err != nil {
856
856
return err
857
857
}
858
858
return q .db .DeleteOAuth2ProviderAppTokensByAppAndUserID (ctx , arg )
@@ -1241,7 +1241,7 @@ func (q *querier) GetNotificationBanners(ctx context.Context) (string, error) {
1241
1241
}
1242
1242
1243
1243
func (q * querier ) GetOAuth2ProviderAppByID (ctx context.Context , id uuid.UUID ) (database.OAuth2ProviderApp , error ) {
1244
- if err := q .authorizeContext (ctx , policy .ActionRead , rbac .ResourceOAuth2ProviderApp ); err != nil {
1244
+ if err := q .authorizeContext (ctx , policy .ActionRead , rbac .ResourceOauth2App ); err != nil {
1245
1245
return database.OAuth2ProviderApp {}, err
1246
1246
}
1247
1247
return q .db .GetOAuth2ProviderAppByID (ctx , id )
@@ -1256,7 +1256,7 @@ func (q *querier) GetOAuth2ProviderAppCodeByPrefix(ctx context.Context, secretPr
1256
1256
}
1257
1257
1258
1258
func (q * querier ) GetOAuth2ProviderAppSecretByID (ctx context.Context , id uuid.UUID ) (database.OAuth2ProviderAppSecret , error ) {
1259
- if err := q .authorizeContext (ctx , policy .ActionRead , rbac .ResourceOAuth2ProviderAppSecret ); err != nil {
1259
+ if err := q .authorizeContext (ctx , policy .ActionRead , rbac .ResourceOauth2AppSecret ); err != nil {
1260
1260
return database.OAuth2ProviderAppSecret {}, err
1261
1261
}
1262
1262
return q .db .GetOAuth2ProviderAppSecretByID (ctx , id )
@@ -1267,7 +1267,7 @@ func (q *querier) GetOAuth2ProviderAppSecretByPrefix(ctx context.Context, secret
1267
1267
}
1268
1268
1269
1269
func (q * querier ) GetOAuth2ProviderAppSecretsByAppID (ctx context.Context , appID uuid.UUID ) ([]database.OAuth2ProviderAppSecret , error ) {
1270
- if err := q .authorizeContext (ctx , policy .ActionRead , rbac .ResourceOAuth2ProviderAppSecret ); err != nil {
1270
+ if err := q .authorizeContext (ctx , policy .ActionRead , rbac .ResourceOauth2AppSecret ); err != nil {
1271
1271
return []database.OAuth2ProviderAppSecret {}, err
1272
1272
}
1273
1273
return q .db .GetOAuth2ProviderAppSecretsByAppID (ctx , appID )
@@ -1283,14 +1283,14 @@ func (q *querier) GetOAuth2ProviderAppTokenByPrefix(ctx context.Context, hashPre
1283
1283
if err != nil {
1284
1284
return database.OAuth2ProviderAppToken {}, err
1285
1285
}
1286
- if err := q .authorizeContext (ctx , policy .ActionRead , rbac .ResourceOAuth2ProviderAppCodeToken .WithOwner (key .UserID .String ())); err != nil {
1286
+ if err := q .authorizeContext (ctx , policy .ActionRead , rbac .ResourceOauth2AppCodeToken .WithOwner (key .UserID .String ())); err != nil {
1287
1287
return database.OAuth2ProviderAppToken {}, err
1288
1288
}
1289
1289
return token , nil
1290
1290
}
1291
1291
1292
1292
func (q * querier ) GetOAuth2ProviderApps (ctx context.Context ) ([]database.OAuth2ProviderApp , error ) {
1293
- if err := q .authorizeContext (ctx , policy .ActionRead , rbac .ResourceOAuth2ProviderApp ); err != nil {
1293
+ if err := q .authorizeContext (ctx , policy .ActionRead , rbac .ResourceOauth2App ); err != nil {
1294
1294
return []database.OAuth2ProviderApp {}, err
1295
1295
}
1296
1296
return q .db .GetOAuth2ProviderApps (ctx )
@@ -1299,7 +1299,7 @@ func (q *querier) GetOAuth2ProviderApps(ctx context.Context) ([]database.OAuth2P
1299
1299
func (q * querier ) GetOAuth2ProviderAppsByUserID (ctx context.Context , userID uuid.UUID ) ([]database.GetOAuth2ProviderAppsByUserIDRow , error ) {
1300
1300
// This authz check is to make sure the caller can read all their own tokens.
1301
1301
if err := q .authorizeContext (ctx , policy .ActionRead ,
1302
- rbac .ResourceOAuth2ProviderAppCodeToken .WithOwner (userID .String ())); err != nil {
1302
+ rbac .ResourceOauth2AppCodeToken .WithOwner (userID .String ())); err != nil {
1303
1303
return []database.GetOAuth2ProviderAppsByUserIDRow {}, err
1304
1304
}
1305
1305
return q .db .GetOAuth2ProviderAppsByUserID (ctx , userID )
@@ -1510,31 +1510,15 @@ func (q *querier) GetTailnetTunnelPeerIDs(ctx context.Context, srcID uuid.UUID)
1510
1510
}
1511
1511
1512
1512
func (q * querier ) GetTemplateAppInsights (ctx context.Context , arg database.GetTemplateAppInsightsParams ) ([]database.GetTemplateAppInsightsRow , error ) {
1513
- // Used by TemplateAppInsights endpoint
1514
- // For auditors, check read template_insights, and fall back to update template.
1515
- if err := q .authorizeContext (ctx , policy .ActionRead , rbac .ResourceTemplateInsights ); err != nil {
1516
- for _ , templateID := range arg .TemplateIDs {
1517
- template , err := q .db .GetTemplateByID (ctx , templateID )
1518
- if err != nil {
1519
- return nil , err
1520
- }
1521
-
1522
- if err := q .authorizeContext (ctx , policy .ActionUpdate , template ); err != nil {
1523
- return nil , err
1524
- }
1525
- }
1526
- if len (arg .TemplateIDs ) == 0 {
1527
- if err := q .authorizeContext (ctx , policy .ActionUpdate , rbac .ResourceTemplate .All ()); err != nil {
1528
- return nil , err
1529
- }
1530
- }
1513
+ if err := q .authorizeTemplateInsights (ctx , arg .TemplateIDs ); err != nil {
1514
+ return nil , err
1531
1515
}
1532
1516
return q .db .GetTemplateAppInsights (ctx , arg )
1533
1517
}
1534
1518
1535
1519
func (q * querier ) GetTemplateAppInsightsByTemplate (ctx context.Context , arg database.GetTemplateAppInsightsByTemplateParams ) ([]database.GetTemplateAppInsightsByTemplateRow , error ) {
1536
1520
// Only used by prometheus metrics, so we don't strictly need to check update template perms.
1537
- if err := q .authorizeContext (ctx , policy .ActionRead , rbac .ResourceTemplateInsights ); err != nil {
1521
+ if err := q .authorizeContext (ctx , policy .ActionViewInsights , rbac .ResourceTemplate ); err != nil {
1538
1522
return nil , err
1539
1523
}
1540
1524
return q .db .GetTemplateAppInsightsByTemplate (ctx , arg )
@@ -1564,102 +1548,61 @@ func (q *querier) GetTemplateDAUs(ctx context.Context, arg database.GetTemplateD
1564
1548
return q .db .GetTemplateDAUs (ctx , arg )
1565
1549
}
1566
1550
1567
- func (q * querier ) GetTemplateInsights (ctx context.Context , arg database. GetTemplateInsightsParams ) (database. GetTemplateInsightsRow , error ) {
1568
- // Used by TemplateInsights endpoint
1569
- // For auditors, check read template_insights, and fall back to update template .
1570
- if err := q .authorizeContext (ctx , policy .ActionRead , rbac .ResourceTemplateInsights ); err != nil {
1571
- for _ , templateID := range arg . TemplateIDs {
1551
+ func (q * querier ) authorizeTemplateInsights (ctx context.Context , templateIDs []uuid. UUID ) error {
1552
+ // Abort early if can read all template insights, aka admins.
1553
+ // TODO: If we know the org, that would allow org admins to abort early too .
1554
+ if err := q .authorizeContext (ctx , policy .ActionViewInsights , rbac .ResourceTemplate ); err != nil {
1555
+ for _ , templateID := range templateIDs {
1572
1556
template , err := q .db .GetTemplateByID (ctx , templateID )
1573
1557
if err != nil {
1574
- return database. GetTemplateInsightsRow {}, err
1558
+ return err
1575
1559
}
1576
1560
1577
- if err := q .authorizeContext (ctx , policy .ActionUpdate , template ); err != nil {
1578
- return database. GetTemplateInsightsRow {}, err
1561
+ if err := q .authorizeContext (ctx , policy .ActionViewInsights , template ); err != nil {
1562
+ return err
1579
1563
}
1580
1564
}
1581
- if len (arg . TemplateIDs ) == 0 {
1582
- if err := q .authorizeContext (ctx , policy .ActionUpdate , rbac .ResourceTemplate .All ()); err != nil {
1583
- return database. GetTemplateInsightsRow {}, err
1565
+ if len (templateIDs ) == 0 {
1566
+ if err := q .authorizeContext (ctx , policy .ActionViewInsights , rbac .ResourceTemplate .All ()); err != nil {
1567
+ return err
1584
1568
}
1585
1569
}
1586
1570
}
1571
+ return nil
1572
+ }
1573
+
1574
+ func (q * querier ) GetTemplateInsights (ctx context.Context , arg database.GetTemplateInsightsParams ) (database.GetTemplateInsightsRow , error ) {
1575
+ if err := q .authorizeTemplateInsights (ctx , arg .TemplateIDs ); err != nil {
1576
+ return database.GetTemplateInsightsRow {}, err
1577
+ }
1587
1578
return q .db .GetTemplateInsights (ctx , arg )
1588
1579
}
1589
1580
1590
1581
func (q * querier ) GetTemplateInsightsByInterval (ctx context.Context , arg database.GetTemplateInsightsByIntervalParams ) ([]database.GetTemplateInsightsByIntervalRow , error ) {
1591
- // Used by TemplateInsights endpoint
1592
- // For auditors, check read template_insights, and fall back to update template.
1593
- if err := q .authorizeContext (ctx , policy .ActionRead , rbac .ResourceTemplateInsights ); err != nil {
1594
- for _ , templateID := range arg .TemplateIDs {
1595
- template , err := q .db .GetTemplateByID (ctx , templateID )
1596
- if err != nil {
1597
- return nil , err
1598
- }
1599
-
1600
- if err := q .authorizeContext (ctx , policy .ActionUpdate , template ); err != nil {
1601
- return nil , err
1602
- }
1603
- }
1604
- if len (arg .TemplateIDs ) == 0 {
1605
- if err := q .authorizeContext (ctx , policy .ActionUpdate , rbac .ResourceTemplate .All ()); err != nil {
1606
- return nil , err
1607
- }
1608
- }
1582
+ if err := q .authorizeTemplateInsights (ctx , arg .TemplateIDs ); err != nil {
1583
+ return nil , err
1609
1584
}
1610
1585
return q .db .GetTemplateInsightsByInterval (ctx , arg )
1611
1586
}
1612
1587
1613
1588
func (q * querier ) GetTemplateInsightsByTemplate (ctx context.Context , arg database.GetTemplateInsightsByTemplateParams ) ([]database.GetTemplateInsightsByTemplateRow , error ) {
1614
1589
// Only used by prometheus metrics collector. No need to check update template perms.
1615
- if err := q .authorizeContext (ctx , policy .ActionRead , rbac .ResourceTemplateInsights ); err != nil {
1590
+ if err := q .authorizeContext (ctx , policy .ActionViewInsights , rbac .ResourceTemplate ); err != nil {
1616
1591
return nil , err
1617
1592
}
1618
1593
return q .db .GetTemplateInsightsByTemplate (ctx , arg )
1619
1594
}
1620
1595
1621
1596
func (q * querier ) GetTemplateParameterInsights (ctx context.Context , arg database.GetTemplateParameterInsightsParams ) ([]database.GetTemplateParameterInsightsRow , error ) {
1622
- // Used by both insights endpoint and prometheus collector.
1623
- // For auditors, check read template_insights, and fall back to update template.
1624
- if err := q .authorizeContext (ctx , policy .ActionRead , rbac .ResourceTemplateInsights ); err != nil {
1625
- for _ , templateID := range arg .TemplateIDs {
1626
- template , err := q .db .GetTemplateByID (ctx , templateID )
1627
- if err != nil {
1628
- return nil , err
1629
- }
1630
-
1631
- if err := q .authorizeContext (ctx , policy .ActionUpdate , template ); err != nil {
1632
- return nil , err
1633
- }
1634
- }
1635
- if len (arg .TemplateIDs ) == 0 {
1636
- if err := q .authorizeContext (ctx , policy .ActionUpdate , rbac .ResourceTemplate .All ()); err != nil {
1637
- return nil , err
1638
- }
1639
- }
1597
+ if err := q .authorizeTemplateInsights (ctx , arg .TemplateIDs ); err != nil {
1598
+ return nil , err
1640
1599
}
1641
1600
return q .db .GetTemplateParameterInsights (ctx , arg )
1642
1601
}
1643
1602
1644
1603
func (q * querier ) GetTemplateUsageStats (ctx context.Context , arg database.GetTemplateUsageStatsParams ) ([]database.TemplateUsageStat , error ) {
1645
- // Used by dbrollup tests, use same safe-guard as other insights endpoints.
1646
- // For auditors, check read template_insights, and fall back to update template.
1647
- if err := q .authorizeContext (ctx , policy .ActionRead , rbac .ResourceTemplateInsights ); err != nil {
1648
- for _ , templateID := range arg .TemplateIDs {
1649
- template , err := q .db .GetTemplateByID (ctx , templateID )
1650
- if err != nil {
1651
- return nil , err
1652
- }
1653
-
1654
- if err := q .authorizeContext (ctx , policy .ActionUpdate , template ); err != nil {
1655
- return nil , err
1656
- }
1657
- }
1658
- if len (arg .TemplateIDs ) == 0 {
1659
- if err := q .authorizeContext (ctx , policy .ActionUpdate , rbac .ResourceTemplate .All ()); err != nil {
1660
- return nil , err
1661
- }
1662
- }
1604
+ if err := q .authorizeTemplateInsights (ctx , arg .TemplateIDs ); err != nil {
1605
+ return nil , err
1663
1606
}
1664
1607
return q .db .GetTemplateUsageStats (ctx , arg )
1665
1608
}
@@ -2291,7 +2234,7 @@ func (q *querier) GetWorkspacesEligibleForTransition(ctx context.Context, now ti
2291
2234
2292
2235
func (q * querier ) InsertAPIKey (ctx context.Context , arg database.InsertAPIKeyParams ) (database.APIKey , error ) {
2293
2236
return insert (q .log , q .auth ,
2294
- rbac .ResourceAPIKey .WithOwner (arg .UserID .String ()),
2237
+ rbac .ResourceApiKey .WithOwner (arg .UserID .String ()),
2295
2238
q .db .InsertAPIKey )(ctx , arg )
2296
2239
}
2297
2240
@@ -2363,22 +2306,22 @@ func (q *querier) InsertMissingGroups(ctx context.Context, arg database.InsertMi
2363
2306
}
2364
2307
2365
2308
func (q * querier ) InsertOAuth2ProviderApp (ctx context.Context , arg database.InsertOAuth2ProviderAppParams ) (database.OAuth2ProviderApp , error ) {
2366
- if err := q .authorizeContext (ctx , policy .ActionCreate , rbac .ResourceOAuth2ProviderApp ); err != nil {
2309
+ if err := q .authorizeContext (ctx , policy .ActionCreate , rbac .ResourceOauth2App ); err != nil {
2367
2310
return database.OAuth2ProviderApp {}, err
2368
2311
}
2369
2312
return q .db .InsertOAuth2ProviderApp (ctx , arg )
2370
2313
}
2371
2314
2372
2315
func (q * querier ) InsertOAuth2ProviderAppCode (ctx context.Context , arg database.InsertOAuth2ProviderAppCodeParams ) (database.OAuth2ProviderAppCode , error ) {
2373
2316
if err := q .authorizeContext (ctx , policy .ActionCreate ,
2374
- rbac .ResourceOAuth2ProviderAppCodeToken .WithOwner (arg .UserID .String ())); err != nil {
2317
+ rbac .ResourceOauth2AppCodeToken .WithOwner (arg .UserID .String ())); err != nil {
2375
2318
return database.OAuth2ProviderAppCode {}, err
2376
2319
}
2377
2320
return q .db .InsertOAuth2ProviderAppCode (ctx , arg )
2378
2321
}
2379
2322
2380
2323
func (q * querier ) InsertOAuth2ProviderAppSecret (ctx context.Context , arg database.InsertOAuth2ProviderAppSecretParams ) (database.OAuth2ProviderAppSecret , error ) {
2381
- if err := q .authorizeContext (ctx , policy .ActionCreate , rbac .ResourceOAuth2ProviderAppSecret ); err != nil {
2324
+ if err := q .authorizeContext (ctx , policy .ActionCreate , rbac .ResourceOauth2AppSecret ); err != nil {
2382
2325
return database.OAuth2ProviderAppSecret {}, err
2383
2326
}
2384
2327
return q .db .InsertOAuth2ProviderAppSecret (ctx , arg )
@@ -2389,7 +2332,7 @@ func (q *querier) InsertOAuth2ProviderAppToken(ctx context.Context, arg database
2389
2332
if err != nil {
2390
2333
return database.OAuth2ProviderAppToken {}, err
2391
2334
}
2392
- if err := q .authorizeContext (ctx , policy .ActionCreate , rbac .ResourceOAuth2ProviderAppCodeToken .WithOwner (key .UserID .String ())); err != nil {
2335
+ if err := q .authorizeContext (ctx , policy .ActionCreate , rbac .ResourceOauth2AppCodeToken .WithOwner (key .UserID .String ())); err != nil {
2393
2336
return database.OAuth2ProviderAppToken {}, err
2394
2337
}
2395
2338
return q .db .InsertOAuth2ProviderAppToken (ctx , arg )
@@ -2779,14 +2722,14 @@ func (q *querier) UpdateMemberRoles(ctx context.Context, arg database.UpdateMemb
2779
2722
}
2780
2723
2781
2724
func (q * querier ) UpdateOAuth2ProviderAppByID (ctx context.Context , arg database.UpdateOAuth2ProviderAppByIDParams ) (database.OAuth2ProviderApp , error ) {
2782
- if err := q .authorizeContext (ctx , policy .ActionUpdate , rbac .ResourceOAuth2ProviderApp ); err != nil {
2725
+ if err := q .authorizeContext (ctx , policy .ActionUpdate , rbac .ResourceOauth2App ); err != nil {
2783
2726
return database.OAuth2ProviderApp {}, err
2784
2727
}
2785
2728
return q .db .UpdateOAuth2ProviderAppByID (ctx , arg )
2786
2729
}
2787
2730
2788
2731
func (q * querier ) UpdateOAuth2ProviderAppSecretByID (ctx context.Context , arg database.UpdateOAuth2ProviderAppSecretByIDParams ) (database.OAuth2ProviderAppSecret , error ) {
2789
- if err := q .authorizeContext (ctx , policy .ActionUpdate , rbac .ResourceOAuth2ProviderAppSecret ); err != nil {
2732
+ if err := q .authorizeContext (ctx , policy .ActionUpdate , rbac .ResourceOauth2AppSecret ); err != nil {
2790
2733
return database.OAuth2ProviderAppSecret {}, err
2791
2734
}
2792
2735
return q .db .UpdateOAuth2ProviderAppSecretByID (ctx , arg )
@@ -3324,7 +3267,7 @@ func (q *querier) UpsertAppSecurityKey(ctx context.Context, data string) error {
3324
3267
}
3325
3268
3326
3269
func (q * querier ) UpsertApplicationName (ctx context.Context , value string ) error {
3327
- if err := q .authorizeContext (ctx , policy .ActionCreate , rbac .ResourceDeploymentValues ); err != nil {
3270
+ if err := q .authorizeContext (ctx , policy .ActionCreate , rbac .ResourceDeploymentConfig ); err != nil {
3328
3271
return err
3329
3272
}
3330
3273
return q .db .UpsertApplicationName (ctx , value )
@@ -3338,7 +3281,7 @@ func (q *querier) UpsertDefaultProxy(ctx context.Context, arg database.UpsertDef
3338
3281
}
3339
3282
3340
3283
func (q * querier ) UpsertHealthSettings (ctx context.Context , value string ) error {
3341
- if err := q .authorizeContext (ctx , policy .ActionCreate , rbac .ResourceDeploymentValues ); err != nil {
3284
+ if err := q .authorizeContext (ctx , policy .ActionCreate , rbac .ResourceDeploymentConfig ); err != nil {
3342
3285
return err
3343
3286
}
3344
3287
return q .db .UpsertHealthSettings (ctx , value )
@@ -3373,14 +3316,14 @@ func (q *querier) UpsertLastUpdateCheck(ctx context.Context, value string) error
3373
3316
}
3374
3317
3375
3318
func (q * querier ) UpsertLogoURL (ctx context.Context , value string ) error {
3376
- if err := q .authorizeContext (ctx , policy .ActionCreate , rbac .ResourceDeploymentValues ); err != nil {
3319
+ if err := q .authorizeContext (ctx , policy .ActionCreate , rbac .ResourceDeploymentConfig ); err != nil {
3377
3320
return err
3378
3321
}
3379
3322
return q .db .UpsertLogoURL (ctx , value )
3380
3323
}
3381
3324
3382
3325
func (q * querier ) UpsertNotificationBanners (ctx context.Context , value string ) error {
3383
- if err := q .authorizeContext (ctx , policy .ActionCreate , rbac .ResourceDeploymentValues ); err != nil {
3326
+ if err := q .authorizeContext (ctx , policy .ActionCreate , rbac .ResourceDeploymentConfig ); err != nil {
3384
3327
return err
3385
3328
}
3386
3329
return q .db .UpsertNotificationBanners (ctx , value )
0 commit comments