finished and tested first version of echomanager
This commit is contained in:
		@@ -4,6 +4,7 @@ namespace ManiaControl\Admin;
 | 
			
		||||
 | 
			
		||||
use ManiaControl\Callbacks\CallbackListener;
 | 
			
		||||
use ManiaControl\Callbacks\Callbacks;
 | 
			
		||||
use ManiaControl\Callbacks\EchoListener;
 | 
			
		||||
use ManiaControl\Logger;
 | 
			
		||||
use ManiaControl\ManiaControl;
 | 
			
		||||
use ManiaControl\Players\Player;
 | 
			
		||||
@@ -17,7 +18,7 @@ use ManiaControl\Settings\Setting;
 | 
			
		||||
 * @copyright 2014-2015 ManiaControl Team
 | 
			
		||||
 * @license   http://www.gnu.org/licenses/ GNU General Public License, Version 3
 | 
			
		||||
 */
 | 
			
		||||
class AuthenticationManager implements CallbackListener {
 | 
			
		||||
class AuthenticationManager implements CallbackListener, EchoListener {
 | 
			
		||||
	/*
 | 
			
		||||
	 * Constants
 | 
			
		||||
	 */
 | 
			
		||||
@@ -33,6 +34,8 @@ class AuthenticationManager implements CallbackListener {
 | 
			
		||||
	const AUTH_NAME_MASTERADMIN  = 'MasterAdmin';
 | 
			
		||||
	const CB_AUTH_LEVEL_CHANGED  = 'AuthenticationManager.AuthLevelChanged';
 | 
			
		||||
 | 
			
		||||
	const ECHO_GRANT_LEVEL  = 'ManiaControl.AuthenticationManager.GrandLevel';
 | 
			
		||||
	const ECHO_REVOKE_LEVEL = 'ManiaControl.AuthenticationManager.RevokeLevel';
 | 
			
		||||
	/*
 | 
			
		||||
	 * Private properties
 | 
			
		||||
	 */
 | 
			
		||||
@@ -52,6 +55,26 @@ class AuthenticationManager implements CallbackListener {
 | 
			
		||||
 | 
			
		||||
		// Callbacks
 | 
			
		||||
		$this->maniaControl->getCallbackManager()->registerCallbackListener(Callbacks::ONINIT, $this, 'handleOnInit');
 | 
			
		||||
 | 
			
		||||
		// Echo Grant Level Command (Usage: sendEcho json_encode("player" => "loginName", "level" => "AUTH_LEVEL_NUMBER")
 | 
			
		||||
		$this->maniaControl->getEchoManager()->registerEchoListener(self::ECHO_GRANT_LEVEL, $this, function ($params) {
 | 
			
		||||
			if (property_exists($params, 'level') && property_exists($params, 'player')) {
 | 
			
		||||
				$player = $this->maniaControl->getPlayerManager()->getPlayer($params->player);
 | 
			
		||||
				if ($player) {
 | 
			
		||||
					$this->grantAuthLevel($player, $params->level);
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
		});
 | 
			
		||||
 | 
			
		||||
		// Echo Revoke Level Command (Usage: sendEcho json_encode("player" => "loginName")
 | 
			
		||||
		$this->maniaControl->getEchoManager()->registerEchoListener(self::ECHO_REVOKE_LEVEL, $this, function ($params) {
 | 
			
		||||
			if (property_exists($params, 'player')) {
 | 
			
		||||
				$player = $this->maniaControl->getPlayerManager()->getPlayer($params->player);
 | 
			
		||||
				if ($player) {
 | 
			
		||||
					$this->maniaControl->getAuthenticationManager()->grantAuthLevel($player, self::AUTH_LEVEL_PLAYER);
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
		});
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
@@ -83,12 +106,12 @@ class AuthenticationManager implements CallbackListener {
 | 
			
		||||
	 */
 | 
			
		||||
	public static function getAuthLevelInt($authLevelParam) {
 | 
			
		||||
		if (is_object($authLevelParam) && property_exists($authLevelParam, 'authLevel')) {
 | 
			
		||||
			return (int)$authLevelParam->authLevel;
 | 
			
		||||
			return (int) $authLevelParam->authLevel;
 | 
			
		||||
		}
 | 
			
		||||
		if (is_string($authLevelParam)) {
 | 
			
		||||
			return self::getAuthLevel($authLevelParam);
 | 
			
		||||
		}
 | 
			
		||||
		return (int)$authLevelParam;
 | 
			
		||||
		return (int) $authLevelParam;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
@@ -98,7 +121,7 @@ class AuthenticationManager implements CallbackListener {
 | 
			
		||||
	 * @return int
 | 
			
		||||
	 */
 | 
			
		||||
	public static function getAuthLevel($authLevelName) {
 | 
			
		||||
		$authLevelName = (string)$authLevelName;
 | 
			
		||||
		$authLevelName = (string) $authLevelName;
 | 
			
		||||
		switch ($authLevelName) {
 | 
			
		||||
			case self::AUTH_NAME_MASTERADMIN:
 | 
			
		||||
				return self::AUTH_LEVEL_MASTERADMIN;
 | 
			
		||||
@@ -189,7 +212,7 @@ class AuthenticationManager implements CallbackListener {
 | 
			
		||||
		}
 | 
			
		||||
		$success = true;
 | 
			
		||||
		foreach ($loginElements as $loginElement) {
 | 
			
		||||
			$login = (string)$loginElement;
 | 
			
		||||
			$login = (string) $loginElement;
 | 
			
		||||
			$adminStatement->bind_param('si', $login, $masterAdminLevel);
 | 
			
		||||
			$adminStatement->execute();
 | 
			
		||||
			if ($adminStatement->error) {
 | 
			
		||||
@@ -271,7 +294,7 @@ class AuthenticationManager implements CallbackListener {
 | 
			
		||||
		if (!$player || !is_numeric($authLevel)) {
 | 
			
		||||
			return false;
 | 
			
		||||
		}
 | 
			
		||||
		$authLevel = (int)$authLevel;
 | 
			
		||||
		$authLevel = (int) $authLevel;
 | 
			
		||||
		if ($authLevel >= self::AUTH_LEVEL_MASTERADMIN) {
 | 
			
		||||
			return false;
 | 
			
		||||
		}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user