add('empty_login_name', __('ERROR: login name is empty.'));
if (empty($passwd)) $error->add('empty_password', __('ERROR: password is empty.'));
return $error;
}
//
if (!function_exists('tuis_check_auth')) {
$error->add('not_exist_function', __('ERROR: tuis_check_auth function does not exist.'));
return $error;
}
//
$server_fqdn = get_option('tuis_auth_server_fqdn');
$server_port = intval(get_option('tuis_auth_server_port'));
if (empty($server_fqdn) || $server_port<0) {
if (empty($server_fqdn)) $error->add('empty_server_fqdn', __('ERROR: server fqdn is empty.'));
if ($server_port<0) $error->add('nvalid_server_port', __('ERROR: server port is invalid.'));
return $error;
}
// 1: 認証成功, 2: 認証に失敗, 3: ユーザが存在しない, 負数: その他のエラー
$result = tuis_check_auth($server_fqdn, $server_port, $lgname, $passwd, 0);
if ($result!=1) {
$error->add('login_error', __('ERROR: login failed.'));
return $error;
}
//
$user_id = null;
$user = get_userdatabylogin($lgname);
if (!$user) {
$user_id = tuis_auth_create_user($lgname);
if (is_a($user_id, 'WP_Error')) {
$error->add('user_create_error', __('ERROR: creation of user failed. '.$user_id->get_error_message()));
return $error;
}
}
else {
$user_id = $user->ID;
}
remove_filter('authenticate', 'tuis_auth_authenticate', 1, 3);
return new WP_User($user_id);
}
function tuis_auth_create_user($lgname)
{
$mailaddr = '';
if (preg_match('/^[a-z]\d\d\d\d\d[a-z][a-z]$/', $lgname)) {
// Student
$username = substr($lgname, 0, 6);
$mailaddr = $lgname.'@edu.tuis.ac.jp';
$userrole = 'author';
}
else {
// Teacher
$username = $lgname;
$mailaddr = $lgname.'@rsch.tuis.ac.jp';
$userrole = 'author';
}
$userData = array(
'user_pass' => microtime(),
'user_login' => $lgname,
'user_nicename' => $username,
'nickname' => $username,
'user_email' => $mailaddr,
'display_name' => $username,
'first_name' => '',
'last_name' => '',
'role' => $userrole
);
$result = wp_insert_user($userData);
return $result;
}
//
add_action('admin_menu', 'tuis_auth_admin_actions');
add_filter('authenticate', 'tuis_auth_authenticate', 1, 3);
//
register_activation_hook( __FILE__, 'tuis_auth_activation_hook' );
?>