Skip to content

Commit

Permalink
Add sync website username with integration
Browse files Browse the repository at this point in the history
  • Loading branch information
partydragen committed May 5, 2024
1 parent 91763a2 commit 12399ca
Show file tree
Hide file tree
Showing 8 changed files with 61 additions and 39 deletions.
14 changes: 14 additions & 0 deletions core/classes/Integrations/IntegrationUser.php
Expand Up @@ -93,6 +93,20 @@ public function update(array $fields = []): void
if (!$this->_db->update('users_integrations', $this->data()->id, $fields)) {
throw new RuntimeException('There was a problem updating integration user.');
}

// Sync username to website username?
if (isset($fields['username']) && Settings::get('username_sync') == $this->data()->integration_id) {
if (Settings::get('displaynames') === '1') {
$this->getUser()->update([
'username' => $fields['username']
]);
} else {
$this->getUser()->update([
'username' => $fields['username'],
'nickname' => $fields['username']
]);
}
}
}

/**
Expand Down
9 changes: 0 additions & 9 deletions custom/panel_templates/Default/core/api.tpl
Expand Up @@ -83,15 +83,6 @@
<label class="custom-control-label" for="enable_api">{$ENABLE_API}</label>
</div>

<div class="form-group custom-control custom-switch">
<input name="username_sync" id="username_sync" type="checkbox"
class="custom-control-input" {if $USERNAME_SYNC_VALUE eq 1} checked{/if} />
<label class="custom-control-label" for="username_sync">{$USERNAME_SYNC}</label>
<span class="badge badge-info">
<i class="fas fa-question-circle" data-container="body" data-toggle="popover"
data-placement="top" title="{$INFO}"
data-content="{$USERNAME_SYNC_INFO}"></i></span>
</div>
<div class="form-group">
<input type="hidden" name="token" value="{$TOKEN}">
<input type="submit" class="btn btn-primary" value="{$SUBMIT}">
Expand Down
25 changes: 25 additions & 0 deletions custom/panel_templates/Default/core/integrations.tpl
Expand Up @@ -80,6 +80,31 @@
</div>
</div>

<div class="card shadow mb-4">
<div class="card-body">
<form action="" method="post">
<div class="form-group">
<label for="inputSyncUsername">{$SYNC_USERNAME_INTEGRATION}</label>
<span class="badge badge-info">
<i class="fas fa-question-circle"
data-container="body" data-toggle="popover" data-placement="top"
title="{$INFO}" data-content='{$SYNC_USERNAME_INTEGRATION_INFO}'></i>
</span>
<select name="sync_username_integration" class="form-control" id="inputSyncUsername">
<option value="0"{if $SYNC_USERNAME_VALUE == 0} selected{/if}>{$DISABLED}</option>
{foreach $INTEGRATIONS_LIST as $integration_name => $integration}
<option value="{$integration.id}"{if $SYNC_USERNAME_VALUE == $integration.id} selected{/if}>{$integration.name}</option>
{/foreach}
</select>
</div>
<div class="form-group">
<input type="hidden" name="token" value="{$TOKEN}">
<input type="submit" class="btn btn-primary" value="{$SUBMIT}">
</div>
</form>
</div>
</div>

<!-- Spacing -->
<div style="height:1rem;"></div>

Expand Down
19 changes: 0 additions & 19 deletions modules/Core/includes/endpoints/ServerInfoEndpoint.php
Expand Up @@ -118,25 +118,6 @@ private function updateUsername(IntegrationUser $integrationUser, array $player)
'username' => Output::getClean($player['name'])
]);
}

if (Settings::get('username_sync')) {
$user = $integrationUser->getUser();
if (!$user->exists() || $player['name'] == $user->data()->username) {
return;
}

// Update username
if (Settings::get('displaynames') === '1') {
$user->update([
'username' => $player['name']
]);
} else {
$user->update([
'username' => $player['name'],
'nickname' => $player['name']
]);
}
}
}

private function updatePlaceholders(User $user, $player): void {
Expand Down
4 changes: 2 additions & 2 deletions modules/Core/language/en_UK.json
Expand Up @@ -217,8 +217,8 @@
"admin/enable_player_list": "Enable player list?",
"admin/enable_registration": "Enable registration?",
"admin/enable_status_query": "Enable status query?",
"admin/enable_username_sync": "Enable username sync?",
"admin/enable_username_sync_info": "If enabled, website usernames will be updated to match in-game usernames. This happens when the in-game plugin sends a list of UUIDs and usernames, for online players, to the website.",
"admin/sync_username_integration": "Sync username with integration?",
"admin/sync_username_integration_info": "If enabled, website usernames will be updated to match integration usernames.",
"admin/enabled": "Enabled",
"admin/enter_authme_db_details": "Please enter valid database details.",
"admin/error_deleted_successfully": "The error has been deleted successfully.",
Expand Down
2 changes: 1 addition & 1 deletion modules/Core/module.php
Expand Up @@ -1591,7 +1591,7 @@ public function getDebugInfo(): array {
'minecraft' => [
'mc_integration' => (bool)Settings::get(Settings::MINECRAFT_INTEGRATION),
'uuid_linking' => (bool)Settings::get('uuid_linking'),
'username_sync' => (bool)Settings::get('username_sync'),
'username_sync' => Settings::get('username_sync'),
'query_type' => Settings::get('query_type', 'internal'),
'servers' => $servers,
]
Expand Down
7 changes: 0 additions & 7 deletions modules/Core/pages/panel/api.php
Expand Up @@ -43,10 +43,6 @@

Settings::set('use_api', Input::get('enable_api'));

// Update Username sync
$username_sync = isset($_POST['username_sync']) && $_POST['username_sync'] == 'on' ? '1' : '0';
Settings::set('username_sync', $username_sync);

Session::flash('api_success', $language->get('admin', 'api_settings_updated_successfully'));
Redirect::to(URL::build('/panel/core/api'));
//Log::getInstance()->log(Log::Action('admin/api/change'));
Expand Down Expand Up @@ -202,9 +198,6 @@
'API_URL_VALUE' => rtrim(URL::getSelfURL(), '/') . rtrim(URL::build('/api/v2/', '', 'non-friendly'), '/'),
'ENABLE_API_FOR_URL' => $language->get('admin', 'api_disabled'),
'COPY' => $language->get('admin', 'copy'),
'USERNAME_SYNC' => $language->get('admin', 'enable_username_sync'),
'USERNAME_SYNC_INFO' => $language->get('admin', 'enable_username_sync_info'),
'USERNAME_SYNC_VALUE' => Settings::get('username_sync') === '1',
'TOKEN' => Token::get(),
'SUBMIT' => $language->get('general', 'submit'),
'COPIED' => $language->get('general', 'copied'),
Expand Down
20 changes: 19 additions & 1 deletion modules/Core/pages/panel/integrations.php
Expand Up @@ -24,10 +24,24 @@
$integrations = Integrations::getInstance();

if (!isset($_GET['integration'])) {
if (Input::exists()) {
$errors = [];

if (Token::check()) {
Settings::set('username_sync', Input::get('sync_username_integration'));

Session::flash('integrations_success', $language->get('admin', 'integration_updated_successfully'));
Redirect::to(URL::build('/panel/core/integrations'));
} else {
$errors[] = $language->get('general', 'invalid_token');
}
}

// Get integrations list
$integrations_list = [];
foreach ($integrations->getAll() as $integration) {
$integrations_list[] = [
'id' => $integration->data()->id,
'name' => Output::getClean($integration->getName()),
'icon' => Output::getClean($integration->getIcon()),
'edit_link' => URL::build('/panel/core/integrations/', 'integration=' . $integration->getName()),
Expand All @@ -41,7 +55,11 @@
'INTEGRATIONS_LIST' => $integrations_list,
'ENABLED' => $language->get('admin', 'enabled'),
'CAN_UNLINK' => $language->get('admin', 'can_unlink'),
'REQUIRED' => $language->get('admin', 'required')
'REQUIRED' => $language->get('admin', 'required'),
'DISABLED' => $language->get('admin', 'disabled'),
'SYNC_USERNAME_INTEGRATION' => $language->get('admin', 'sync_username_integration'),
'SYNC_USERNAME_INTEGRATION_INFO' => $language->get('admin', 'sync_username_integration_info'),
'SYNC_USERNAME_VALUE' => Settings::get('username_sync'),
]);

$template_file = 'core/integrations.tpl';
Expand Down

0 comments on commit 12399ca

Please sign in to comment.