Esempio n. 1
0
 /**
  * ユーザマスタの保存が成功したかJSON形式で返す
  * @access public
  * @see Admin_ActionClass::perform()
  */
 function perform()
 {
     // get request params
     $user_id_arr = $this->af->get('user_id_arr');
     // get session params
     $s_user_id = $this->session->get('user_id');
     $company_id = $this->session->get('company_id');
     // dao
     $userDao = DaoFactory::UserMst();
     try {
         // begin
         $userDao->BeginTransaction();
         if ($_REQUEST['del'] == 'all') {
             $userDao->Delete(' company_id = ? AND user_id <> ? ', array($company_id, $s_user_id));
         } else {
             foreach ($user_id_arr as $user_id) {
                 $userDao->Delete('company_id = ? AND user_id = ? ', array($company_id, $user_id));
             }
         }
         // commit
         $userDao->CommitTransaction();
     } catch (Exception $e) {
         // rollback
         $userDao->AbortTransaction();
         $this->logger->log(LOG_DEBUG, $e->getTraceAsString());
         return array(500, $e->getMessage());
     }
     exit;
 }
Esempio n. 2
0
 function authenticate()
 {
     $this->af->setApp('app_name', $this->config->get('app_name'));
     // ログインチェック
     $login = new LoginController();
     if (!$login->isLogin()) {
         return 'login';
     }
     // パスワード期限チェック
     $company_id = $this->session->get('company_id');
     $user_id = $this->session->get('user_id');
     $params = array('company_id' => $company_id, 'user_id' => $user_id);
     if (DaoFactory::UserMst()->isExpiredPassword($params)) {
         return 'password_list';
     }
     // get params
     $kengen_flg = intval($this->session->get('kengen_flg'));
     // 権限取得
     // 権限フラグチェック
     if ($kengen_flg != Konst::KENGEN_FLG_KANRI && $kengen_flg != Konst::KENGEN_FLG_SUPER) {
         // 管理者ユーザ(8)、スーパーユーザ(9)以外であれば弾く
         $login->Logout();
         return 'login';
     }
     $locale = $this->session->get('current_locale');
     if ($locale) {
         $this->backend->getController()->setLocale($locale);
     }
     $this->setGuideModal();
     $this->checkLicense();
     return null;
 }
Esempio n. 3
0
 /**
  * ユーザアンロックが成功したかJSON形式で返す
  * @access public
  * @see Admin_ActionClass::perform()
  */
 function perform()
 {
     // get request params
     $user_id_arr = $this->af->get('user_id_arr');
     // get session params
     $company_id = $this->session->get('company_id');
     $s_user_id = $this->session->get('user_id');
     // dao
     $userDao = DaoFactory::UserMst();
     try {
         // begin
         $userDao->BeginTransaction();
         foreach ($user_id_arr as $user_id) {
             // exists ( user_id )
             $exist = $userDao->Retrieve(' company_id = ? AND user_id = ?', array($company_id, $user_id));
             if (empty($exist)) {
                 $def1 = $this->af->getDef('user_id');
                 $err_msg = array('user_id' => "入力された" . $def1['name'] . "は登録されていません");
                 return array(400, $err_msg);
             }
             // set params
             $params = array('PWD_UNLOCK' => '', 'UID' => $s_user_id, 'PGM' => get_class());
             // dao insert
             $userDao->Update($params, ' company_id = ? AND user_id = ? ', array($company_id, $user_id));
         }
         // commit
         $userDao->CommitTransaction();
     } catch (Exception $e) {
         $userDao->AbortTransaction();
         $this->logger->log(LOG_DEBUG, $e->getTraceAsString());
         return array(500, $e->getMessage());
     }
     exit;
 }
Esempio n. 4
0
 function validateParams($params)
 {
     $error_message_list = array();
     // 現在のパスワード
     $UserMst = DaoFactory::UserMst();
     $userData = $UserMst->UserMst_GetByUserId($params);
     if ($params['current_pwd'] == '') {
         $error_message_list['current_pwd'] = '現在のパスワードが入力されていません。';
     } else {
         if ($userData['USER_PWD'] != $params['current_pwd_hash']) {
             $error_message_list['current_pwd'] = '現在のパスワードが正しくありません。';
         }
     }
     // 新しいパスワード
     if ($params['new_pwd1'] == '') {
         $error_message_list['new_pwd1'] = '新しいパスワードが入力されていません。';
     }
     // 新しいパスワード(確認用)
     if ($params['new_pwd2'] == '') {
         $error_message_list['new_pwd2'] = '新しいパスワード(確認用)が入力されていません。';
     }
     if ($params['new_pwd1'] != $params['new_pwd2']) {
         $error_message_list['new_pwd1'] = '二つの新しいパスワードの入力内容が異なっています。';
     }
     return $error_message_list;
 }
