Reworked register

--HG--
branch : quitta-gsoc-2013
This commit is contained in:
Quitta 2013-06-26 03:26:25 +02:00
parent e72eac8888
commit 5a163663cc
6 changed files with 155 additions and 66 deletions

View file

@ -257,15 +257,12 @@ class Users{
} }
function createUser($values){ function createUser($values){
$login = $values["name"];
$pass = $values["pass"];
$email = $values["mail"];
$webhost = $values["webhost"]; $libhost = $values["libhost"];
$webport = $values["webport"]; $libport = $values["libport"];
$webdbname = $values["webdbname"]; $libdbname = $values["libdbname"];
$webusername = $values["webusername"]; $libusername = $values["libusername"];
$webpassword = $values["webpassword"]; $libpassword = $values["libpassword"];
$shardhost = $values["shardhost"]; $shardhost = $values["shardhost"];
$shardport = $values["shardport"]; $shardport = $values["shardport"];
@ -273,42 +270,27 @@ class Users{
$shardusername = $values["shardusername"]; $shardusername = $values["shardusername"];
$shardpassword = $values["shardpassword"]; $shardpassword = $values["shardpassword"];
$salt = Users::generateSALT();
$hashpass = crypt($pass, $salt);
$params = array(
$login,
$hashpass,
$email
);
try{
//make connection with web db
$dbw = new PDO("mysql:host=$webhost;port=$webport;dbname=$webdbname", $webusername, $webpassword);
$dbw->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
//put into web db
$statement = $dbw->prepare("INSERT INTO ams_user (Login, Password, Email) VALUES (?, ?, ?)");
$statement->execute($params);
try { try {
//make connection with and put into shard db //make connection with and put into shard db
$dbs = new PDO("mysql:host=$shardhost;port=$shardport;dbname=$sharddbname", $shardusername, $shardpassword); $dbs = new PDO("mysql:host='127.0.39.3';port=$shardport;dbname=$sharddbname", $shardusername, $shardpassword);
$dbs->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $dbs->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$statement = $dbs->prepare("INSERT INTO user (Login, Password, Email) VALUES (?, ?, ?)"); $statement = $dbs->prepare("INSERT INTO user (Login, Password, Email) VALUES (:name, :pass, :mail)");
$statement->execute($params); $statement->execute($values["params"]);
return "ok";
} }
catch (PDOException $e) { catch (PDOException $e) {
//print_r($e); //oh noooz, the shard is offline! Put in query queue at ams_lib db!
//oh noooz, the shard is offline! Put in query queue at web db! try {
$params = array("type" => "createUser","query" => json_encode(array($login,$pass,$email))); $dbl = new PDO("mysql:host=$libhost;port=$libport;dbname=$libdbname", $libusername, $libpassword);
$statement = $dbw->prepare("INSERT INTO ams_querycache (type, query) VALUES (:type, :query)"); $dbl->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$params = array("type" => "createUser","query" => json_encode(array($values["params"]["name"],$values["params"]["pass"],$values["params"]["mail"])));
$statement = $dbl->prepare("INSERT INTO ams_querycache (type, query) VALUES (:type, :query)");
$statement->execute($params); $statement->execute($params);
} return "shardoffline";
}catch (PDOException $e) { }catch (PDOException $e) {
//go to error page or something, because can't access website db
print_r($e); print_r($e);
exit; return "liboffline";
}
} }
} }

View file

