alliance/corp maps. build process optimization, new/edit map dialog fixes
This commit is contained in:
@@ -26,14 +26,7 @@ class User extends Controller\Controller{
|
||||
if($data['loginData']){
|
||||
$loginData = $data['loginData'];
|
||||
|
||||
|
||||
// try to verify user
|
||||
$user = $this->_verifyUser($loginData['userName'], $loginData['userPassword']);
|
||||
|
||||
if($user !== false){
|
||||
// user is verified -> ready for login
|
||||
$loginSuccess = $this->_logIn($user);
|
||||
}
|
||||
$loginSuccess = $this->logUserIn( $loginData['userName'], $loginData['userPassword'] );
|
||||
}
|
||||
|
||||
// set "vague" error
|
||||
@@ -51,6 +44,26 @@ class User extends Controller\Controller{
|
||||
echo json_encode($return);
|
||||
}
|
||||
|
||||
/**
|
||||
* core function for user login
|
||||
* @param $userName
|
||||
* @param $password
|
||||
* @return bool
|
||||
*/
|
||||
private function logUserIn($userName, $password){
|
||||
$loginSuccess = false;
|
||||
|
||||
// try to verify user
|
||||
$user = $this->_verifyUser($userName, $password);
|
||||
|
||||
if($user !== false){
|
||||
// user is verified -> ready for login
|
||||
$loginSuccess = $this->_logIn($user);
|
||||
}
|
||||
|
||||
return $loginSuccess;
|
||||
}
|
||||
|
||||
/**
|
||||
* get captcha image and store key to session
|
||||
* @param $f3
|
||||
@@ -80,136 +93,188 @@ class User extends Controller\Controller{
|
||||
$data = $f3->get('POST');
|
||||
|
||||
$return = new \stdClass();
|
||||
$return->error = [];
|
||||
|
||||
$captcha = $f3->get('SESSION.captcha_code');
|
||||
|
||||
// reset captcha -> forces user to enter new one
|
||||
$f3->clear('SESSION.captcha_code');
|
||||
|
||||
$newUserData = null;
|
||||
|
||||
// check user if if he is new
|
||||
$loginAfterSave = false;
|
||||
|
||||
if($data['settingsData']){
|
||||
$settingsData = $data['settingsData'];
|
||||
|
||||
$user = $this->_getUser();
|
||||
|
||||
if($user === false){
|
||||
// new user registration
|
||||
$user = $mapType = Model\BasicModel::getNew('UserModel');
|
||||
}
|
||||
|
||||
// change/set email
|
||||
// captcha is send -> check captcha
|
||||
if(
|
||||
array_key_exists('email', $settingsData) &&
|
||||
array_key_exists('email_confirm', $settingsData) &&
|
||||
!empty($settingsData['email']) &&
|
||||
!empty($settingsData['email_confirm']) &&
|
||||
$settingsData['email'] == $settingsData['email_confirm']
|
||||
){
|
||||
$user->email = $settingsData['email'];
|
||||
}
|
||||
|
||||
// change/set password
|
||||
if(
|
||||
array_key_exists('password', $settingsData) &&
|
||||
array_key_exists('password_confirm', $settingsData) &&
|
||||
!empty($settingsData['password']) &&
|
||||
!empty($settingsData['password_confirm']) &&
|
||||
$settingsData['password'] == $settingsData['password_confirm']
|
||||
){
|
||||
$user->password = $settingsData['password'];
|
||||
}
|
||||
|
||||
// save API data
|
||||
if(
|
||||
array_key_exists('keyId', $settingsData) &&
|
||||
array_key_exists('vCode', $settingsData) &&
|
||||
is_array($settingsData['keyId']) &&
|
||||
is_array($settingsData['vCode'])
|
||||
array_key_exists('captcha', $settingsData) &&
|
||||
!empty($settingsData['captcha'])
|
||||
){
|
||||
|
||||
// get all existing API models for this user
|
||||
$apiModels = $user->getAPIs();
|
||||
|
||||
foreach($settingsData['keyId'] as $i => $keyId){
|
||||
if($settingsData['captcha'] === $captcha){
|
||||
// change/set sensitive user data requires captcha!
|
||||
|
||||
$api = null;
|
||||
$userCharacters = [];
|
||||
if($user === false){
|
||||
// new user registration
|
||||
$user = $mapType = Model\BasicModel::getNew('UserModel');
|
||||
|
||||
// search for existing API model
|
||||
foreach($apiModels as $key => $apiModel){
|
||||
if($apiModel->keyId == $keyId){
|
||||
$api = $apiModel;
|
||||
// get existing characters in case api model already exists
|
||||
$userCharacters = $api->getUserCharacters();
|
||||
$loginAfterSave = true;
|
||||
|
||||
unset($apiModels[$key]);
|
||||
break;
|
||||
// set username
|
||||
if(
|
||||
array_key_exists('name', $settingsData) &&
|
||||
!empty($settingsData['name'])
|
||||
){
|
||||
$user->name = $settingsData['name'];
|
||||
}
|
||||
}
|
||||
|
||||
if(is_null($api)){
|
||||
// new API Key
|
||||
$api = Model\BasicModel::getNew('UserApiModel');
|
||||
// change/set email
|
||||
if(
|
||||
array_key_exists('email', $settingsData) &&
|
||||
array_key_exists('email_confirm', $settingsData) &&
|
||||
!empty($settingsData['email']) &&
|
||||
!empty($settingsData['email_confirm']) &&
|
||||
$settingsData['email'] == $settingsData['email_confirm']
|
||||
){
|
||||
$user->email = $settingsData['email'];
|
||||
}
|
||||
|
||||
$api->userId = $user;
|
||||
$api->keyId = $keyId;
|
||||
$api->vCode = $settingsData['vCode'][$i];
|
||||
// change/set password
|
||||
if(
|
||||
array_key_exists('password', $settingsData) &&
|
||||
array_key_exists('password_confirm', $settingsData) &&
|
||||
!empty($settingsData['password']) &&
|
||||
!empty($settingsData['password_confirm']) &&
|
||||
$settingsData['password'] == $settingsData['password_confirm']
|
||||
){
|
||||
$user->password = $settingsData['password'];
|
||||
}
|
||||
}else{
|
||||
// captcha was send but not valid -> return error
|
||||
$captchaError = new \stdClass();
|
||||
$captchaError->type = 'error';
|
||||
$captchaError->message = 'Captcha does not match';
|
||||
$return->error[] = $captchaError;
|
||||
}
|
||||
}
|
||||
|
||||
// check each API Model if valid
|
||||
$newUserCharacters = $api->requestCharacters();
|
||||
// saving additional user info requires valid user object (no captcha required)
|
||||
if($user){
|
||||
|
||||
if(empty($newUserCharacters)){
|
||||
// no characters found
|
||||
$return->error = [];
|
||||
$characterError = new \stdClass();
|
||||
$characterError->type = 'api';
|
||||
$characterError->keyId = $api->keyId;
|
||||
$characterError->vCode = $api->vCode;
|
||||
$characterError->message = 'No characters found';
|
||||
$return->error[] = $characterError;
|
||||
}else{
|
||||
$api->save();
|
||||
// find existing character
|
||||
foreach($newUserCharacters as $newUserCharacter){
|
||||
// save API data
|
||||
if(
|
||||
array_key_exists('keyId', $settingsData) &&
|
||||
array_key_exists('vCode', $settingsData) &&
|
||||
is_array($settingsData['keyId']) &&
|
||||
is_array($settingsData['vCode'])
|
||||
){
|
||||
|
||||
$matchedUserCharacter = $newUserCharacter;
|
||||
// get all existing API models for this user
|
||||
$apiModels = $user->getAPIs();
|
||||
|
||||
foreach($userCharacters as $key => $userCharacter){
|
||||
if($userCharacter->characterId == $newUserCharacter->characterId){
|
||||
$matchedUserCharacter = $userCharacter;
|
||||
unset($userCharacters[$key]);
|
||||
break;
|
||||
}
|
||||
foreach($settingsData['keyId'] as $i => $keyId){
|
||||
|
||||
$api = null;
|
||||
$userCharacters = [];
|
||||
|
||||
// search for existing API model
|
||||
foreach($apiModels as $key => $apiModel){
|
||||
if($apiModel->keyId == $keyId){
|
||||
$api = $apiModel;
|
||||
// get existing characters in case api model already exists
|
||||
$userCharacters = $api->getUserCharacters();
|
||||
|
||||
unset($apiModels[$key]);
|
||||
break;
|
||||
}
|
||||
|
||||
$matchedUserCharacter->apiId = $api;
|
||||
$matchedUserCharacter->userId = $user;
|
||||
|
||||
$matchedUserCharacter->save();
|
||||
}
|
||||
|
||||
if(is_null($api)){
|
||||
// new API Key
|
||||
$api = Model\BasicModel::getNew('UserApiModel');
|
||||
}
|
||||
|
||||
$api->userId = $user;
|
||||
$api->keyId = $keyId;
|
||||
$api->vCode = $settingsData['vCode'][$i];
|
||||
|
||||
// check each API Model if valid
|
||||
$newUserCharacters = $api->requestCharacters();
|
||||
|
||||
if(empty($newUserCharacters)){
|
||||
// no characters found -> return warning
|
||||
$characterError = new \stdClass();
|
||||
$characterError->type = 'warning';
|
||||
$characterError->keyId = $api->keyId;
|
||||
$characterError->vCode = $api->vCode;
|
||||
$characterError->message = 'No characters found';
|
||||
$return->error[] = $characterError;
|
||||
}else{
|
||||
$api->save();
|
||||
// find existing character
|
||||
foreach($newUserCharacters as $newUserCharacter){
|
||||
|
||||
$matchedUserCharacter = $newUserCharacter;
|
||||
|
||||
foreach($userCharacters as $key => $userCharacter){
|
||||
if($userCharacter->characterId == $newUserCharacter->characterId){
|
||||
$matchedUserCharacter = $userCharacter;
|
||||
unset($userCharacters[$key]);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
$matchedUserCharacter->apiId = $api;
|
||||
$matchedUserCharacter->userId = $user;
|
||||
|
||||
$matchedUserCharacter->save();
|
||||
}
|
||||
}
|
||||
|
||||
// delete characters that are no longer in this API
|
||||
foreach($userCharacters as $userCharacter){
|
||||
print_r('delete Character: ' . $userCharacter->id);
|
||||
}
|
||||
}
|
||||
|
||||
// delete characters that are no longer in this API
|
||||
foreach($userCharacters as $userCharacter){
|
||||
print_r('delete Character: ' . $userCharacter->id);
|
||||
// delete API models that no longer exists
|
||||
foreach($apiModels as $apiModel){
|
||||
$apiModel->delete();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// delete API models that no longer exists
|
||||
foreach($apiModels as $apiModel){
|
||||
$apiModel->delete();
|
||||
|
||||
// set main character
|
||||
if( array_key_exists('mainCharacterId', $settingsData) ){
|
||||
$user->setMainCharacterId((int)$settingsData['mainCharacterId']);
|
||||
}
|
||||
}
|
||||
|
||||
// set main character
|
||||
if(
|
||||
array_key_exists('mainCharacterId', $settingsData)
|
||||
){
|
||||
$user->setMainCharacterId((int)$settingsData['mainCharacterId']);
|
||||
}
|
||||
|
||||
// save user model
|
||||
$user->save();
|
||||
// save/update user model
|
||||
// this will fail if model validation fails!
|
||||
$user->save();
|
||||
|
||||
// log user in (in case he is new
|
||||
if($loginAfterSave){
|
||||
$this->logUserIn( $user->name, $settingsData['password'] );
|
||||
|
||||
// return reroute path
|
||||
$return->reroute = $this->f3->get('BASE') . $this->f3->alias('map');
|
||||
}
|
||||
|
||||
$newUserData = $user->getData();
|
||||
|
||||
}
|
||||
|
||||
// return new/updated user data
|
||||
$return->userData = $user->getData();
|
||||
|
||||
$return->userData = $newUserData;
|
||||
|
||||
}
|
||||
echo json_encode($return);
|
||||
|
||||
Reference in New Issue
Block a user