Refactoring of authentification
Signed-off-by: Bryan Frimin <bryan@getprobo.com>
This commit is contained in:
committed by
Sacha Al Himdani
parent
afa7e4fdd5
commit
0f96b8518f
41
pkg/coredata/migrations/20251006T220024Z.sql
Normal file
41
pkg/coredata/migrations/20251006T220024Z.sql
Normal file
@@ -0,0 +1,41 @@
|
||||
-- Create authorization tables for the new authz service
|
||||
-- This migration creates the new authz tables while keeping the existing users_organizations table
|
||||
-- for backward compatibility during the transition
|
||||
|
||||
-- Create role enum
|
||||
CREATE TYPE authz_role AS ENUM ('OWNER', 'ADMIN', 'MEMBER', 'VIEWER');
|
||||
|
||||
-- Create authz_memberships table with id as primary key
|
||||
CREATE TABLE authz_memberships (
|
||||
id TEXT PRIMARY KEY,
|
||||
user_id TEXT NOT NULL,
|
||||
organization_id TEXT NOT NULL,
|
||||
role authz_role NOT NULL,
|
||||
created_at TIMESTAMP NOT NULL,
|
||||
updated_at TIMESTAMP NOT NULL,
|
||||
UNIQUE (user_id, organization_id)
|
||||
);
|
||||
|
||||
-- Create authz_invitations table
|
||||
CREATE TABLE authz_invitations (
|
||||
id TEXT PRIMARY KEY,
|
||||
organization_id TEXT NOT NULL,
|
||||
email TEXT NOT NULL,
|
||||
full_name TEXT NOT NULL,
|
||||
role authz_role NOT NULL,
|
||||
expires_at TIMESTAMP NOT NULL,
|
||||
accepted_at TIMESTAMP,
|
||||
created_at TIMESTAMP NOT NULL
|
||||
);
|
||||
|
||||
-- Copy data from users_organizations to authz_memberships
|
||||
INSERT INTO authz_memberships (id, user_id, organization_id, role, created_at, updated_at)
|
||||
SELECT
|
||||
generate_gid(decode_base64_unpadded(organizations.tenant_id), 38) as id,
|
||||
users_organizations.user_id,
|
||||
users_organizations.organization_id,
|
||||
'MEMBER'::authz_role as role, -- Default role for existing memberships
|
||||
users_organizations.created_at,
|
||||
users_organizations.created_at as updated_at
|
||||
FROM users_organizations
|
||||
JOIN organizations ON users_organizations.organization_id = organizations.id;
|
||||
Reference in New Issue
Block a user