@ -5,21 +5,30 @@
// Variables for database access // Variables for database access
// ---------------------------------------------------------------------------------------- // ----------------------------------------------------------------------------------------
// where we can find the mysql database // where we can find the mysql database
//-----------------------------------------------------------------------------------------
//the www db
$WEBDBHOST = 'localhost'; $WEBDBHOST = 'localhost';
$WEBDBPORT = '3306'; $WEBDBPORT = '3306';
$WEBDBNAME = 'ryzom_ams'; $WEBDBNAME = 'ryzom_ams';
$WEBDBUSERNAME = 'shard'; $WEBDBUSERNAME = 'root';
$WEBDBPASSWORD = '' ; $WEBDBPASSWORD = 'lol123' ;
//the ams_lib db
$LIBDBHOST = 'localhost';
$LIBDBPORT = '3306';
$LIBDBNAME = 'ryzom_ams_lib';
$LIBDBUSERNAME = 'root';
$LIBDBPASSWORD = 'lol123' ;
//the shard db
$SHARDDBHOST = 'localhost' ; $SHARDDBHOST = 'localhost' ;
$SHARDDBPORT = '3306'; $SHARDDBPORT = '3306';
$SHARDDBNAME = 'nel' ; $SHARDDBNAME = 'nel' ;
$SHARDDBUSERNAME = 'shard' ; $SHARDDBUSERNAME = 'shard' ;
$SHARDDBPASSWORD = '' ; $SHARDDBPASSWORD = '' ;
//-----------------------------------------------------------------------------------------
// If true= the server will add automatically unknown user in the database // If true= the server will add automatically unknown user in the database
// (in nel.user= nel.permission= ring.ring_user and ring.characters // (in nel.user= nel.permission= ring.ring_user and ring.characters
$ALLOW_UNKNOWN = true ; $ALLOW_UNKNOWN = true ;

View file

