if ($mybb->user['username']) { redirect('index.php', $lang->mcc_already_loggedin); exit; } $content = $lang->mcc_login_header; // Currently only function of this page is to authenticate a user // and log them into MyBB with their Minecraft credentials. // Possible registration with Minecraft in the future... if ($mybb->get_input('act') === 'login') { $content = $lang->mcc_login_header; if ($mybb->request_method == 'post') { verify_post_check($mybb->get_input('my_post_key')); require_once 'inc/plugins/MinecraftConnect/MCAuth.class.php'; $username = $db->escape_string(trim($mybb->get_input('mccusername'))); $pass = $db->escape_string($mybb->get_input('mccpassword')); $mc = new MCAuth($username); if ($mc->validateInput()) { // Authenticate the user with Mojang's API $auth = $mc->authenticate($username, $pass); if ($auth == true) { $mcuser = $mc->getUsername(); // if user authenticated, log them in to MyBB if ($mc->login($mcuser)) { $myuser = $db->fetch_array($db->simple_select('users', 'username', "mcc_username='******'")); redirect('index.php', $lang->sprintf($lang->mcc_login_success, $myuser['username'], $mcuser)); } else { redirect('minecraftconnect.php?act=login', $lang->mcc_login_fail); } } else { $content = $mc->getErr(); }
<?php /** * Created by PhpStorm. * User: shane * Date: 15/07/26 * Time: 21:14 */ include "MCAuth.php"; include "config.php"; $Auth = new MCAuth(); if (isset($_POST)) { //get user and password from form $user = $_POST['user'] ?: null; $pass = $_POST['pass'] ?: null; //if we don't have anything to read, STOP! if ($pass == null || $user == null) { echo "Client did not post username or password, please try again!"; exit; } if ($Auth->authenticate($user, $pass)) { echo "<h1>Succession authenticating!</h1>><br>"; $profile = $Auth->account; $profileIDRaw = $profile['id']; $profileName = $profile['username']; //Thanks to https://github.com/Shadowwolf97/Minecraft-UUID-Utils/blob/master/MinecraftUUID.php#L145 $profileID = ""; $profileID .= substr($profileIDRaw, 0, 8) . "-"; $profileID .= substr($profileIDRaw, 8, 4) . "-"; $profileID .= substr($profileIDRaw, 12, 4) . "-"; $profileID .= substr($profileIDRaw, 16, 4) . "-";
function minecraftconnect_usercp() { global $mybb, $lang, $db, $theme, $templates, $headerinclude, $header, $footer, $plugins, $usercpnav; if (!$lang->mcc) { $lang->load('minecraftconnect'); } if ($mybb->get_input('action') === 'minecraftconnect' && !isset($mybb->input['do'])) { add_breadcrumb($lang->nav_usercp, 'usercp.php'); add_breadcrumb($lang->mcc_usercp_title, 'usercp.php?action=minecraftconnect'); $content = ''; $settingsArr = array('mcc_username', 'mcc_id'); $q = $db->simple_select('users', implode(',', $settingsArr), "uid = '{$mybb->user['uid']}'"); $r = $db->fetch_array($q); foreach ($settingsArr as $s) { $content .= "<tr><td><strong>{$lang->{$s}}:</strong> {$r[$s]}</td></tr>"; } if (!is_null($mybb->user['mcc_username'])) { $linksubmit = '<input type="submit" class="button" value="' . $lang->mcc_unlink . '" name="mcc_unlink" />'; } else { $linksubmit = '<input type="submit" class="button" value="' . $lang->mcc_link . '" name="mcc_link" />'; } // They're linking/unlinking their MC account if ($mybb->request_method == 'post') { verify_post_check($mybb->get_input('my_post_key')); if ($mybb->get_input('mcc_link') xor $mybb->get_input('mcc_unlink')) { if ($mybb->input['mcc_link']) { redirect('usercp.php?action=minecraftconnect&do=link'); } else { redirect('usercp.php?action=minecraftconnect&do=unlink'); } } else { redirect('usercp.php?action=minecraftconnect', $lang->mcc_usercp_err); } } eval("\$page = \"" . $templates->get('mcc_usercp') . "\";"); output_page($page); } // Display link page content if ($mybb->get_input('action') === 'minecraftconnect' && $mybb->get_input('do') === 'link') { // If user already has MC acc linked, redirect them to main MCC usercp page if (!empty($mybb->user['mcc_username']) or isset($mybb->user['mcc_username'])) { redirect('usercp.php?action=minecraftconnect', $lang->mcc_already_linked); } add_breadcrumb($lang->nav_usercp, 'usercp.php'); add_breadcrumb($lang->mcc_usercp_title, 'usercp.php?action=minecraftconnect'); add_breadcrumb($lang->mcc_usercp_link_title, 'usercp.php?action=minecraftconnect&do=link'); // If POSTed then they're trying to submit linking form if ($mybb->request_method == 'post') { verify_post_check($mybb->get_input('my_post_key')); // do linking/unlinking shit require_once '/MinecraftConnect/MCAuth.class.php'; $username = $db->escape_string(trim($mybb->get_input('mcusername'))); $password = $db->escape_string($mybb->get_input('mcpassword')); $mc = new MCAuth($username); if ($mc->validateInput()) { $auth = $mc->authenticate($username, $password); if ($auth == true) { $mcusername = $mc->getUsername(); $check = $db->num_rows($db->simple_select('users', 'uid', "mcc_username='******'")); // Check if username is taken in database already if ($check > 0) { redirect('usercp.php?action=minecraftconnect&do=link', $lang->mcc_name_taken); } // Link user's account $db->update_query('users', array('mcc_username' => $mcusername, 'mcc_accesstoken' => $mc->getAccessToken(), 'mcc_id' => $mc->getClientToken()), "uid='{$mybb->user['uid']}'"); redirect('usercp.php?action=minecraftconnect', $lang->sprintf($lang->mcc_link_success, $mcusername)); } else { redirect('usercp.php?action=minecraftconnect&do=link', $mc->getErr()); } } else { redirect('usercp.php?action=minecraftconnect&do=link', $mc->getErr()); } } else { $content = $lang->mcc_link_heading; $mcusername = ''; $readonly = ''; $passwordfield = '<tr><td class="trow1">' . $lang->mcc_password . ' <input type="password" name="mcpassword"></td></tr>'; } eval("\$linkpage = \"" . $templates->get('mcc_usercp_link') . "\";"); output_page($linkpage); } elseif ($mybb->get_input('action') === 'minecraftconnect' && $mybb->get_input('do') === 'unlink') { if (empty($mybb->user['mcc_username']) or !isset($mybb->user['mcc_username'])) { redirect('usercp.php?action=minecraftconnect', $lang->mcc_no_link); } add_breadcrumb($lang->nav_usercp, 'usercp.php'); add_breadcrumb($lang->mcc_usercp_title, 'usercp.php?action=minecraftconnect'); add_breadcrumb($lang->mcc_usercp_unlink_title, 'usercp.php?action=minecraftconnect&do=unlink'); $mcuser = $mybb->user['mcc_username']; // Delete account if POST request if ($mybb->request_method == 'post') { verify_post_check($mybb->get_input('my_post_key')); $q = "UPDATE `" . TABLE_PREFIX . "users` SET `mcc_username`=NULL, `mcc_accesstoken`=NULL, `mcc_id`=NULL WHERE uid='{$mybb->user['uid']}'"; if ($db->write_query($q)) { redirect('usercp.php?action=minecraftconnect', $lang->sprintf($lang->mcc_unlink_success, $mcuser)); } else { $content = $lang->mcc_unlink_fail; } } else { $content = $lang->mcc_unlink_heading; $mcusername = $mcuser; } eval("\$unlinkpage = \"" . $templates->get('mcc_usercp_unlink') . "\";"); output_page($unlinkpage); } }