Skocz do zawartości
"Idzie nowe..." - o zmianach i nie tylko ×
Przeniesienie zakupów z IPS Marketplace / Moving bought items from IPS Marketplace ×

Rekomendowane odpowiedzi

Opublikowano (edytowane)

Witam, prosiłbym o pomoc w napisaniu  Moduł autoryzacji do IP.Board, pozwalający zalogować sie na forum przy użyciu konta z serwera. Częściowo moduł jest gotowy tylko trzeba dorobić instalator lecz nie umiem. Bardzo proszę o pomoc.

 

auth.php

/**
*
* Invision Power Services
* IP.Board v3.4.x
* Login handler abstraction : XyzzyRP account handler
*
*
* @author IP.Board
* @author Eider
* @author Lukasz Biegaj
* @package IP.Board
*
*/

if ( ! defined( 'IN_IPB' ) )
{
print "@lss-rp.pl>@fullserver.eu>
Incorrect access
You cannot access this file directly. If you have recently upgraded, make sure you upgraded 'admin.php'.";
exit();
}

class login_server extends login_core implements interface_login
{
/**
* Temporary data store
*
* @access protected
* @var array
*/
protected $data_store = array();

/**
* Login method configuration
*
* @access protected
* @var array
*/
protected $method_config = array();

/**
* Constructor
*
* @access public
* @param object ipsRegistry reference
* @param array Configuration info for this method
* @param array Custom configuration info for this method
* @return @e void
*/
public function __construct( ipsRegistry $registry, $method, $conf=array() )
{
$this->method_config = $method;
parent::__construct( $registry );
}

/**
* Authenticate the request
*
* @access public
* @param string Username
* @param string Email Address
* @param string Password
* @return boolean Authentication successful
*/
public function authenticate( $username, $email_address, $password )
{
//-----------------------------------------
// Check admin authentication request
//-----------------------------------------

if ( $this->is_admin_auth )
{
$this->adminAuthLocal( $username, $email_address, $password );

if ( $this->return_code == 'SUCCESS' )
{
return true;
}
}

//-----------------------------------------
// Reset array
//-----------------------------------------

$this->auth_errors = array();

//-----------------------------------------
// OK?
//-----------------------------------------

// @todo @fixme dorobic error handling
// @todo tu podaj ścieżkę do biblioteki adodb5 oraz dane autoryzacji
require_once("/home/lasrp/public_html/panel/p/libs/adodb5/adodb.inc.php");
$RDB=NewADOConnection("mysql");
$RDB->Connect("localhost, "*****", "*****, "****");
$RDB->Execute("set names utf8");

$hasz=md5(strtolower($username) . "MRFX_01" . $password);
$autentykacja=$RDB->getRow("SELECT id,login,email,premium>NOW() premium FROM lss_users WHERE login=? AND hash=?", Array($username, $hasz));

if (!$autentykacja || !$autentykacja['id']) {
$this->return_code = 'NO_USER';
return false;
}

$name=$autentykacja['login'];
$email=$autentykacja['email'];
$userId=$autentykacja['id'];

if ( count($this->auth_errors) )
{
$this->return_code = $this->return_code ? $this->return_code : 'NO_USER';
return false;
}

$this->_loadMember( $userId );

if ( $this->member_data['member_id'] )
{
$this->return_code = 'SUCCESS';
}
else
{
$this->member_data = $this->createLocalMember( array(
'members' => array(
'email' => $email,
'name' => $name,
'members_l_username' => strtolower($name),
'members_display_name' => $name,
'members_l_display_name' => strtolower($name),
'joined' => time(),
'members_created_remote' => 1,
'server_id' => $userId,
),
'profile_portal' => array(
),
) );

$this->return_code = 'SUCCESS';
}

/*
// @todo odkomentowac w razie potrzeby
// ponizszy fragment kodu odpowiada za przydzielenie gracza do grupy 'zbanowani' i grupy 'premium'
// mozesz go odkomentowac, ale popraw przydzielane member_group_id do grup w Twojej instalacji ipboard

$ban=$RDB->getOne("SELECT 1 FROM lss_bany WHERE id_user=? AND date_to>NOW()",Array($userId));
if ($ban && intval($ban)>0) {
// zakladamy bana na forum
$this->DB->update( 'members', array( 'member_group_id' => 5 ), 'member_id='.intval($this->member_data['member_id']) );
} elseif ($this->member_data['member_group_id']==5) { // zdejmujemy bana
$this->DB->update( 'members', array( 'member_group_id' => $autentykacja['premium']>0?10:3 ), 'member_id='.intval($this->member_data['member_id']) );
} elseif ($this->member_data['member_group_id']==3 && $autentykacja['premium']>0) {
$this->DB->update( 'members', array( 'member_group_id' => 10 ), 'member_id='.intval($this->member_data['member_id']) );
}
*/

$this->request['rememberMe'] = $this->data_store['cookiedate'] ;

return true;
}

/**
* Load a member from account ID
*
* @access protected
* @param string Token
* @return @e void
*/
protected function _loadMember( $userToken )
{
$check = $this->DB->buildAndFetch( array( 'select' => 'member_id',
'from' => 'members',
'where' => "server_id='" . $this->DB->addSlashes( $userToken ) . "'"
) );

if( $check['member_id'] )
{
$this->member_data = IPSMember::load( $check['member_id'], 'extendedProfile,groups' );
}
}
}

 

loginauth_install.xml

 




 

<?xml version="1.0" encoding="ISO-8859-1"?>
<export exported="1238768862">
<group>
<row>
<login_title>Serwer MTA</login_title>
<login_description>Dodaje mozliwosc logowania sie na forum uzywajac konta z serwera</login_description>
<login_folder_name>server</login_folder_name>
<login_maintain_url></login_maintain_url>
<login_register_url></login_register_url>
<login_alt_login_html></login_alt_login_html>
<login_alt_acp_html></login_alt_acp_html>
<login_settings>1</login_settings>
<login_enabled>0</login_enabled>
<login_safemode>0</login_safemode>
<login_replace_form>0</login_replace_form>
<login_user_id>username</login_user_id>
<login_login_url></login_login_url>
<login_logout_url></login_logout_url>
<login_order>3</login_order>
</row>
</group>
 
</export>

Edytowane przez luki2407

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę.