Skip to content

Commit

Permalink
[ALS-5612] Create stored procedure to create a user (#154)
Browse files Browse the repository at this point in the history
* Add a new stored procedure to enable user creation

* Specific database Auth

* 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.

* Rename CreateUserWithRole stored procedure file

* Add general metadata parameter to CreateUserWithRole procedure
  • Loading branch information
Gcolon021 authored and Luke Sikina committed May 10, 2024
1 parent b8d642c commit 0686ee8
Showing 1 changed file with 32 additions and 0 deletions.
32 changes: 32 additions & 0 deletions pic-sure-auth-db/db/sql/V4__ADD_CREATE_USER_STORED_PROCEDURE.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
USE `auth`;

DROP PROCEDURE IF EXISTS CreateUserWithRole;
DELIMITER //
CREATE PROCEDURE CreateUserWithRole (
IN user_email VARCHAR(255),
IN connection_id 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
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 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, user_general_metadata, 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 ;

0 comments on commit 0686ee8

Please sign in to comment.