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 ;
DROP   PROCEDURE Admin_Base_APIKeys_Create;
DELIMITER //
CREATE PROCEDURE Admin_Base_APIKeys_Create
(
    $Sid           TEXT,
    $apikey_type   TEXT,
    $USER_OWNER    INT,
    $ORG_ID        INT,
    $PROJECT_ID    INT
)
SQL SECURITY INVOKER
COMMENT 'EXPORTABLE'
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 _Admin_Base_APIKeys_Create
        (
            $apikey_type,
            '',
            $USER_OWNER,
            $ORG_ID,
            $PROJECT_ID,
            $APIKEY_ID,
            $apikey
        );

    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
(
    $apikey_type   TEXT,
    $ip_address    TEXT,
    $USER_OWNER    INT,
    $ORG_ID        INT,
    $PROJECT_ID    INT,
OUT $APIKEY_ID     INT,
OUT $apikey        TEXT
)
SQL SECURITY INVOKER
BEGIN

    SET $APIKEY_ID = 0;
    SET $apikey    = GenerateSalt();

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

END
//
DELIMITER ;