* @since Version 2.0 */ class sysUsersManager { public $DIR; public $uriData; public $controller; /** * Class constructor */ public function __construct($uriData) { $this->uriData = $uriData; $this->DIR = __DIR__ ? __DIR__ : dirname(__FILE__); $this->controller = new sysUsersManagerController($this->uriData, $this->DIR, basename($this->DIR)); } /** * Default function to run * Skip if other callback defined */ public function run() { $action = getV('action'); if($action){ switch ($action){ case 'edit': // Quick load by id in get url $this->controller->run(true); break; case 'filter_table': cJSON::sendOk($this->controller->createCmsTable(getP('page'), getP('filter'), getP('headers'))); break; case 'selfLoad': cJSON::sendOk($this->controller->loadUserDataById(getV('id'))); break; case 'selfSave': if(getV('id')) { if($this->controller->oUser->chkPermission('SYS_USER_EDIT', false, false)) cJSON::sendOk($this->controller->saveUserDataById(getV('id'), getV('fields'))); else cJSON::sendError(); }else{ if($this->controller->oUser->chkPermission('SYS_USER_ADD_NEW', false, false)) cJSON::sendOk($this->controller->saveUserDataById(getV('id'), getV('fields'))); else cJSON::sendError(); } break; case 'deleteRecords': if($this->controller->oUser->chkPermission('SYS_USER_DELETE')){ cJSON::sendOk($this->controller->delete(getP('fields'))); } break; case 'changeRecordsStatus': if($this->controller->oUser->chkPermission('SYS_USER_EDIT')){ cJSON::sendOk($this->controller->changeEnumFields(getP('baseField'), getP('fields'))); } break; case 'tablescfg': cJSON::sendOk($this->controller->createTablesConfigForm(getV('id'))); break; case 'portletscfg': cJSON::sendOk($this->controller->createPortletConfigForm(getV('id'))); break; case 'gen2FA-QRCode': cJSON::sendOk($this->controller->generate2FAQRCode(getP('data'))); break; case 'genRandomPwd': cJSON::sendOk($this->controller->genTempPWD()); break; default: $this->controller->run(); break; } }else{ $this->controller->run(); } } /** * Edit my account data */ public function userProfileAction() { $action = getV('action'); $this->controller->bIsUserProfile = true; $this->controller->oView->DISABLE_LEFT_MENU = true; if($action){ switch ($action) { case 'selfLoad': cJSON::sendOk($this->controller->loadUserDataById()); break; case 'selfSave': cJSON::sendOk($this->controller->saveUserDataById(getV('id'), getV('fields'))); break; case 'tablescfg': cJSON::sendOk($this->controller->createTablesConfigForm($this->controller->oUser->iUserId)); break; case 'portletscfg': cJSON::sendOk($this->controller->createPortletConfigForm($this->controller->oUser->iUserId)); break; case 'propsave': cJSON::sendOk($this->controller->saveProfileCfgProp(cJSON::decode(getP('prop'), true))); break; case 'activate-2FA': cJSON::sendOk($this->controller->set2FAQRCode(getV('secret'), getV('code'))); break; case 'deactivate-2FA': cJSON::sendOk($this->controller->unset2FA(getV('code'))); break; case 'get2FA-QRCode': cJSON::sendOk($this->controller->get2FAQRCodeForm(getV('reload'))); break; case 'get2FA-4Deactivate': cJSON::sendOk($this->controller->get2FAUnsetForm()); break; default: $this->controller->setMyProfileForm(true); break; } }else{ $this->controller->setMyProfileForm(true); } } }