Admin

Admin exported

base_users_admin

DROP   PROCEDURE Base_Users_Admin;
DELIMITER //
CREATE PROCEDURE Base_Users_Admin
(
    $sid   TEXT,
    $USER  INT
)
SQL SECURITY INVOKER
COMMENT 'EXPORTABLE'
BEGIN

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

    IF NOT( 'ADMIN' = @idtype ) THEN

        CALL Notice( 'Base_Users_Admin: INVALID_AUTHORISATION' );

    ELSEIF $USER THEN

        SELECT *
        FROM  view_base_users_admin
        WHERE USER = $USER;

    ELSE

        SELECT   *
        FROM     view_base_users_admin
        ORDER BY given_name, family_name, email;

    END IF;

END
//
DELIMITER ;

Base_Users_Admin_Update

DROP   PROCEDURE Base_Users_Admin_Update;
DELIMITER //
CREATE PROCEDURE Base_Users_Admin_Update
(
    $Sid            TEXT,
    $USER           INT,
    $user_mfa_type  TEXT,
    $given_name     TEXT,
    $family_name    TEXT,
    $email          TEXT,
    $mobile         TEXT,
    $password       TEXT,
    $type           TEXT
)
SQL SECURITY INVOKER
COMMENT 'EXPORTABLE'
BEGIN

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

    IF @@read_only THEN

        CALL Error( 'READ_ONLY' );

    ELSEIF NOT( 'ADMIN' = @idtype ) THEN

        CALL Notice( 'Base_Users_Admin_Update: INVALID_AUTHORISATION' );

    ELSE

        UPDATE base_users
        SET
            user_mfa_type = OrNull( $user_mfa_type            ), 
            given_name    = IFNULL( $given_name , given_name  ),
            family_name   = IFNULL( $family_name, family_name ),
            email         = IFNULL( $email      , email       ),
            mobile        = IFNULL( $mobile     , mobile      )

        WHERE USER = $USER;

        IF NOT ISNULL($password) AND "" != $password THEN
            CALL _Base_Users_Set_Password( $USER, $password );
        END IF;

        IF NOT ISNULL($type)     AND "" != $type THEN
            UPDATE base_users_uids
            SET    type = $type
            WHERE  USER = $USER;
        END IF;

    END IF;

END
//
DELIMITER ;
Admin internal

base_users_create_admin

DROP   PROCEDURE Base_Users_Create_Admin;
DELIMITER //
CREATE PROCEDURE Base_Users_Create_Admin
(
  $password                      CHAR(99)
)
SQL SECURITY INVOKER
BEGIN

    DECLARE $send_email INT DEFAULT 0;

    IF @@read_only THEN

        CALL Error( 'READ_ONLY' );

    ELSEIF NOT IsLocalCaller() THEN

        CALL Notice( 'Base_Users_Create_Admin: INVALID_INVOCATION' );

    ELSEIF NOT( IsRootCaller() OR IsEventScheduler() ) THEN

        CALL Notice( 'Base_Users_Create_Admin: INVALID_AUTHORISATION' );

    ELSE

        CALL Base_Users_Create_Quietly( 'admin', $password, 'Admin', 'Account', 'ADMIN', $send_email );

    END IF;

END
//
DELIMITER ;

users_admin_reset_password

DROP   PROCEDURE Base_Users_Admin_Reset_Password;
DELIMITER //
CREATE PROCEDURE Base_Users_Admin_Reset_Password
(
  $email        CHAR(99),
  $new_password CHAR(99)
)
SQL SECURITY INVOKER
BEGIN

    DECLARE $USER  INT  DEFAULT 0;

    IF @@read_only THEN

        CALL Error( 'READ_ONLY' );

    ELSEIF NOT IsLocalCaller() THEN

        CALL Notice( 'Base_Users_Admin_Reset_Password: INVALID_INVOCATION' );

    ELSEIF NOT IsRootCaller() THEN

        CALL Notice( 'Base_Users_Admin_Reset_Password: INVALID_AUTHORISATION' );

    ELSE

        SELECT  USER
        INTO   $USER
        FROM    base_users
        WHERE   user_deleted = 0
        AND     email        = $email;

        IF $USER THEN

            CALL _Base_Users_Set_Password( $USER, $new_password );

        END IF;

    END IF;

END
//
DELIMITER ;

base_users_admin_set_password

