The role you are describing is “Contributor”. So the option would be to use this role unless you still want to edit Author capabilities which would be done as follows:
function disable_authors_publish_cap() {
// Get author role object
$author = get_role( 'author' );
// Remove the post publishing capability
$author->remove_cap( 'publish_posts' );
}
add_action( 'init', 'disable_authors_publish_cap' );
In addition if you would want the exact same capabilities for both Authors and Contributors, then there are some more capabilities to “remove”:
function disable_authors_caps() {
// Get author role object
$author = get_role( 'author' );
// List the author vs contributor capabilities
$caps = array(
'edit_published_posts',
'upload_files',
'publish_posts',
'delete_published_posts'
);
foreach ( $caps as $cap ) {
// Remove the capability.
$author->remove_cap( $cap );
}
}
add_action( 'init', 'disable_authors_caps' );
Best of luck!