char creation proto, security override, wizard_register, updated system reference

This commit is contained in:
Ulf Gebhardt 2014-12-23 15:24:03 +01:00
parent 503fc5055d
commit baa3ed2679
20 changed files with 237 additions and 43 deletions

View File

@ -16,5 +16,5 @@ if(!$json){
//Construct the api with the dasense specific ApiVerfy Class and the call handler for da-sense api-calls ApiClass
//ApiClass contains all stuff you would seek in the index -> look there
echo \SYSTEM\API\api::run('\SYSTEM\API\verify', 'api_mojotrollz',$json);
echo \SYSTEM\API\api::run('\SYSTEM\API\verify', 'api_mojotrollz_beta',$json);
new \SYSTEM\LOG\COUNTER("API was called sucessfully.");

View File

@ -9,6 +9,7 @@ INSERT INTO `system_api` (`ID`, `group`, `type`, `parentID`, `parentValue`, `nam
INSERT INTO `system_api` (`ID`, `group`, `type`, `parentID`, `parentValue`, `name`, `verify`) VALUES (25, 0, 2, 11, 'create', 'password_sha', 'STRING');
INSERT INTO `system_api` (`ID`, `group`, `type`, `parentID`, `parentValue`, `name`, `verify`) VALUES (26, 0, 2, 11, 'create', 'email', 'STRING');
INSERT INTO `system_api` (`ID`, `group`, `type`, `parentID`, `parentValue`, `name`, `verify`) VALUES (27, 0, 2, 11, 'create', 'locale', 'LANG');
INSERT INTO `system_api` (`ID`, `group`, `type`, `parentID`, `parentValue`, `name`, `verify`) VALUES (30, 0, 2, 10, 'files', 'cat', 'STRING');
INSERT INTO `system_api` (`ID`, `group`, `type`, `parentID`, `parentValue`, `name`, `verify`) VALUES (31, 0, 3, 10, 'files', 'id', 'STRING');
INSERT INTO `system_api` (`ID`, `group`, `type`, `parentID`, `parentValue`, `name`, `verify`) VALUES (40, 0, 2, 10, 'text', 'request', 'STRING');

View File

@ -5,6 +5,7 @@ require_once dirname(__FILE__).'/realm/autoload.inc';
require_once dirname(__FILE__).'/world/autoload.inc';
require_once dirname(__FILE__).'/database/autoload.inc';
require_once dirname(__FILE__).'/map/autoload.inc';
SYSTEM\autoload::registerFolder(dirname(__FILE__).'/beta','');
SYSTEM\autoload::registerFolder(dirname(__FILE__).'/char','');
SYSTEM\autoload::registerFolder(dirname(__FILE__).'/char/qq','DBD');
SYSTEM\autoload::registerFolder(dirname(__FILE__).'/client','');

View File

@ -0,0 +1,49 @@
<?php
class Security extends \SYSTEM\SECURITY\Security {
public static function create($username, $password, $email, $locale, $advancedResult=false, $checkAvailable = true,$betacode=null, $wow_password=null){
//check beta code
if(!saimod_mojotrollz_beta::code_check($betacode)){
throw new ERROR("Betacode wrong!");}
//system account check
self::startSession();
// check availability of username (in non-compatibility mode, otherwise it is already checked in DasenseAccount)
if($checkAvailable && !self::available($username)){
throw new ERROR("Username Not available!");}
//WoW Account check
// available check not required, since only 1 way of creation planned
//Character check
if(!charcreation::check_all()){
throw new ERROR("Character Data incomplete");}
//system account
$result = \SYSTEM\DBD\SYS_SECURITY_CREATE::QI(array( $username , $password, $email, $locale, 1 ));
if(!$result || !self::login($username, $password, $locale)){
throw new ERROR("System Account creation fail!");}
$user_system = self::getUser()->id;
//WoW Account
$result = \DBD\ACCOUNT_CREATE::QI(array($username,$wow_password,$email));
if(!$result){
throw new ERROR("WoW Account creation fail!");}
$user_wow = \DBD\ACCOUNT_GET_ID::Q1(array($username))['id'];
//mojotrollz_user
$result = \DBD\ACCOUNT_CREATE_MOJOTROLLZ::QI(array($user_system,$user_wow));
if(!$result){
throw new ERROR("System-Account - WoW-Account creation fail");}
//Character
if(!charcreation::save($user_wow)){
throw new ERROR("Character creation fail!");}
//Update BetaCode
saimod_mojotrollz_beta::code_use($betacode, $user_system);
//std system result
return JsonResult::toString(\SYSTEM\DBD\SYS_SECURITY_LOGIN_SHA1::Q1(array($username, $password),array($username, $username, $password)));
}
}

View File

@ -0,0 +1,5 @@
<?php
class api_mojotrollz_beta extends api_mojotrollz {
public static function call_account_action_create($username, $password_sha, $email, $locale,$betacode=null,$wow_password=null){
return Security::create($username, $password_sha, $email, $locale, false, true, $betacode,$wow_password);}
}

View File

@ -0,0 +1,2 @@
INSERT INTO `system_api` (`ID`, `group`, `type`, `parentID`, `parentValue`, `name`, `verify`) VALUES (28, 0, 2, 11, 'create', 'betacode', 'STRING');
INSERT INTO `system_api` (`ID`, `group`, `type`, `parentID`, `parentValue`, `name`, `verify`) VALUES (29, 0, 2, 11, 'create', 'wow_password', 'STRING');

View File

@ -46,6 +46,13 @@ class charcreation {
return $result;
}
public static function save($account){
if(!self::check_all()){
throw new ERROR("Character not complete, could not save Char!");}
$data = \SYSTEM\SECURITY\Security::load(self::MOJO_CC_SESSIONKEY);
return \DBD\CHAR_CREATE::QI(array(0,$account,$data['char_name'],$data['char_race'],$data['char_class'],$data['char_gender']));
}
private static function session_default(){
return array( 'char_name' => self::DEFAULT_CHAR_NAME,
'char_gender' => self::DEFAULT_CHAR_GENDER,

View File

@ -99,7 +99,7 @@ class charcreation_validator {
}
public static function is_char_equip($value){
return false;}
return true;}
public static function char_equip($value){}
public static function is_char_guild($value){

View File

@ -0,0 +1,21 @@
<?php
namespace DBD;
class CHAR_CREATE extends \SYSTEM\DB\QP {
protected static function query(){
return new \SYSTEM\DB\QQuery(get_class(),
//pg
'',
//mys
'INSERT INTO `characters` (`guid`, `account`, `name`, `race`, `class`, `gender`, `level`, `xp`, `money`,'.
'`playerBytes`, `playerBytes2`, `playerFlags`, `position_x`, `position_y`, `position_z`, `map`, `orientation`,'.
'`taximask`, `online`, `cinematic`, `totaltime`, `leveltime`, `logout_time`, `is_logout_resting`, `rest_bonus`,'.
'`resettalents_cost`, `resettalents_time`, `trans_x`, `trans_y`, `trans_z`, `trans_o`, `transguid`, `extra_flags`,'.
'`stable_slots`, `at_login`, `zone`, `death_expire_time`, `taxi_path`, `honor_highest_rank`, `honor_standing`,'.
'`stored_honor_rating`, `stored_dishonorable_kills`, `stored_honorable_kills`, `watchedFaction`, `drunk`,'.
'`health`, `power1`, `power2`, `power3`, `power4`, `power5`, `exploredZones`, `equipmentCache`, `ammoId`,'.
'`actionBars`, `deleteInfos_Account`, `deleteInfos_Name`, `deleteDate`)'.
' VALUES (?, ?, ?, ?, ?, ?, 60, 0, 0, 151061250, 33554438, 32, -4995.83, -863.73, 497.037, 0, 5.33359, "2 0 0 0 0 0 0 0 ", 0, 1, 554, 554, 1403118410, 1, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 1537, 0, "", 0, 0, 0, 0, 0, 4294967295, 0, 2201, 2282, 0, 0, 100, 0, "0 0 0 545259520 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 524288 131072 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ", "0 0 0 0 0 0 45 0 0 0 0 0 44 0 43 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2361 0 0 0 0 0 0 0 ", 0, 0, NULL, NULL, NULL);',
new \DBD\mangos_chars()
);}}

View File

@ -1,3 +1,4 @@
<?php
\SYSTEM\autoload::registerFolder(dirname(__FILE__),'');
\SYSTEM\autoload::registerFolder(dirname(__FILE__).'/log');
\SYSTEM\autoload::registerFolder(dirname(__FILE__).'/log');
\SYSTEM\autoload::registerFolder(dirname(__FILE__).'/qq','DBD');

View File

@ -0,0 +1,14 @@
<?php
namespace DBD;
class ACCOUNT_CREATE extends \SYSTEM\DB\QP {
protected static function query(){
return new \SYSTEM\DB\QQuery(get_class(),
//pg
'',
//mys
'INSERT INTO account (username, sha_pass_hash, email)
VALUES(?,?,?);',
new \DBD\mangos_realm()
);}}

View File

@ -0,0 +1,12 @@
<?php
namespace DBD;
class ACCOUNT_CREATE_MOJOTROLLZ extends \SYSTEM\DB\QP {
protected static function query(){
return new \SYSTEM\DB\QQuery(get_class(),
//pg
'',
//mys
'INSERT INTO `mojotrollz_user` (`system_user`, `mangos_user`) VALUES (?,?);'
);}}

View File

@ -0,0 +1,13 @@
<?php
namespace DBD;
class ACCOUNT_GET_ID extends \SYSTEM\DB\QP {
protected static function query(){
return new \SYSTEM\DB\QQuery(get_class(),
//pg
'',
//mys
'SELECT id FROM account WHERE username = ?;',
new \DBD\mangos_realm()
);}}

View File

@ -1,4 +1,35 @@
function init_wizard_register(){
remove_search();
$('#back_link').click(function(){system.load($(this).attr('sysload'));});
//jqBootstrapValidation
$("#register_form input").not("[type=submit]").jqBootstrapValidation({
preventSubmit: true,
submitError: function (form, event, errors) {event.preventDefault();},
submitSuccess: function(form, event){
console.log('sent');
event.preventDefault();
var username = document.getElementById('register_username').value;
var email = document.getElementById('register_email').value;
var password = document.getElementById('register_password1').value;
var locale = "enUS";
var betacode = document.getElementById('register_betacode').value;
var wow_password = "";
$.ajax({type : 'GET',
url: './api.php?call=account&action=create&username='+username+
'&password_sha='+$.sha1(password)+
'&email='+email+
'&locale='+locale+
'&betacode='+betacode+
'&wow_password='+wow_password,
success: function (data) {
if(data.status){ // reload -> user will be loged in
window.location.href = location.href.replace(/#/g, "");
}else{ // show errors
alert('Not successfull: '+data.result.message);
}
}
});
}
});
}

View File

@ -1,59 +1,65 @@
<div style="padding: 30px; padding-left: 50px; margin-top: 5px; margin-left: 250px; background: url(${BG}pergament_big.png); background-size: 60% 100%; background-repeat:no-repeat;">
<div class="lifecraft" padding-right: 10px;">
<h3>${register_title}</h3>
<form class="textbox" style="padding:10px" id="login_form">
<h3>Register 'ur Mojotrollz Account</h3>
<h5>and create your Character</h5>
<form class="textbox" style="padding:10px" id="register_form">
<div class="control-group">
<div class="controls">
<input type="text"
size="30"
style="margin-bottom: 10px;"
id="bt_login_user"
placeholder="${register_username}"
minlength="3" data-validation-minlength-message="${register_username_too_short}"
maxlength="16" data-validation-maxlength-message="${register_username_too_long}"
required data-validation-required-message="${register_username_required}"/>
id="register_username"
placeholder="${basic_username}"
minlength="3" data-validation-minlength-message="${sai_error_username_short}"
maxlength="16" data-validation-maxlength-message="${sai_error_username_long}"
required data-validation-required-message="${sai_error_username_miss}"/>
</div>
<div class="controls">
<input type="text"
size="30"
style="margin-bottom: 15px;"
id="bt_login_user"
placeholder="${register_email}"
minlength="3" data-validation-minlength-message="${register_username_too_short}"
maxlength="16" data-validation-maxlength-message="${register_username_too_long}"
required data-validation-required-message="${register_email_required}"/>
id="register_email"
placeholder="${basic_email}"
data-validation-email-message="${sai_error_email_wrong}"
required data-validation-required-message="${sai_error_email_miss}"/>
</div>
<div class="controls">
<input type="password"
size="30"
style="margin-bottom: 10px;"
id="bt_register_password"
placeholder="${register_password}"
minlength="5" data-validation-minlength-message="${register_password_too_short}"
maxlength="16" data-validation-maxlength-message="${register_password_too_long}"
required data-validation-required-message="${register_password_required}"/>
</div>
<div class="controls">
<input type="password"
size="30"
style="margin-bottom: 10px;"
id="bt_register_password"
placeholder="${register_password_repeat}"
minlength="5" data-validation-minlength-message="${register_password_too_short}"
maxlength="16" data-validation-maxlength-message="${register_password_too_long}"
required data-validation-required-message="${register_password_required}"/>
<div class="control-group" id="change_user_password">
<div class="control-group controls" style="clear: both">
<input type="password"
size="30"
style="margin-bottom: 15px; float: left;"
id="register_password1"
name="register_password1"
placeholder="${basic_password}"
minlength="5" data-validation-minlength-message="${sai_error_password_short}"
required data-validation-required-message="${sai_error_password_miss}"/>
<br/>
</div>
<div class="control-group controls" style="clear: both">
<input type="password"
size="30"
style="margin-bottom: 15px; float: left;"
id="register_password2"
name="register_password2"
placeholder="${basic_password}"
data-validation-matches-match="register_password1"
data-validation-matches-message="${sai_error_password_match}"/>
<br/>
</div>
</div>
<div class="controls">
<div class="control-group controls" style="clear: both">
<input type="text"
size="30"
style="margin-bottom: 10px;"
id="bt_register_password"
placeholder="${register_beta_code}"
minlength="5" data-validation-minlength-message="${register_beta_code_too_short}"
maxlength="16" data-validation-maxlength-message="${register_beta_code_too_long}"
required data-validation-required-message="${register_beta_code_required}"/>
id="register_betacode"
placeholder="BetaCode"
minlength="12" data-validation-minlength-message="Incorrect Beta Code!"
maxlength="12" data-validation-maxlength-message="Incorrect Beta Code!"
required data-validation-required-message="A Beta Code is required!"/>
</div>
<div id="register" style=""><a href="#"><img src="${BUTTONS}register.png"/></a></div>
<div class="help-block" style="float: left; margin-top: 3px;"></div>
<div style="clear: both;"></div>
<button id="register" type="submit" style="width: 320px; height: 60px; border: 0; background: url(${BUTTONS}register.png) no-repeat;"></button>
</div>
</form>
</div>

View File

@ -11,7 +11,8 @@ class wizard_register extends SYSTEM\PAGE\Page {
$vars['BG'] = \SYSTEM\FILES\files::getURL('backgrounds');
$vars['BUTTONS'] = \SYSTEM\FILES\files::getURL('buttons');
$vars['WOWICONS'] = \SYSTEM\FILES\files::getURL('wowicons');
$vars = array_merge($vars, \SYSTEM\locale::getStrings(DBD\locale_string::VALUE_CATEGORY_MAINPAGE));
$vars = array_merge($vars, \SYSTEM\locale::getStrings(DBD\locale_string::VALUE_CATEGORY_BASIC));
$vars = array_merge($vars, \SYSTEM\locale::getStrings(DBD\locale_string::VALUE_CATEGORY_SYSTEM_SAI_ERROR));
$vars = array_merge($vars, \SYSTEM\locale::getStrings(DBD\locale_string::VALUE_CATEGORY_WOW_INFOTEXT));
return SYSTEM\PAGE\replace::replaceFile(SYSTEM\SERVERPATH(new PPAGE(),'wizard_register/tpl/register.tpl'), $vars);
}

View File

@ -0,0 +1,12 @@
<?php
namespace DBD;
class BETA_CHECK_CODE extends \SYSTEM\DB\QP {
protected static function query(){
return new \SYSTEM\DB\QQuery(get_class(),
//pg
'',
//mys
'SELECT COUNT(*) as count FROM mojotrollz_beta WHERE code = ? AND user_new IS NULL'
);}}

View File

@ -0,0 +1,12 @@
<?php
namespace DBD;
class BETA_USE_CODE extends \SYSTEM\DB\QP {
protected static function query(){
return new \SYSTEM\DB\QQuery(get_class(),
//pg
'',
//mys
'UPDATE mojotrollz_beta SET user_new = ? WHERE code = ?;'
);}}

View File

@ -1,5 +1,11 @@
<?php
class saimod_mojotrollz_beta extends \SYSTEM\SAI\SaiModule {
public static function code_check($code){
return \DBD\BETA_CHECK_CODE::Q1(array($code))['count'] >= 0 ? true : false;}
public static function code_use($code,$user_new){
return \DBD\BETA_USE_CODE::QI(array($user_new,$code));}
public static function sai_mod_saimod_mojotrollz_beta_action_del($code){
\DBD\BETA_DELETE_CODE::QI(array($code));
return JsonResult::ok();}

2
system

@ -1 +1 @@
Subproject commit 076090ea1ae37cea7cf900062aeec2848d8e133f
Subproject commit 5c04bb515f72edb46127eefca01e32c07de908bd