Esempio n. 5
0
 /**
  * ユーザマスタの保存が成功したかJSON形式で返す
  * @access public
  * @see Admin_ActionClass::perform()
  */
 function perform()
 {
     // get request params
     $user_id = $this->af->get('user_id');
     $login_id = $this->af->get('login_id');
     $user_name = $this->af->get('user_name');
     $e_mail = $this->af->get('e_mail');
     $role_id = $this->af->get('role_id');
     $default_locale = $this->af->get('default_locale');
     // get session params
     $company_id = $this->session->get('company_id');
     $s_user_id = $this->session->get('user_id');
     // dao
     $userDao = DaoFactory::UserMst();
     $roleDao = DaoFactory::RoleMst();
     try {
         // begin
         $userDao->BeginTransaction();
         // exists ( user_id, login_id )
         $exist = $userDao->Retrieve(' company_id = ? AND user_id = ?', array($company_id, $user_id));
         if (empty($exist)) {
             $def1 = $this->af->getDef('user_id');
             $err_msg = array('user_id' => "入力された" . $def1['name'] . "は登録されていません");
             return array(400, $err_msg);
         }
         // 入力したログインIDとuser_idで引っ張ってきたログインIDを比較し、
         // 異なっていれば(変更しようとしていれば)login_idの一意チェックを行う
         if ($exist['LOGIN_ID'] !== $login_id) {
             // exists ( user_id, login_id )
             $wheresql = ' company_id = ? AND login_id = ? ';
             $bindarr = array($company_id, $login_id);
             $exist = $userDao->Retrieve($wheresql, $bindarr);
             if (!empty($exist)) {
                 $def = $this->af->getDef('login_id');
                 $err_msg = array('login_id' => "入力された" . $def['name'] . "は既に登録されています");
                 return array(400, $err_msg);
             }
         }
         // exists ( role_id )
         $exist = $roleDao->Retrieve(' company_id = ? AND role_id = ?  ', array($company_id, $role_id));
         if (empty($exist)) {
             $def1 = $this->af->getDef('role_id');
             $err_msg = array('role_id' => "入力された" . $def1['name'] . "は登録されていません");
             return array(400, $err_msg);
         }
         // set params
         $params = array('login_id' => $login_id, 'user_name' => $user_name, 'e_mail' => $e_mail, 'role_id' => $role_id, 'default_locale' => $default_locale, 'UID' => $s_user_id, 'PGM' => get_class());
         // dao update
         $userDao->Update($params, ' company_id = ? AND user_id = ? ', array($company_id, $user_id));
         // commit
         $userDao->CommitTransaction();
     } catch (Exception $e) {
         // rollback
         $userDao->AbortTransaction();
         $this->logger->log(LOG_DEBUG, $e->getTraceAsString());
         return array(500, $e->getMessage());
     }
     exit;
 }
Esempio n. 6
0
 /**
  * ユーザマスタの保存が成功したかJSON形式で返す
  * @access public
  * @see Admin_ActionClass::perform()
  */
 function perform()
 {
     // get request params
     $login_id = $this->af->get('login_id');
     $user_name = $this->af->get('user_name');
     $warehouse_id = $this->af->get('warehouse_id');
     $e_mail = $this->af->get('e_mail');
     $pwd_settei = $this->af->get('pwd_settei');
     $default_locale = $this->af->get('default_locale');
     $raw_user_pwd = Util::makeRandomPassword();
     //パスワード生成
     $user_pwd = $pwd_settei == 1 ? md5($raw_user_pwd) : '';
     // pwd_settei が 1 であれば、ランダムな文字を生成してパスワードとする。
     $role_id = $this->af->get('role_id');
     // get session params
     $company_id = $this->session->get('company_id');
     $s_user_id = $this->session->get('user_id');
     $kengen_flg = $this->session->get('kengen_flg');
     // dao
     $userDao = DaoFactory::UserMst();
     $roleDao = DaoFactory::RoleMst();
     try {
         // begin
         $userDao->BeginTransaction();
         // FIXME: このへんのトランザクション内存在チェック処理、共通化できればもう少しスッキリする… @ 2012/05/01 myoshii@asx.co.jp
         // exists ( user_id, login_id )
         $wheresql = ' company_id = ? AND login_id = ? ';
         $bindarr = array($company_id, $login_id);
         $exist = $userDao->Retrieve($wheresql, $bindarr);
         if (!empty($exist)) {
             $def = $this->af->getDef('login_id');
             $err_msg = array('login_id' => "入力された" . $def['name'] . "は既に登録されています");
             return array(400, $err_msg);
         }
         // exists ( role_id )
         $exist = $roleDao->Retrieve(' company_id = ? AND role_id = ?  ', array($company_id, $role_id));
         if (empty($exist)) {
             $def1 = $this->af->getDef('role_id');
             $err_msg = array('role_id' => "入力された" . $def1['name'] . "は登録されていません");
             return array(400, $err_msg);
         }
         // set params
         $params = array('login_id' => $login_id, 'user_name' => $user_name, 'warehouse_id' => $warehouse_id, 'e_mail' => $e_mail, 'kengen_flg' => $kengen_flg, 'user_pwd' => $user_pwd, 'company_id' => $company_id, 'role_id' => $role_id, 'default_locale' => $default_locale, 'upd_uid' => $s_user_id, 'crt_uid' => $s_user_id, 'upd_pgm' => get_class(), 'crt_pgm' => get_class());
         // dao insert
         $userDao->UserMst_Insert($params);
         // commit
         $userDao->CommitTransaction();
         if ($pwd_settei == 1) {
             $params = array('login_id' => $login_id, 'user_name' => $user_name, 'email' => $e_mail, 'user_pwd' => $raw_user_pwd, 'url' => $this->config->get('url'), 'current_locale' => $default_locale);
             Util::sendPasswordMail($params);
         }
     } catch (Exception $e) {
         $userDao->AbortTransaction();
         $this->logger->log(LOG_DEBUG, $e->getTraceAsString());
         return array(500, $e->getMessage());
     }
     exit;
 }
 function authenticate()
 {
     $this->af->setApp('app_name', $this->config->get('app_name'));
     // ログインチェック
     $login = new LoginController();
     if (!$login->isLogin()) {
         return 'login';
     }
     // パスワード期限チェック
     $company_id = $this->session->get('company_id');
     $user_id = $this->session->get('user_id');
     $params = array('company_id' => $company_id, 'user_id' => $user_id);
     if (DaoFactory::UserMst()->isExpiredPassword($params)) {
         return 'password_list';
     }
     // get params
     $action = $this->backend->ctl->getCurrentActionName();
     // アクション名を取得
     $kengen_flg = intval($this->session->get('kengen_flg'));
     // 権限取得
     $company_id = $this->session->get('company_id');
     // 会社CD取得
     $role_id = $this->session->get('role_id');
     // ロールID取得
     // 権限フラグチェック
     if ($kengen_flg != Konst::KENGEN_FLG_KANRI && $kengen_flg != Konst::KENGEN_FLG_SUPER) {
         // 管理者ユーザ(8)、スーパーユーザ(9)以外であれば弾く
         $login->Logout();
         return 'login';
     }
     // スーパーユーザはロール権限のチェックを行わない
     if ($kengen_flg != Konst::KENGEN_FLG_SUPER) {
         // ロールD と ActionName を比較して有効であれば通す
         $params = array('company_id' => $company_id, 'role_id' => $role_id, 'action_name' => $action);
         $enable = DaoFactory::MenuRoleD()->getCheckEnableRole($params)->fetch();
         if (empty($enable)) {
             return array('redirect', '?action_error=true');
         }
     }
     // パンくず
     // アクション名からメニューを取得
     $params = array('company_id' => $company_id, 'action_name' => $action);
     $current = DaoFactory::MenuRoleD()->getMenuByActionName($params)->fetch();
     // 取得したメニューから親メニューを取得
     $params = array('company_id' => $company_id, 'menu_id' => $current['PARENT_ID']);
     $parent = DaoFactory::MenuRoleD()->getParentMenuByMenuId($params)->fetch();
     $this->af->setApp('crumbs_root', array_change_key_case((array) $parent));
     $this->af->setApp('crumbs_parent', array_change_key_case((array) $current));
     $locale = $this->session->get('current_locale');
     if ($locale) {
         $this->backend->getController()->setLocale($locale);
     }
     $this->setGuideModal();
     $this->checkLicense();
     return null;
 }
Esempio n. 8
0
 /**
  * ログインIDがDBに登録されているかチェックする
  * @param string $name フォーム名
  */
 public function check_mail_not_exists($name)
 {
     $bind = array('mail' => $this->form_vars['mail']);
     // ログインIDを取得
     $dao = DaoFactory::UserMst();
     $result = $dao->Retrieve(' E_MAIL = ? ', $bind);
     if (empty($result)) {
         $this->ae->add($name, "入力された{form}が登録されていません", E_FORM_INVALIDCHAR);
     }
 }
Esempio n. 9
0
 /**
  * リクエストのログインIDがUpdate可能であることをチェックする。
  * @param string $name フォーム名
  */
 public function check_login_id_is_update($name)
 {
     // ユーザID、ログインIDを取得
     $params = array('company_id' => $this->backend->getSession()->get('company_id'), 'user_id' => $this->form_vars['user_id'], 'login_id' => $this->form_vars['login_id']);
     // リクエストした user_id 以外で login_id が存在する場合ことを確認
     $user = DaoFactory::UserMst()->Retrieve(' company_id = ? AND user_id != ? AND login_id = ? ', $params);
     // login_id が存在する場合
     if (!empty($user)) {
         $this->ae->add($name, "入力された{form}は既に登録されています", E_FORM_INVALIDCHAR);
     }
 }
