Update sentry_account_permissions view

This commit is contained in:
Abin Simon
2022-03-29 15:09:19 +05:30
parent 229cf7c033
commit 60199e3f4e
5 changed files with 17 additions and 139 deletions
+4 -4
View File
@@ -30,11 +30,11 @@ func GetProjectOrganization(ctx context.Context, db bun.IDB, id uuid.UUID) (stri
func GetFileteredProjects(ctx context.Context, db bun.IDB, account, partner, org uuid.UUID) ([]models.Project, error) {
ids := []uuid.UUID{}
sp := []models.SentryPermission{}
sp := []models.SentryAccountPermission{}
err := db.NewSelect().Model(&sp).
Where("sentry_permission.partner_id = ?", partner).
Where("sentry_permission.organization_id = ?", org).
Where("sentry_permission.account_id = ?", account).
Where("sentry_account_permission.partner_id = ?", partner).
Where("sentry_account_permission.organization_id = ?", org).
Where("sentry_account_permission.account_id = ?", account).
Scan(ctx)
if err != nil {
return nil, err
+1 -1
View File
@@ -73,7 +73,7 @@ type userProjectnamesaceRole struct {
// TODO: find a better name for the function
func GetQueryFilteredUsers(ctx context.Context, db bun.IDB, partner, org, group, role uuid.UUID, projects []uuid.UUID) ([]uuid.UUID, error) {
p := []models.SentryPermission{}
p := []models.SentryAccountPermission{}
q := db.NewSelect().Model(&p).ColumnExpr("DISTINCT account_id")
q.Where("partner_id = ?", partner).
@@ -7,8 +7,8 @@ import (
"github.com/uptrace/bun"
)
type SentryPermission struct {
bun.BaseModel `bun:"table:sentry_permission,alias:sentry_permission"`
type SentryAccountPermission struct {
bun.BaseModel `bun:"table:sentry_account_permission,alias:sentry_account_permission"`
AccountId uuid.UUID `bun:"account_id,type:uuid"`
ProjectId uuid.UUID `bun:"project_id,type:uuid"`
@@ -1,10 +1,12 @@
CREATE OR REPLACE VIEW sentry_account_permission AS
SELECT
apr.account_id,
apr.group_id,
apr.project_id,
apr.organization_id,
apr.partner_id,
rbu.role_name,
rbu.role_name, -- could be dropped in future
rbu.role_id,
rbu.is_global,
rbu.scope,
rbu.permission_name,
@@ -13,6 +15,7 @@ SELECT
FROM (
SELECT
ga.account_id,
gr.group_id,
uuid_nil() project_id,
gr.role_id,
gr.organization_id,
@@ -26,6 +29,7 @@ FROM (
UNION
SELECT
account_id,
uuid_nil() as group_id,
uuid_nil() project_id,
role_id,
organization_id,
@@ -37,6 +41,7 @@ FROM (
UNION
SELECT
ga.account_id,
ga.group_id,
pgr.project_id,
pgr.role_id,
pgr.organization_id,
@@ -50,6 +55,7 @@ FROM (
UNION
SELECT
account_id,
uuid_nil() as group_id,
project_id,
role_id,
organization_id,
@@ -61,6 +67,7 @@ FROM (
UNION
SELECT
account_id,
uuid_nil() as group_id,
project_id,
role_id,
organization_id,
@@ -72,6 +79,7 @@ FROM (
UNION
SELECT
ga.account_id,
ga.group_id,
pgnr.project_id,
pgnr.role_id,
pgnr.organization_id,
@@ -119,4 +127,4 @@ FROM (
trash = FALSE) rr ON rr.id = rp.role_id) rbu ON apr.role_id = rbu.role_id
INNER JOIN identities ON identities.id = apr.account_id
WHERE
lower(identities.state) = 'active';
lower(identities.state) = 'active';
-130
View File
@@ -1,130 +0,0 @@
DROP VIEW IF EXISTS sentry_permission;
CREATE OR REPLACE VIEW sentry_permission AS
SELECT
apr.account_id,
apr.group_id,
apr.project_id,
apr.organization_id,
apr.partner_id,
rbu.role_id,
rbu.is_global,
rbu.scope,
rbu.permission_name,
rbu.base_url,
rbu.urls
FROM (
SELECT
ga.account_id,
gr.group_id,
uuid_nil() project_id,
gr.role_id,
gr.organization_id,
gr.partner_id
FROM
authsrv_groupaccount ga
INNER JOIN authsrv_grouprole gr ON ga.group_id = gr.group_id
WHERE
ga.trash = FALSE
AND gr.trash = FALSE
UNION
SELECT
account_id,
uuid_nil() as group_id,
uuid_nil() project_id,
role_id,
organization_id,
partner_id
FROM
authsrv_accountresourcerole
WHERE
trash = FALSE
UNION
SELECT
ga.account_id,
ga.group_id,
pgr.project_id,
pgr.role_id,
pgr.organization_id,
pgr.partner_id
FROM
authsrv_projectgrouprole pgr
INNER JOIN authsrv_groupaccount ga ON pgr.group_id = ga.group_id
WHERE
pgr.trash = FALSE
AND ga.trash = FALSE
UNION
SELECT
account_id,
uuid_nil() as group_id,
project_id,
role_id,
organization_id,
partner_id
FROM
authsrv_projectaccountresourcerole
WHERE
trash = FALSE
UNION
SELECT
account_id,
uuid_nil() as group_id,
project_id,
role_id,
organization_id,
partner_id
FROM
authsrv_projectaccountnamespacerole
WHERE
trash = FALSE
UNION
SELECT
ga.account_id,
ga.group_id,
pgnr.project_id,
pgnr.role_id,
pgnr.organization_id,
pgnr.partner_id
FROM
authsrv_projectgroupnamespacerole pgnr
INNER JOIN authsrv_groupaccount ga ON pgnr.group_id = ga.group_id
WHERE
pgnr.trash = FALSE
AND ga.trash = FALSE) AS apr
INNER JOIN (
SELECT
rp.role_id,
rr.role_name,
rr.is_global,
rr.scope,
p.permission_name,
p.base_url,
p.urls
FROM (
SELECT
resource_role_id AS role_id,
resource_permission_id AS permission_id
FROM
authsrv_resourcerolepermission
WHERE
trash = FALSE) rp
INNER JOIN (
SELECT
rp.id AS permission_id,
rp.base_url,
rp.name AS permission_name,
rp.resource_urls || rp.resource_action_urls AS urls
FROM
authsrv_resourcepermission rp) p ON rp.permission_id = p.permission_id
INNER JOIN (
SELECT
id,
name AS role_name,
is_global,
scope
FROM
authsrv_resourcerole
WHERE
trash = FALSE) rr ON rr.id = rp.role_id) rbu ON apr.role_id = rbu.role_id
INNER JOIN identities ON identities.id = apr.account_id
WHERE
lower(identities.state) = 'active';