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' ); ?>