Esempio n. 10
0
 /**
  * 
  * @see Ethna_ActionClass::perform()
  */
 function perform()
 {
     $days = $this->config->get('license_warning_days');
     try {
         $licenseDao = DaoFactory::LicenseMst();
         $userDao = DaoFactory::UserMst();
         $companyDao = DaoFactory::CompanyMst();
         sort($days, SORT_NUMERIC);
         $result = array();
         foreach ($days as $day) {
             $params = array('day' => $day);
             $res = $licenseDao->LicenseMST_GetLicenseValidDays($params)->fetchAll(PDO::FETCH_ASSOC);
             $result = array_merge($result, $res);
         }
         foreach ($result as $value) {
             $send_email[$value['COMPANY_ID']][] = array('TERMINAL_ID' => $value['TERMINAL_ID'], 'END_YMD' => $value['END_YMD']);
         }
         //send e-mail
         $headers = "From: {$this->config->get('admin_email_address')}";
         foreach ($send_email as $company => $arr) {
             $invalid_terminal_list = '';
             foreach ($arr as $key => $value) {
                 $invalid_terminal_list .= "\n{$value['TERMINAL_ID']}\t\t\t{$value['END_YMD']}";
             }
             //get admin user's e-mail address and language
             $companyInfo = $companyDao->Retrieve('COMPANY_ID = ?', array($company));
             //$companyInfo['CONTACT']
             $userInfo = $userDao->Retrieve("LOGIN_ID = 'admin' AND COMPANY_ID = ? ", array($company));
             //$userInfo['E_MAIL']
             //$userInfo['DEFAULT_LOCALE']  zh-Hans-CN en_US ja_JP
             if ($userInfo['DEFAULT_LOCALE'] == 'zh-Hans-CN') {
                 $this->backend->getController()->setLocale('zh-Hans-CN');
                 $subject = _et($this->config->get('system_name')) . "终端证书即将到期";
                 $send_message = "\n{$companyInfo['COMPANY_NAME']} \n{$companyInfo['CONTACT']} 您好!\n        \t\n非常感谢您使用我们的{$this->config->get('app_name')}服务。\n您的以下终端的证书即将过期,为了不影响业务请尽快到证书管理页面购买新的证书。\n\n终端\t\t\t到期日\n" . $invalid_terminal_list . "\n\n新的证书可以从后台管理系统的证书管理页面购买,也可以直接到AsShop购买。\n如有任何问题请随即和我们取得联系。\n\n服务总站 http://www.asx4.net\nAsWiki\t\thttps://wiki.asx4.net\nAsHelp \thttps://support.asx4.net\nAsShop\thttps://ec.asx4.net\n    \t\n";
             } elseif ($userInfo['DEFAULT_LOCALE'] == 'ja_JP') {
                 $this->backend->getController()->setLocale('ja_JP');
                 $subject = _et($this->config->get('system_name')) . "端末のライセンスの期限が近づいています";
                 $send_message = "\n{$companyInfo['COMPANY_NAME']} \n{$companyInfo['CONTACT']} 様\n        \t\n{$this->config->get('app_name')}をご利用いただきまして誠にありがとうございます。\n下記の端末のライセンスの期限が近づいています。業務に影響を与えないように早めに新しいライセンスをご購入ください。\n\n端末ID\t\t\t期限\n" . $invalid_terminal_list . "\n\nライセンスは管理画面のライセンスマスタ画面か、AsShopからご購入いただけます。\nご不明な点がございましたら、お問い合わせください。\n\nサービスホーム http://www.asx4.net\nAsWiki \t\t\t\thttps://wiki.asx4.net\nAsHelp \t\t\t\thttps://support.asx4.net\nAsShop  \t\t\t\thttps://ec.asx4.net    \n    \t\n";
             } else {
                 $this->backend->getController()->setLocale('en_US');
                 $subject = _et($this->config->get('system_name')) . " Terminal will be out of license soon";
                 $send_message = "\n{$companyInfo['COMPANY_NAME']} \nHi {$companyInfo['CONTACT']}\n        \t\nThanks for using our {$this->config->get('app_name')} service. \nThe following terminal will be out of license soon. Please buy new license as soon as possible.\n\nTerminal ID\t\t\tValid Until\n" . $invalid_terminal_list . "\n\nYou can buy new licenses from the LICENSE MANAGEMENT page in our admin system or buy form the AsShop directly.\nIf you have any question, please don't hesitate to contact us.\n\nService Home\t\thttp://www.asx4.net\nAsWiki \t\t\thttps://wiki.asx4.net\nAsHelp \t\t\thttps://support.asx4.net\nAsShop  \t\t\thttps://ec.asx4.net\n";
             }
             mb_send_mail($userInfo['E_MAIL'], $subject, $send_message, $headers);
         }
     } catch (Exception $e) {
         $this->logger->log(LOG_ERR, $e->getMessage());
         die($e->getMessage());
     }
 }
Esempio n. 11
0
 public function _setDefault(&$renderer)
 {
     // get session params
     $company_id = $this->session->get('company_id');
     $user_id = $this->session->get('user_id');
     $kengen_flg = $this->session->get('kengen_flg');
     // su?
     if ($kengen_flg == Konst::KENGEN_FLG_SUPER) {
         // get menu mst
         $top_menu = DaoFactory::MenuMst()->Select(' company_id = ? and parent_id is null ORDER BY MENU_ID ', array('company_id' => $company_id))->fetchAll();
         // get menu
         $global_menu = array();
         foreach ($top_menu as $menu) {
             $params = array('company_id' => $company_id, 'parent_id' => $menu['MENU_ID']);
             $child_menu = DaoFactory::MenuMst()->Select(' company_id = ? AND parent_id = ? ORDER BY MENU_ID ', $params)->fetchAll();
             if (!empty($child_menu)) {
                 $global_menu[$menu['MENU_ID']]['child_menu'] = $child_menu;
                 $global_menu[$menu['MENU_ID']]['top_menu_name'] = $menu['MENU_NAME'];
             }
         }
     } else {
         // get user
         $params = array('company_id' => $company_id, 'user_id' => $user_id);
         $user = DaoFactory::UserMst()->Retrieve(' company_id = ? and user_id = ? and del_flg = 0 ', $params);
         $user_role_id = $user['ROLE_ID'];
         // get menu mst
         $top_menu = DaoFactory::MenuMst()->Select(' company_id = ? and parent_id is null ORDER BY MENU_ID ', array('company_id' => $company_id))->fetchAll();
         // get menu
         $global_menu = array();
         foreach ($top_menu as $menu) {
             $params = array('company_id' => $company_id, 'role_id' => $user_role_id, 'parent_id' => $menu['MENU_ID']);
             $child_menu = DaoFactory::MenuRoleD()->getMenuRoleDAtParentIdByRoleIdAndParentId($params)->fetchAll();
             if (!empty($child_menu)) {
                 $global_menu[$menu['MENU_ID']]['child_menu'] = $child_menu;
                 $global_menu[$menu['MENU_ID']]['top_menu_name'] = $menu['MENU_NAME'];
             }
         }
     }
     // Renderer からテンプレートエンジンを取得
     $smarty =& $renderer->getEngine();
     $smarty->assign('global_menu', $global_menu);
 }
