Add session membership
Signed-off-by: Bryan Frimin <bryan@getprobo.com>
This commit is contained in:
@@ -5,6 +5,7 @@ CREATE TYPE session_auth_method AS ENUM (
|
|||||||
|
|
||||||
ALTER TABLE sessions ADD COLUMN auth_method session_auth_method;
|
ALTER TABLE sessions ADD COLUMN auth_method session_auth_method;
|
||||||
ALTER TABLE sessions ADD COLUMN authenticated_at TIMESTAMP;
|
ALTER TABLE sessions ADD COLUMN authenticated_at TIMESTAMP;
|
||||||
|
ALTER TABLE sessions ADD COLUMN membership_id TEXT REFERENCES authz_memberships(id) ON DELETE CASCADE;
|
||||||
|
|
||||||
-- Expire all existing sessions as they are not backward compatible
|
-- Expire all existing sessions as they are not backward compatible
|
||||||
UPDATE sessions SET
|
UPDATE sessions SET
|
||||||
|
|||||||
@@ -33,6 +33,7 @@ type (
|
|||||||
ID gid.GID `db:"id"`
|
ID gid.GID `db:"id"`
|
||||||
UserID gid.GID `db:"user_id"`
|
UserID gid.GID `db:"user_id"`
|
||||||
TenantID *gid.TenantID `db:"tenant_id"`
|
TenantID *gid.TenantID `db:"tenant_id"`
|
||||||
|
MembershipID *gid.GID `db:"membership_id"`
|
||||||
ParentSessionID *gid.GID `db:"parent_session_id"`
|
ParentSessionID *gid.GID `db:"parent_session_id"`
|
||||||
Data SessionData `db:"data"`
|
Data SessionData `db:"data"`
|
||||||
AuthMethod AuthMethod `db:"auth_method"`
|
AuthMethod AuthMethod `db:"auth_method"`
|
||||||
@@ -101,6 +102,7 @@ SELECT
|
|||||||
id,
|
id,
|
||||||
user_id,
|
user_id,
|
||||||
tenant_id,
|
tenant_id,
|
||||||
|
membership_id,
|
||||||
data,
|
data,
|
||||||
parent_session_id,
|
parent_session_id,
|
||||||
auth_method,
|
auth_method,
|
||||||
@@ -144,11 +146,12 @@ func (s *Session) Insert(
|
|||||||
) error {
|
) error {
|
||||||
q := `
|
q := `
|
||||||
INSERT INTO
|
INSERT INTO
|
||||||
sessions (id, user_id, tenant_id, data, parent_session_id, auth_method, authenticated_at, expire_reason, user_agent, ip_address, expired_at, created_at, updated_at)
|
sessions (id, user_id, tenant_id, membership_id, data, parent_session_id, auth_method, authenticated_at, expire_reason, user_agent, ip_address, expired_at, created_at, updated_at)
|
||||||
VALUES (
|
VALUES (
|
||||||
@session_id,
|
@session_id,
|
||||||
@user_id,
|
@user_id,
|
||||||
@tenant_id,
|
@tenant_id,
|
||||||
|
@membership_id,
|
||||||
@data,
|
@data,
|
||||||
@parent_session_id,
|
@parent_session_id,
|
||||||
@auth_method,
|
@auth_method,
|
||||||
@@ -166,6 +169,7 @@ VALUES (
|
|||||||
"session_id": s.ID,
|
"session_id": s.ID,
|
||||||
"user_id": s.UserID,
|
"user_id": s.UserID,
|
||||||
"tenant_id": s.TenantID,
|
"tenant_id": s.TenantID,
|
||||||
|
"membership_id": s.MembershipID,
|
||||||
"data": s.Data,
|
"data": s.Data,
|
||||||
"parent_session_id": s.ParentSessionID,
|
"parent_session_id": s.ParentSessionID,
|
||||||
"auth_method": s.AuthMethod,
|
"auth_method": s.AuthMethod,
|
||||||
@@ -227,6 +231,7 @@ SELECT
|
|||||||
id,
|
id,
|
||||||
user_id,
|
user_id,
|
||||||
tenant_id,
|
tenant_id,
|
||||||
|
membership_id,
|
||||||
data,
|
data,
|
||||||
parent_session_id,
|
parent_session_id,
|
||||||
auth_method,
|
auth_method,
|
||||||
@@ -318,6 +323,7 @@ SELECT
|
|||||||
id,
|
id,
|
||||||
user_id,
|
user_id,
|
||||||
tenant_id,
|
tenant_id,
|
||||||
|
membership_id,
|
||||||
data,
|
data,
|
||||||
parent_session_id,
|
parent_session_id,
|
||||||
auth_method,
|
auth_method,
|
||||||
@@ -330,11 +336,9 @@ SELECT
|
|||||||
updated_at
|
updated_at
|
||||||
FROM
|
FROM
|
||||||
sessions
|
sessions
|
||||||
INNER JOIN
|
|
||||||
authz_memberships m ON m.organization_id = s.organization_id
|
|
||||||
WHERE
|
WHERE
|
||||||
sessions.parent_session_id = @root_session_id
|
parent_session_id = @root_session_id
|
||||||
AND m.id = @membership_id
|
AND membership_id = @membership_id
|
||||||
`
|
`
|
||||||
|
|
||||||
args := pgx.StrictNamedArgs{
|
args := pgx.StrictNamedArgs{
|
||||||
|
|||||||
@@ -399,7 +399,10 @@ func (s SessionService) AssumeOrganizationSession(
|
|||||||
ID: gid.New(tenantID, coredata.SessionEntityType),
|
ID: gid.New(tenantID, coredata.SessionEntityType),
|
||||||
UserID: rootSession.UserID,
|
UserID: rootSession.UserID,
|
||||||
TenantID: &tenantID,
|
TenantID: &tenantID,
|
||||||
|
MembershipID: &membership.ID,
|
||||||
ParentSessionID: &rootSession.ID,
|
ParentSessionID: &rootSession.ID,
|
||||||
|
AuthMethod: rootSession.AuthMethod,
|
||||||
|
AuthenticatedAt: rootSession.AuthenticatedAt,
|
||||||
ExpiredAt: rootSession.ExpiredAt,
|
ExpiredAt: rootSession.ExpiredAt,
|
||||||
CreatedAt: now,
|
CreatedAt: now,
|
||||||
UpdatedAt: now,
|
UpdatedAt: now,
|
||||||
|
|||||||
Reference in New Issue
Block a user