DROP PROCEDURE IF EXISTS account.user_changePassword;

DELIMITER $$
CREATE DEFINER=`root`@`%` PROCEDURE account.user_changePassword(vSelf INT, vOldPassword VARCHAR(255), vPassword VARCHAR(255))
BEGIN
/**
 * Changes the user password.
 *
 * @param vSelf The user id
 * @param vOldPassword The current password
 * @param vPassword The new password
 */
	DECLARE vPasswordOk BOOL;
	DECLARE vUserName VARCHAR(255);

	SELECT `password` = MD5(vOldPassword), `name`
		INTO vPasswordOk, vUserName
		FROM user WHERE id = vSelf;
		
	IF NOT vPasswordOk THEN
		SIGNAL SQLSTATE '45000'
			SET MESSAGE_TEXT = 'Invalid password';
	END IF;

	CALL user_setPassword(vSelf, vPassword);
END$$
DELIMITER ;