Esempio n. 12
0
 /**
  * ユーザのパスワードの再設定が成功したかJSON形式で返す
  * @access public
  * @see Admin_ActionClass::perform()
  */
 function perform()
 {
     // get request params
     $user_id_arr = $this->af->get('user_id_arr');
     // get session params
     $company_id = $this->session->get('company_id');
     $s_user_id = $this->session->get('user_id');
     // dao
     $userDao = DaoFactory::UserMst();
     try {
         // begin
         $userDao->BeginTransaction();
         // exists ( user_id )
         foreach ($user_id_arr as $user_id) {
             $user_pwd = Util::makeRandomPassword();
             $exist = $userDao->Retrieve(' company_id = ? AND user_id = ?', array($company_id, $user_id));
             if (empty($exist)) {
                 $def1 = $this->af->getDef('user_id');
                 $err_msg = array('user_id' => "入力された" . $def1['name'] . "は登録されていません");
                 return array(400, $err_msg);
             }
             // set params
             $params = array('user_pwd' => md5($user_pwd), 'company_id' => $company_id, 'user_id' => $user_id, 'upd_uid' => $s_user_id, 'upd_pgm' => get_class());
             // dao update
             $userDao->UserMst_PwdSaisettei($params);
             // get user
             $user = $userDao->Retrieve(' company_id = ? AND user_id = ? ', array($company_id, $user_id));
             // メールのパラメータをセット
             $params = array('login_id' => $user['LOGIN_ID'], 'user_name' => $user['USER_NAME'], 'email' => $user['E_MAIL'], 'user_pwd' => $user_pwd, 'url' => $this->config->get('url'));
             // メール送信 FIXME: 送信者が文字化けしている @ 2012/05/01 myoshii@asx.co.jp
             Util::sendPasswordMail($params);
         }
         // commit
         $userDao->CommitTransaction();
     } catch (Exception $e) {
         $userDao->AbortTransaction();
         $this->logger->log(LOG_DEBUG, $e->getTraceAsString());
         return array(500, $e->getMessage());
     }
     exit;
 }
Esempio n. 13
0
 /**
  * ユーザマスタのデータをJSON形式で返す
  * @access public
  * @return array ユーザマスタ
  * @see Admin_ActionClass::perform()
  */
 public function perform()
 {
     // get request params ( search )
     $login_id = $this->af->get('login_id');
     $user_name = $this->af->get('user_name');
     $email = $this->af->get('email');
     $misettei = $this->af->get('misettei');
     $kigengire = $this->af->get('kigengire');
     $locking = $this->af->get('locking');
     $role_id = $this->af->get('role_id');
     $keyword = $this->af->get('keyword');
     // get request params ( pager )
     $limit = $this->af->get('limit');
     $page = $this->af->get('page');
     $order = $this->af->get('order');
     $column = $this->af->get('column');
     // get session params
     $company_id = $this->session->get('company_id');
     $kengen_flg = $this->session->get('kengen_flg');
     // pager setting
     $start_page = ($page - 1) * $limit + 1;
     $end_page = ($page - 1) * $limit + $limit;
     try {
         $params = array('login_id' => $login_id, 'user_name' => $user_name, 'email' => $email, 'kengen' => $kengen_flg, 'misettei' => $misettei, 'kigengire' => $kigengire, 'locking' => $locking, 'role_id' => $role_id, 'keyword' => $keyword, 'order' => $order, 'column' => $column, 'company_id' => $company_id, 'start_page' => $start_page, 'end_page' => $end_page);
         // 一覧を取得
         $list = DaoFactory::UserMst()->UserMst_GetUser($params)->fetchAll();
         // ページ情報を設定
         $pager = array('result_page' => $page, 'result_start_num' => $start_page, 'result_end_num' => $end_page, 'result_all_count' => count($list) ? $list[0]['FOUND_ROWS'] : 0, 'result_get_count' => count($list), 'result_limit' => $limit);
         // output にセット
         $output['totalData'] = array();
         $output['listData'] = $list;
         $output['pagerData'] = $pager;
     } catch (Exception $e) {
         // 致命的なエラーが発生
         $this->logger->log(LOG_DEBUG, $e->getTraceAsString());
         return array('500', $e->getMessage());
     }
     return array('json', $output);
 }
Esempio n. 14
0
 /**
  * 担当マスタのデータをJSON形式で返す
  * @access public
  * @return array 担当マスタのデータを返す
  * @see Admin_ActionClass::perform()
  */
 public function perform()
 {
     // 初期化
     $company_id = $this->session->get('company_id');
     $not_user_id = $this->af->get('not_user_id');
     $limit = $this->af->get('limit');
     // default 50
     $page = $this->af->get('page');
     // default 1
     $order = $this->af->get('order');
     // default asc
     $column = $this->af->get('column');
     // default shop_cd
     $keyword = $this->af->get('keyword');
     // pager setting
     $start_page = ($page - 1) * $limit + 1;
     $end_page = ($page - 1) * $limit + $limit;
     $userGroup = DaoFactory::UserMst();
     if ($not_user_id != "") {
         $not_user_id = explode(',', urldecode($not_user_id));
     }
     try {
         // DAO パラメータ定義
         $params = array('company_id' => $company_id, 'not_user_id' => $not_user_id, 'limit' => $limit, 'page' => $page, 'order' => $order, 'column' => $column, 'keyword' => $keyword, 'start_page' => $start_page, 'end_page' => $end_page);
         // 一覧を取得
         $list = $userGroup->UserMst_GetAll($params)->fetchAll();
         // ページ情報を設定
         $pager = array('result_page' => $page, 'result_start_num' => $start_page, 'result_end_num' => $end_page, 'result_all_count' => count($list) ? $list[0]['FOUND_ROWS'] : 0, 'result_get_count' => count($list), 'result_limit' => $limit);
         // output にセット
         $output['totalData'] = array();
         $output['listData'] = $list;
         $output['pagerData'] = $pager;
     } catch (Exception $e) {
         // 致命的なエラーが発生
         return array('500', $e->getMessage());
     }
     return array('json', $output);
 }