DROP   PROCEDURE Base_Users_Admin_Set_Password;
DELIMITER //
CREATE PROCEDURE Base_Users_Admin_Set_Password
(
  $email_provisional  TEXT,
  $new_password       TEXT
)
SQL SECURITY INVOKER
BEGIN

    IF @@read_only THEN

        CALL Error( 'READ_ONLY' );

    ELSEIF NOT IsLocalCaller() THEN

        CALL Error( 'Base_Users_Admin_Reset_Password: INVALID_INVOCATION' );

    ELSEIF NOT $USER THEN

        CALL Warning( "Base_Users_Admin_Set_Password: INVALID_PARAMETERS(email_provisional)" );

    ELSE BEGIN

        DECLARE $USER  INT  DEFAULT 0;

        SET $USER = Base_Users_User_From_EmailProvisional( $email_provisional );

        CALL Base_Users_Activations_Create_Out
        (
            $USER,
            $email_provisional,
            $token  # OUT
        );

        IF NOT Empty( $token ) THEN
            CALL _Base_Users_Activations_Confirm_Account( $token, $new_password  );
        END IF;

    END; END IF;

END
//
DELIMITER ;

base_users_reset_password

DROP   PROCEDURE base_users_reset_password;
DELIMITER //
CREATE PROCEDURE base_users_reset_password
(
  $Sid          CHAR(64),
  $USER         INT(11),
  $new_password CHAR(99)
)
SQL SECURITY INVOKER
BEGIN

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

    IF @@read_only THEN

        CALL Error( 'READ_ONLY' );

    ELSEIF "ADMIN" = @idtype THEN

        CALL base_users_set_password( $USER, $new_password );

    END IF;

END
//
DELIMITER ;

Base_Users_Retrieve_All

DROP   PROCEDURE Base_Users_Retrieve_All;
DELIMITER //
CREATE PROCEDURE Base_Users_Retrieve_All
(
$Sid                           CHAR(64)
)
SQL SECURITY INVOKER
BEGIN

    CALL Error( "Base_Users_Retrieve_All renamed to _Admin_Base_Users_Retrieve_All" );

END
//
DELIMITER ;

_Admin_Base_Users_Retrieve_All

DROP   PROCEDURE _Admin_Base_Users_Retrieve_All;
DELIMITER //
CREATE PROCEDURE _Admin_Base_Users_Retrieve_All
(
$Sid                           TEXT
)
SQL SECURITY INVOKER
BEGIN

    IF @@read_only THEN

        CALL Error( 'READ_ONLY' );

    ELSE

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

        IF "ADMIN" != @idtype THEN

            CALL Notice( '_Base_Users_Retrieve_All: INVALID_AUTHORISATION' );

        ELSE

            SELECT   *
            FROM     view_base_users
            ORDER BY USER DESC;

        END IF;

    END IF;

END
//
DELIMITER ;
DROP   PROCEDURE Admin_Tables;
DELIMITER //
CREATE PROCEDURE Admin_Tables
()
SQL SECURITY INVOKER
BEGIN

    DECLARE $current_db TEXT DEFAULT '';

    SET $current_db = DATABASE();

    SELECT
        TABLE_SCHEMA,
        TABLE_NAME,
        TABLE_ROWS,
        DATA_LENGTH,
        FLOOR(DATA_LENGTH /    1000) As KB,
        FLOOR(DATA_LENGTH / 1000000) As MB

    FROM     information_schema.TABLES
    WHERE    TABLE_SCHEMA = $current_db
    AND      NOT ISNULL(TABLE_ROWS)
    ORDER BY DATA_LENGTH;

END
//
DELIMITER ;
DROP   PROCEDURE Activate;
DELIMITER //
CREATE PROCEDURE Activate
()
SQL SECURITY INVOKER
BEGIN

    UPDATE mysql.proc
    SET    security_type = 'DEFINER'
    WHERE  db            =  DATABASE()
    AND    type          = 'FUNCTION'
    AND    name          = 'RetrieveParametersFor'
    ;

END
//
DELIMITER ;
DROP   PROCEDURE Deactivate;
DELIMITER //
CREATE PROCEDURE Deactivate
()
SQL SECURITY INVOKER
BEGIN

    UPDATE mysql.proc
    SET    security_type = 'INVOKER'
    WHERE  db            =  DATABASE()
    AND    type          = 'FUNCTION'
    AND    name          = 'RetrieveParametersFor'
    ;

END
//
DELIMITER ;