API Keys

API keys exported
DROP   PROCEDURE Base_APIKeys_Authorisation;
DELIMITER //
CREATE PROCEDURE Base_APIKeys_Authorisation
(
    $apikey           TEXT
)
SQL SECURITY INVOKER
COMMENT 'EXPORTABLE'
BEGIN

    CALL _Base_Users_Authorise_Sessionid_Or_APIKEY( '', $apikey, @email, @USER, @idtype );

    IF "" = @idtype THEN

        CALL Error( 'Base_APIKeys_Authorisation: INVALID_AUTHORISATION' );

    ELSE

        SELECT
            @email  AS email,
            @USER   AS USER;

    END IF;

END
//
DELIMITER ;
API keys internal
DROP   PROCEDURE _Base_APIKeys;
DELIMITER //
CREATE PROCEDURE _Base_APIKeys
(
    $Sid TEXT
)
SQL SECURITY INVOKER
BEGIN

    CALL _Base_Users_Authorise_Sessionid( $Sid, @email, @USER, @idtype );

    IF NOT( @USER ) THEN

        CALL Notice( 'Base_APIKeys: INVALID_AUTHORISATION' );

    ELSE

        SELECT   *
        FROM     base_apikeys
        WHERE    USER_OWNER = @USER
        ORDER BY created;

    END IF;

END
//
DELIMITER ;
DROP   PROCEDURE _Admin_Base_APIKeys_Create;
DELIMITER //
CREATE PROCEDURE _Admin_Base_APIKeys_Create
(
    $Sid           CHAR(64),
    $apikey_type   TEXT,
    $USER_OWNER    INT,
    $ORG_ID        INT,
    $PROJECT_ID    INT
)
SQL SECURITY INVOKER
BEGIN

    DECLARE $APIKEY_ID  INT       DEFAULT  0;
    DECLARE $apikey     CHAR(36)  DEFAULT '';

    CALL _Base_Users_Authorise_Sessionid( $Sid, @email, @USER, @idtype );

    IF @@read_only THEN

        CALL Error( 'READ_ONLY' );

    ELSEIF NOT "ADMIN" = @idtype THEN

        CALL Notice( '_Admin_Base_APIKeys_Create: INVALID_AUTHORISATION' );

    ELSE

        CALL spgen_base_apikeys_replace
        (
            $USER_OWNER,    # USER_OWNER
            $APIKEY_ID,     # APIKEY_ID  INOUT
            NOW(),          # created
            GenerateSalt(), # apikey
            $apikey_type,   # apikey_type
            '',             # ip_address
            $ORG_ID,        # ORG_ID
            $PROJECT_ID     # PROJECT_ID
        );

    END IF;

END
//
DELIMITER ;