From 095c30690b383392b7e0222f40aaf56c558b862d Mon Sep 17 00:00:00 2001 From: GeorgeC Date: Wed, 7 Feb 2024 10:36:31 -0500 Subject: [PATCH 1/5] Add a new stored procedure to enable user creation --- .../V4_ADD_CREATE_USER_STORED_PROCEDURE.sql | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 pic-sure-auth-db/db/sql/V4_ADD_CREATE_USER_STORED_PROCEDURE.sql diff --git a/pic-sure-auth-db/db/sql/V4_ADD_CREATE_USER_STORED_PROCEDURE.sql b/pic-sure-auth-db/db/sql/V4_ADD_CREATE_USER_STORED_PROCEDURE.sql new file mode 100644 index 000000000..8fb405daa --- /dev/null +++ b/pic-sure-auth-db/db/sql/V4_ADD_CREATE_USER_STORED_PROCEDURE.sql @@ -0,0 +1,21 @@ +DROP PROCEDURE IF EXISTS CreateUserWithRole; +delimiter // +CREATE PROCEDURE CreateUserWithRole ( + IN user_email VARCHAR(255), + IN connection_id VARCHAR(255), + IN role_name VARCHAR(255) +) +BEGIN +SELECT @userUUID := uuid FROM auth.user WHERE email = user_email AND connectionId = connection_id; +SELECT @roleUUID := uuid FROM auth.role WHERE name = role_name; +IF @userUUID IS NULL THEN + SET @userUUID = UNHEX(REPLACE(UUID(), '-', '')); +SELECT @connectionUUID := uuid FROM auth.connection WHERE id = connection_id; +INSERT INTO auth.user (uuid, general_metadata, acceptedTOS, connectionId, email, matched, subject, is_active, long_term_token, isGateAnyRelation) +VALUES (@userUUID, null, (SELECT CURRENT_TIMESTAMP), @connectionUUID, user_email, 0, null, 1, null, 1); +END IF; + IF @roleUUID IS NOT NULL THEN + INSERT INTO auth.user_role (user_id, role_id) VALUES (@userUUID, @roleUUID); +END IF; +END// +delimiter; \ No newline at end of file From 4219414fae375ea27508fff851fb5767f84102f5 Mon Sep 17 00:00:00 2001 From: GeorgeC Date: Wed, 7 Feb 2024 13:35:28 -0500 Subject: [PATCH 2/5] Specific database Auth --- .../db/sql/V4_ADD_CREATE_USER_STORED_PROCEDURE.sql | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pic-sure-auth-db/db/sql/V4_ADD_CREATE_USER_STORED_PROCEDURE.sql b/pic-sure-auth-db/db/sql/V4_ADD_CREATE_USER_STORED_PROCEDURE.sql index 8fb405daa..92fe1a4d2 100644 --- a/pic-sure-auth-db/db/sql/V4_ADD_CREATE_USER_STORED_PROCEDURE.sql +++ b/pic-sure-auth-db/db/sql/V4_ADD_CREATE_USER_STORED_PROCEDURE.sql @@ -1,4 +1,5 @@ -DROP PROCEDURE IF EXISTS CreateUserWithRole; +USE `auth`; + delimiter // CREATE PROCEDURE CreateUserWithRole ( IN user_email VARCHAR(255), From 0aba935ff5b6dcee4d687ed11b471fca85164470 Mon Sep 17 00:00:00 2001 From: GeorgeC Date: Wed, 7 Feb 2024 14:26:13 -0500 Subject: [PATCH 3/5] Update CreateUserWithRole stored procedure in auth DB The stored procedure, CreateUserWithRole, in the 'auth' database has been updated to improve user creation. It now checks for existing users and roles, and generates a new UUID if needed. Additionally, it associates new users with roles if they exist. --- .../sql/V4_ADD_CREATE_USER_STORED_PROCEDURE.sql | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/pic-sure-auth-db/db/sql/V4_ADD_CREATE_USER_STORED_PROCEDURE.sql b/pic-sure-auth-db/db/sql/V4_ADD_CREATE_USER_STORED_PROCEDURE.sql index 92fe1a4d2..d9b633159 100644 --- a/pic-sure-auth-db/db/sql/V4_ADD_CREATE_USER_STORED_PROCEDURE.sql +++ b/pic-sure-auth-db/db/sql/V4_ADD_CREATE_USER_STORED_PROCEDURE.sql @@ -1,22 +1,31 @@ USE `auth`; -delimiter // +DROP PROCEDURE IF EXISTS CreateUserWithRole; +DELIMITER // CREATE PROCEDURE CreateUserWithRole ( IN user_email VARCHAR(255), IN connection_id VARCHAR(255), IN role_name VARCHAR(255) ) BEGIN + -- Attempt to retrieve the UUIDs for the user and role based on the provided information SELECT @userUUID := uuid FROM auth.user WHERE email = user_email AND connectionId = connection_id; SELECT @roleUUID := uuid FROM auth.role WHERE name = role_name; + +-- If the user does not exist, create a new user entry IF @userUUID IS NULL THEN + -- Generate a new UUID for the user SET @userUUID = UNHEX(REPLACE(UUID(), '-', '')); + -- Retrieve the UUID for the connection SELECT @connectionUUID := uuid FROM auth.connection WHERE id = connection_id; -INSERT INTO auth.user (uuid, general_metadata, acceptedTOS, connectionId, email, matched, subject, is_active, long_term_token, isGateAnyRelation) -VALUES (@userUUID, null, (SELECT CURRENT_TIMESTAMP), @connectionUUID, user_email, 0, null, 1, null, 1); +-- Insert the new user record into the user table +INSERT INTO auth.user (uuid, general_metadata, acceptedTOS, connectionId, email, matched, subject, is_active, long_term_token) +VALUES (@userUUID, NULL, CURRENT_TIMESTAMP, @connectionUUID, user_email, 0, NULL, 1, NULL); END IF; + + -- If the role exists, associate the user with the role IF @roleUUID IS NOT NULL THEN INSERT INTO auth.user_role (user_id, role_id) VALUES (@userUUID, @roleUUID); END IF; END// -delimiter; \ No newline at end of file +DELIMITER ; \ No newline at end of file From 0d69a8b346f0df8e2f9825777e1e8372798d0f0a Mon Sep 17 00:00:00 2001 From: GeorgeC Date: Fri, 9 Feb 2024 07:12:40 -0500 Subject: [PATCH 4/5] Rename CreateUserWithRole stored procedure file --- ...RED_PROCEDURE.sql => V4__ADD_CREATE_USER_STORED_PROCEDURE.sql} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename pic-sure-auth-db/db/sql/{V4_ADD_CREATE_USER_STORED_PROCEDURE.sql => V4__ADD_CREATE_USER_STORED_PROCEDURE.sql} (100%) diff --git a/pic-sure-auth-db/db/sql/V4_ADD_CREATE_USER_STORED_PROCEDURE.sql b/pic-sure-auth-db/db/sql/V4__ADD_CREATE_USER_STORED_PROCEDURE.sql similarity index 100% rename from pic-sure-auth-db/db/sql/V4_ADD_CREATE_USER_STORED_PROCEDURE.sql rename to pic-sure-auth-db/db/sql/V4__ADD_CREATE_USER_STORED_PROCEDURE.sql From a3db14049a0ac0556ceb88d45593b7875a4ddad7 Mon Sep 17 00:00:00 2001 From: GeorgeC Date: Mon, 12 Feb 2024 15:49:05 -0500 Subject: [PATCH 5/5] Add general metadata parameter to CreateUserWithRole procedure --- .../db/sql/V4__ADD_CREATE_USER_STORED_PROCEDURE.sql | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/pic-sure-auth-db/db/sql/V4__ADD_CREATE_USER_STORED_PROCEDURE.sql b/pic-sure-auth-db/db/sql/V4__ADD_CREATE_USER_STORED_PROCEDURE.sql index d9b633159..53c550fad 100644 --- a/pic-sure-auth-db/db/sql/V4__ADD_CREATE_USER_STORED_PROCEDURE.sql +++ b/pic-sure-auth-db/db/sql/V4__ADD_CREATE_USER_STORED_PROCEDURE.sql @@ -5,7 +5,8 @@ DELIMITER // CREATE PROCEDURE CreateUserWithRole ( IN user_email VARCHAR(255), IN connection_id VARCHAR(255), - IN role_name VARCHAR(255) + IN role_name VARCHAR(255), + IN user_general_metadata varchar(255) ) BEGIN -- Attempt to retrieve the UUIDs for the user and role based on the provided information @@ -20,7 +21,7 @@ IF @userUUID IS NULL THEN SELECT @connectionUUID := uuid FROM auth.connection WHERE id = connection_id; -- Insert the new user record into the user table INSERT INTO auth.user (uuid, general_metadata, acceptedTOS, connectionId, email, matched, subject, is_active, long_term_token) -VALUES (@userUUID, NULL, CURRENT_TIMESTAMP, @connectionUUID, user_email, 0, NULL, 1, NULL); +VALUES (@userUUID, user_general_metadata, CURRENT_TIMESTAMP, @connectionUUID, user_email, 0, NULL, 1, NULL); END IF; -- If the role exists, associate the user with the role