@ -31,26 +31,43 @@ function add_user(){
function write_user($newUser){ function write_user($newUser){
//get the db specifics out of the config file
global $WEBDBHOST; global $WEBDBHOST;
global $WEBDBPORT; global $WEBDBPORT;
global $WEBDBNAME; global $WEBDBNAME;
global $WEBDBUSERNAME; global $WEBDBUSERNAME;
global $WEBDBPASSWORD; global $WEBDBPASSWORD;
global $LIBDBHOST;
global $LIBDBPORT;
global $LIBDBNAME;
global $LIBDBUSERNAME;
global $LIBDBPASSWORD;
global $SHARDDBHOST; global $SHARDDBHOST;
global $SHARDDBPORT; global $SHARDDBPORT;
global $SHARDDBNAME; global $SHARDDBNAME;
global $SHARDDBUSERNAME; global $SHARDDBUSERNAME;
global $SHARDDBPASSWORD; global $SHARDDBPASSWORD;
$values["name"] = $newUser["name"]; //create salt here, because we want it to be the same on the web/server
$values["pass"] = $newUser["pass"]; $hashpass = crypt($newUser["pass"], Users::generateSALT());
$values["mail"] = $newUser["mail"];
$values["webhost"] = $WEBDBHOST; $params = array(
$values["webport"] = $WEBDBPORT; 'name' => $newUser["name"],
$values["webdbname"] = $WEBDBNAME; 'pass' => $hashpass,
$values["webusername"] = $WEBDBUSERNAME; 'mail' => $newUser["mail"]
$values["webpassword"] = $WEBDBPASSWORD ; );
//print_r($params);
//make a $values array for passing all data to the Users::createUser() function.
$values["params"] = $params;
$values["libhost"] = $LIBDBHOST;
$values["libport"] = $LIBDBPORT;
$values["libdbname"] = $LIBDBNAME;
$values["libusername"] = $LIBDBUSERNAME;
$values["libpassword"] = $LIBDBPASSWORD ;
$values["shardhost"] = $SHARDDBHOST; $values["shardhost"] = $SHARDDBHOST;
$values["shardport"] = $SHARDDBPORT; $values["shardport"] = $SHARDDBPORT;
@ -59,8 +76,21 @@ function write_user($newUser){
$values["shardpassword"] = $SHARDDBPASSWORD; $values["shardpassword"] = $SHARDDBPASSWORD;
//Create the user on the shard + in case shard is offline put copy of query in query db
$result = Users :: createUser($values); $result = Users :: createUser($values);
try{
//make connection with web db and put it in there
$dbw = new PDO("mysql:host=$WEBDBHOST;port=$WEBDBPORT;dbname=$WEBDBNAME", $WEBDBUSERNAME, $WEBDBPASSWORD);
$dbw->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$statement = $dbw->prepare("INSERT INTO ams_user (Login, Password, Email) VALUES (:name, :pass, :mail)");
$statement->execute($params);
}catch (PDOException $e) {
//go to error page or something, because can't access website db
print_r($e);
exit;
}
print('Awesome'); print('Awesome');
} }

View file

@ -5,7 +5,7 @@ require( '../config.php' );
require( '../../ams_lib/libinclude.php' ); require( '../../ams_lib/libinclude.php' );
session_start(); session_start();
print("[" . $_SESSION['user'] . "] "); //print_r($_SESSION);
//Decide what page to load //Decide what page to load
if(isset($_SESSION['user'])){ if(isset($_SESSION['user'])){
@ -31,8 +31,8 @@ function loadpage ( $page ){
} }
//Set permission //Set permission
if(isset($_SESSION['Permission'])){ if(isset($_SESSION['permission'])){
$return['permission'] = $_SESSION['Permission']; $return['permission'] = $_SESSION['permission'];
}else{ }else{
//default permission //default permission
$return['permission'] = 0; $return['permission'] = 0;
@ -45,7 +45,5 @@ if($page == 'login' || $page == 'register'){
}else{ }else{
$return['no_visible_elements'] = 'FALSE'; $return['no_visible_elements'] = 'FALSE';
} }
//print_r($return);
helpers :: loadTemplate( $page , $return ); helpers :: loadTemplate( $page , $return );
session_destroy();

View file

@ -1,7 +1,6 @@
CREATE DATABASE IF NOT EXISTS `ryzom_ams`; CREATE DATABASE IF NOT EXISTS `ryzom_ams`;
USE `ryzom_ams`; USE `ryzom_ams`;
DROP TABLE IF EXISTS ams_user; DROP TABLE IF EXISTS ams_user;
DROP TABLE IF EXISTS ams_querycache;
CREATE TABLE IF NOT EXISTS `ams_user` ( CREATE TABLE IF NOT EXISTS `ams_user` (
`UId` int(10) NOT NULL AUTO_INCREMENT, `UId` int(10) NOT NULL AUTO_INCREMENT,
@ -12,6 +11,12 @@ CREATE TABLE IF NOT EXISTS `ams_user` (
PRIMARY KEY (`UId`) PRIMARY KEY (`UId`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COMMENT='contains all users information for ryzom_ams'; ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COMMENT='contains all users information for ryzom_ams';
);
CREATE DATABASE IF NOT EXISTS `ryzom_ams_lib`;
USE `ryzom_ams_lib`;
DROP TABLE IF EXISTS ams_querycache;
CREATE TABLE ams_querycache ( CREATE TABLE ams_querycache (
`SID` INT NOT NULL AUTO_INCREMENT PRIMARY KEY , `SID` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`type` VARCHAR( 64 ) NOT NULL , `type` VARCHAR( 64 ) NOT NULL ,

View file

@ -0,0 +1,65 @@
<?php
require( '../../config.php' );
ini_set( "display_errors", true );
error_reporting( E_ALL );
global $WEBDBHOST;
global $WEBDBUSERNAME;
global $WEBDBPASSWORD;
global $LIBDBHOST;
global $LIBDBUSERNAME;
global $LIBDBPASSWORD;
try{
//SETUP THE WWW DB
$dbw = new PDO("mysql:host=$WEBDBHOST;", $WEBDBUSERNAME, $WEBDBPASSWORD);
$dbw->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = "
CREATE DATABASE IF NOT EXISTS `ryzom_ams`;
USE `ryzom_ams`;
DROP TABLE IF EXISTS ams_user;
CREATE TABLE IF NOT EXISTS `ams_user` (
`UId` int(10) NOT NULL AUTO_INCREMENT,
`Login` varchar(64) NOT NULL DEFAULT '',
`Password` varchar(13) DEFAULT NULL,
`Email` varchar(255) NOT NULL DEFAULT '',
`Permission` int(3) NOT NULL DEFAULT 1,
PRIMARY KEY (`UId`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COMMENT='contains all users information for ryzom_ams';
);
";
$statement = $dbw->prepare($sql);
$statement->execute();
//SETUP THE AMS_LIB DB
$dbl = new PDO("mysql:host=$LIBDBHOST;", $LIBDBUSERNAME, $LIBDBPASSWORD);
$dbl->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = "
CREATE DATABASE IF NOT EXISTS `ryzom_ams_lib`;
USE `ryzom_ams_lib`;
DROP TABLE IF EXISTS ams_querycache;
CREATE TABLE ams_querycache (
`SID` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`type` VARCHAR( 64 ) NOT NULL ,
`query` VARCHAR( 512 ) NOT NULL
);
";
$statement = $dbl->prepare($sql);
$statement->execute();
print('Install completed successful!');
}catch (PDOException $e) {
//go to error page or something, because can't access website db
print('There was an error while installing');
print_r($e);
}