Esempio n. 15
0
 /**
  * パスワードリセットの保存が成功したかJSON形式で返す
  * @access public
  * @see Admin_ActionClass::perform()
  */
 function perform()
 {
     // get request params
     $mail = $this->af->get('mail');
     try {
         $userDao = DaoFactory::UserMst();
         // begin
         $userDao->BeginTransaction();
         $params = array('mail' => $mail);
         $users = DaoFactory::UserMst()->UserMst_GetByEMail($params);
         if (!empty($users)) {
             $pwd = Util::makeRandomPassword();
             //パスワード生成
             $user_pwd = md5($pwd);
             $params = array('USER_PWD' => $user_pwd, 'PWD_MISMATCH' => '0', 'PWD_UNLOCK' => NULL, 'UID' => $user_id, 'PGM' => get_class());
             $userDao->Update($params, " E_MAIL = ?  ", array($mail));
             // commit
             $userDao->CommitTransaction();
             $companyarr = array();
             $namearr = array();
             $idarr = array();
             $current_locale = $users[0]['DEFAULT_LOCALE'];
             foreach ($users as $someone) {
                 $companyarr[$someone['COMPANY_ID']] = $someone['COMPANY_ID'];
                 $namearr[] = $someone['USER_NAME'];
                 $idarr[] = $someone['LOGIN_ID'];
             }
             $params = array('company_id' => implode(',', $companyarr), 'login_id' => implode(',', $idarr), 'email' => $mail, 'user_pwd' => $pwd, 'url' => $this->config->get('url'), 'user_name' => implode(',', $namearr), 'current_locale' => $current_locale);
             Util::sendPasswordMail($params);
             //return 'login';
         }
     } catch (Exception $e) {
         $userDao->AbortTransaction();
         $this->logger->log(LOG_DEBUG, $e->getTraceAsString());
         return array(500, $e->getMessage());
     }
     exit;
 }
Esempio n. 16
0
 /**
  * ユーザマスタのデータをJSON形式で返す
  * @access public
  * @return array ユーザマスタ
  * @see Admin_ActionClass::perform()
  */
 public function perform()
 {
     // get request params ( search )
     $user_id = $this->af->get('user_id');
     // get session params
     $company_id = $this->session->get('company_id');
     try {
         // DAO パラメータ定義
         $params = array('company_id' => $company_id, 'user_id' => $user_id);
         // 詳細を取得
         $detail = DaoFactory::UserMst()->UserMst_GetByUserId($params);
         unset($detail['USER_PWD']);
         // パスワードは出力させない
         // output にセット
         $output['totalData'] = array();
         $output['listData'] = $detail;
         $output['pagerData'] = array();
     } catch (Exception $e) {
         // 致命的なエラーが発生
         $this->logger->log(LOG_DEBUG, $e->getTraceAsString());
         return array('500', $e->getMessage());
     }
     return array('json', $output);
 }
 public function Login($params)
 {
     if ($this->isLogin()) {
         $this->Logout();
     }
     // dao
     $UserMst = DaoFactory::UserMst();
     // スーパーユーザフラグ初期化
     $super_user_flg = false;
     // 指定したlogin_idのスーパーユーザを取得
     $super_user = $UserMst->Retrieve(' company_id  = ? and login_id = ? and kengen_flg = ? ', array('company_id' => '-', 'login_id' => $params['login_id'], 'kengen_flg' => Konst::KENGEN_FLG_SUPER));
     // 指定した login_id と password を取得したレコードで存在チェック
     if ($super_user['LOGIN_ID'] === $params['login_id'] && $super_user['USER_PWD'] === $params['password']) {
         // 指定の会社IDが存在することを確認
         $ret_kaisha = DaoFactory::CompanyMst()->Retrieve(' company_id = ? ', array('company_id' => $params['company_id']));
         // 存在しない場合はログインエラー
         if (!$ret_kaisha) {
             return LoginController::LOGIN_FAILED;
         }
         // スーパーユーザである
         $super_user_flg = true;
         // 後のログイン処理に乗せるために代入
         $userData = $super_user;
         // スーパーユーザの会社CDは意味の無いものなので、ログイン時に入力した値を用いる
         $su_company_id = $userData['COMPANY_ID'];
         $userData['COMPANY_ID'] = $params['company_id'];
     }
     // ユーパーユーザでなければ通常ログイン処理
     if ($super_user_flg === false) {
         // ユーザデータ取得
         $userData = $UserMst->UserMst_GetByLoginId($params);
         // レコードのチェック
         if (empty($userData)) {
             return LoginController::LOGIN_FAILED;
         }
         // ユーザーの存在チェック
         if ($userData['LOGIN_ID'] !== $params['login_id']) {
             return LoginController::LOGIN_FAILED;
         }
         // パスワードロック中でないかチェック
         if ($userData['PWD_LOCKING'] == 1) {
             return LoginController::LOGIN_LOCKING;
         }
         // パスワードが合っているかチェック
         if ($userData['USER_PWD'] !== $params['password']) {
             // パスワード誤入力時の処理
             $opt_params = array('company_id' => $userData['COMPANY_ID'], 'user_id' => $userData['USER_ID'], 'upd_uid' => $userData['USER_ID'], 'upd_pgm' => get_class());
             $UserMst->UserMst_PasswordMismatch($opt_params);
             if ($userData['PWD_MISMATCH'] == PWD_MISMATCH_NUM_TO_LOCK - 2) {
                 return LoginController::LOGIN_LOCK_WARNING;
             } else {
                 if ($userData['PWD_MISMATCH'] == PWD_MISMATCH_NUM_TO_LOCK - 1) {
                     return LoginController::LOGIN_JUSTNOW_LOCKED;
                 }
             }
             return LoginController::LOGIN_FAILED;
         }
         // ライセンスが有効期間内かチェック
         /*$wheresql = 'company_id = ? AND current_date BETWEEN start_date AND end_date';
           $params = array(
               'company_id' =>  $params['company_id'],
           );
           if (DaoFactory::LicenseD()->Retrieve($wheresql, $params) === false) {
                  // 有効期間外の場合
                  return LoginController::LOGIN_EXPIRE_LICENSE;
           }*/
     }
     // ログイン成功時の処理
     $opt_params = array('company_id' => $userData['COMPANY_ID'], 'user_id' => $userData['USER_ID'], 'upd_uid' => $userData['USER_ID'], 'upd_pgm' => get_class());
     $UserMst->UserMst_loginSuccess($opt_params);
     $this->session->start();
     $loginData = array('user' => $userData, 'session_time' => time());
     $this->session->set('loginData', serialize($loginData));
     $this->session->set('company_id', $userData['COMPANY_ID']);
     $this->session->set('user_id', $userData['USER_ID']);
     $this->session->set('kengen_flg', $userData['KENGEN_FLG']);
     $this->session->set('pwd_kigengire', $userData['PWD_KIGENGIRE']);
     $this->session->set('pwd_kigen_zan', $userData['PWD_KIGEN_ZAN']);
     $this->session->set('role_id', $userData['ROLE_ID']);
     if ($super_user_flg === true) {
         $this->session->set('su_company_id', $su_company_id);
     }
     return LoginController::LOGIN_SUCCESS;
 }
