View source
<?php
function login_disable_menu() {
$items = array();
$items['admin/config/people/login-disable'] = array(
'title' => 'Login Disable',
'description' => 'Disable the login form & access for certain user roles.',
'page callback' => 'drupal_get_form',
'page arguments' => array(
'login_disable_settings_form',
),
'access arguments' => array(
'administer permissions',
),
'type' => MENU_NORMAL_ITEM,
);
return $items;
}
function login_disable_permission() {
return array(
'bypass disabled login' => array(
'title' => t('bypass disabled login'),
'description' => t("Always allowed to log in."),
),
);
}
function login_disable_form_user_login_block_alter(&$form, &$form_state) {
login_disable_form_user_login_alter($form, $form_state);
}
function login_disable_form_user_login_alter(&$form, &$form_state) {
if (variable_get('login_disable_is_active', FALSE)) {
$key = variable_get('login_disable_key', 'admin');
if (!empty($key) && !array_key_exists($key, $_GET)) {
$form['name']['#disabled'] = 'disabled';
$form['pass']['#disabled'] = 'disabled';
$form['actions']['submit']['#disabled'] = 'disabled';
unset($form['#validate']);
unset($form['#submit']);
unset($form['action']);
drupal_set_message(variable_get('login_disable_message', t('Member access has been temporarily disabled. Please try again later.')), 'warning', FALSE);
}
}
}
function login_disable_user_login(&$edit, $account) {
if (variable_get('login_disable_is_active', FALSE)) {
if (user_access('bypass disabled login') == FALSE) {
drupal_set_message(variable_get('login_disable_message', t('Member access has been temporarily disabled. Please try again later.')), 'warning');
module_load_include('pages.inc', 'user');
user_logout();
exit;
}
}
}
function login_disable_settings_form($form, &$form_state) {
$form = array();
$form['login_disable_is_active'] = array(
'#type' => 'checkbox',
'#title' => 'Prevent user log in',
'#description' => t('When active the user login form will be disabled for everyone. For roles granted bypass rights they must use the access key defined below.'),
'#default_value' => (bool) variable_get('login_disable_is_active', FALSE),
);
$form['login_disable_key'] = array(
'#title' => t('Access key (optional)'),
'#description' => t('For added security, a word can be required to be added to the URL.'),
'#type' => 'textfield',
'#size' => 10,
'#default_value' => variable_get('login_disable_key', 'admin'),
);
if (!empty($form['login_disable_key']['#default_value'])) {
$form['login_disable_key']['#description'] .= '<br />' . t('The URL to use to log in is: @url', array(
'@url' => url('user/login') . '?' . $form['login_disable_key']['#default_value'],
));
}
$form['login_disable_message'] = array(
'#title' => t('End-user message when login is disabled'),
'#description' => t('Adding this word to the end of the @url url will allow access to the log in form.', array(
'@url' => 'user/login?' . variable_get('login_disable_key', 'admin'),
)),
'#type' => 'textfield',
'#size' => 80,
'#default_value' => variable_get('login_disable_message', t('Member access has been temporarily disabled. Please try again later.')),
);
$form = system_settings_form($form);
return $form;
}