This little handler will also prevent access to profile and dashboard unless you are an admin.
It is handy if you're not using WordPress to handle your users.
function prevent_admin_access() {
if (strpos(strtolower($_SERVER['REQUEST_URI']), '/wp-admin') !== false && !current_user_can('administrator')) {
wp_redirect(get_option('siteurl'));
}
}
add_action('init', 'prevent_admin_access', 0);
Great little snippet. Just paste it into your themes functions.php file and away you go!
[ Source ]