Esempio n. 18
0
 function perform()
 {
     //パラメータ取得
     $company_name = $this->af->get('company_name');
     $address = $this->af->get('address');
     $contact = $this->af->get('contact');
     $tel = $this->af->get('tel');
     $mail = $this->af->get('mail');
     $psw = $this->af->get('psw');
     $psw2 = $this->af->get('psw2');
     $uuid = $this->af->get('uuid');
     $locale = $this->af->get('locale');
     if ($locale == "zh-Hans") {
         $default_locale = "zh-Hans-CN";
     } elseif ($locale == "ja") {
         $default_locale = "ja_JP";
     } else {
         $default_locale = "en_US";
     }
     $params = array('company_name' => $company_name, 'address' => $address, 'contact' => $contact, 'company_tel' => $tel, 'mail' => $mail, 'UID' => 'terminal', 'PGM' => get_class());
     try {
         //fixme
         $dao = DaoFactory::CompanyMst();
         $wdao = DaoFactory::WarehouseMst();
         $tdao = DaoFactory::TerminalMst();
         $sdao = DaoFactory::StaffMst();
         $tudao = DaoFactory::TerminalUdidMst();
         $dao->BeginTransaction();
         $company_id = $dao->getNewCompanyId();
         $argu = array('company_id' => $company_id, 'example_id' => $this->config->get('template_company_id'), 'uuid' => $uuid, 'upd_uid' => 'terminal', 'upd_pgm' => get_class());
         $dao->addNewCompanyForApi($argu);
         $where = ' COMPANY_ID = ? ';
         $bind = array($company_id);
         $dao->Update($params, $where, $bind);
         $wdao->Update(array('address' => $address, 'warehouse_tel' => $tel, 'contact' => $contact, 'UID' => 'terminal', 'PGM' => get_class()), $where, $bind);
         $sdao->Update(array('staff_tel' => $tel, 'UID' => 'terminal', 'PGM' => get_class()), $where, $bind);
         $tdao->Update(array('password' => $psw, 'UID' => 'terminal', 'PGM' => get_class()), $where, $bind);
         $tudao->Update(array('terminal_id' => $terminal_id, 'udid' => $udid, 'UID' => 'terminal', 'PGM' => get_class()), $where, $bind);
         DaoFactory::UserMst()->Update(array('user_pwd' => $psw, 'UID' => 'terminal', 'PGM' => get_class(), 'E_MAIL' => $mail, 'DEFAULT_LOCALE' => $default_locale), $where, $bind);
         $warehouse_id = $wdao->getMaxWarehouseIdByCompany(array('company_id' => $company_id));
         $terminal_id = $tdao->getMaxTerminalIdByCompany(array('company_id' => $company_id));
         $staff_id = $sdao->getMaxStaffIdByCompany(array('company_id' => $company_id));
         //commit
         $dao->CommitTransaction();
     } catch (Exception $e) {
         // 致命的なエラーが発生
         $dao->AbortTransaction();
         $this->logger->log(LOG_DEBUG, $e->getTraceAsString());
         return array('500', $e->getMessage());
     }
     mb_language('uni');
     if ($locale == 'ja') {
         $subject = "{$this->config->get('system_name')}利用開始のご案内";
         $message = "\r\n{$company_name} \r\n{$contact} 様\r\n\r\nこの度は「{$this->config->get('system_name')}」サービスにご登録いただきまして、誠にありがとうございます。\r\n本メールは iPhone/iPod touch の {$this->config->get('app_name')}アプリからアカウント申請を行っていただいた方に自動送信されています。\r\n本メールの心当たりがない場合は、本メールの破棄と弊社までご連絡頂ますようお願い申し上げます。\r\n\r\nアカウント申請後は {$this->config->get('app_name')}アプリのログイン画面にて申請時に入力したパスワードでログインが可能です。\r\n新規でご登録していただいたアカウントには端末1台2ヶ月まで無料ご利用いただけます。\r\n別の端末でログインするには、管理画面から端末追加登録とライセンス購入する必要がございます。\r\nライセンスのご購入はライセンスマスタ管理画面の購入リンクを押すか、直接AsShopにて、オンラインにてご購入いただけます。\r\n\r\nアカウント申請に伴い {$this->config->get('system_name')}に下記の情報が登録されています。\r\n-----------------アカウント情報------------------\r\n\t   会社ID:{$company_id}\r\n  初期管理者ユーザID:admin\r\n  管理者パスワード:申請時ご入力いただいたパスワード (端末のログインパスワードも同じです)※セキュリティのためパスワード本メールに含んでいません\r\n  WEB管理画面URL: {$this->config->get('url')}?company_id={$company_id}\r\n  \r\n------------------デモ情報-------------------------\r\n**登録後すぐに端末からログインし、ご利用いただけるように、上記のアカウント情報以外に\r\n下記必要なデモデータも自動的に作成されています。\r\n  倉庫/場所/発注先 コード:{$warehouse_id}\r\n  端末ID:{$terminal_id}\r\n  担当者ID:{$staff_id}\r\n---------------------------------------------------\r\n\r\n本サービスはiPhone/iPod touch用バーコードリーダー「AsReader」を併用すると更に便利にご利用になれます。\r\n詳しくはホームページまで。\r\nhttp://asreader.com/\r\n\r\n本サービスご利用にあたり、質問などお困りの時がございましたら、下記のサイトまでご参照ください。\r\nサービスホーム http://www.asx4.net\r\nAsWiki https://wiki.asx4.net\r\nAsHelp https://support.asx4.net\r\nAsShop  https://ec.asx4.net\r\n\r\n ";
     } elseif ($locale == 'zh-Hans') {
         $subject = "{$this->config->get('app_name')}服务使用向导";
         $message = "\r\n{$company_name} \r\n{$contact} 您好!\r\n        \t\r\n非常感谢您登录{$this->config->get('app_name')}。\r\n这封邮件是在您通过iPhone/iPod touch的{$this->config->get('app_name')}应用程序,申请账号时自动发送给您的。\r\n如果您对该邮件不知情,请销毁本邮件并与我们联系。\r\n        \t\r\n账户申请后,您就可以使用申请账号时所设置的密码在 {$this->config->get('app_name')}应用程序的登录画面中登录使用了。\r\n新注册的账号里已自动生成1台终端,可免费使用两个月。\r\n如需新增使用其他终端,需要在管理画面中的“终端管理”进行终端添加并购买证书后方可使用。\r\n        \t\r\n以下是您所申请的{$this->config->get('app_name')}账户的相关信息。\r\n-----------------账户信息------------------\r\n\t   公司ID:{$company_id}\r\n \t   管理员ID:admin\r\n\t   管理员密码:申请账户时填写的密码 (与终端登录密码相同)\r\n\t   WEB管理页面URL: {$this->config->get('url')}?company_id={$company_id}\r\n        \t        \r\n------------------模板信息-------------------------\r\n**为了在注册后您可以马上使用终端登录来体验我们的服务,除以上账户信息外,\r\n我们也为你创建了以下必要的基本信息。\r\n\t   仓库/场所/供货方 代码:{$warehouse_id}\r\n\t   终端ID:{$terminal_id}\r\n\t   操作员ID:{$staff_id}\r\n---------------------------------------------------\r\n        \t\r\n如在使用本服务中遇到任何问题,请查看以下相关网站。\r\n服务总站 http://www.asx4.net\r\nAsWiki https://wiki.asx4.net\r\nAsHelp https://support.asx4.net\r\nAsShop  https://ec.asx4.net    \r\n    \t\r\n";
     } else {
         $subject = "Thank you for signing up {$this->config->get('app_name')} service";
         $message = "\r\n{$company_name} \r\nHi {$contact} \r\n        \t \r\nThank you for signing up our service {$this->config->get('app_name')}. \r\nThis mail is sent to every user who has registered an new account from our iOS app {$this->config->get('app_name')}.\r\nPlease feel free to contact us if you were not aware that you were going to receive it.\r\n        \t \r\nYou can login to the app {$this->config->get('app_name')} with the password you have input in the register form upon receipt of this email.\r\n        \t \r\nAccount Information:\r\n-----------------Account info------------------\r\n\t   Company ID:{$company_id}\r\n\t   Admin User ID:admin\r\n\t   Password:The password you set in registration form\r\n\t   Admin page URL: {$this->config->get('url')}?company_id={$company_id}\r\nEvery new account is assoiated with one preset terminal with a 2month free license.\r\nIf you want more terminals or longer licenses, please create terminal in the back-end admin system and buy license from our online shop.\r\n\r\n------------------demo data-------------------------\r\nBesides the account information above, we have also created some demo datas in order to help you test or learn our system easier.\r\n\t   Warehouse/Place/Seller ID:{$warehouse_id}\r\n\t   Terminal ID:{$terminal_id}\r\n\t   Staff ID:{$staff_id}\r\n---------------------------------------------------\r\n        \t                         \r\nOur app support AsReader 100% internally. AsReader is a series of hardware for iOS devices, they have ability to scan barcode or RFID tags and send the data to iOS devices.\r\nSo, it can easily turn your iPhones/iPods into a powerful handheld termials.\r\nfor more information, please refer to their official site:\r\nhttp://asreader.com/\r\n\r\nIf you have any question during using our service, please consult our following site for more information.\r\nService Home  http://www.asx4.net\r\nAsWiki        https://wiki.asx4.net\r\nAsHelp        https://support.asx4.net\r\nAsShop        https://ec.asx4.net\r\n\r\nBest regards,\r\n\r\nAsApps Team\r\n        \t     \r\n";
     }
     $headers = "From: {$this->config->get('admin_email_address')}";
     mb_send_mail($mail, $subject, $message, $headers);
     $output['company_id'] = $company_id;
     $output['warehouse_id'] = $warehouse_id;
     $output['terminal_id'] = $terminal_id;
     $output['staff_id'] = $staff_id;
     $output['server_url'] = $this->config->get('url');
     return array('json', $output);
 }