예제 #1
0
 /**
  * Get menu with admin user role
  *
  * @param integer $role
  * @return array|mixed
  */
 private function _getMenuAdmin($role)
 {
     $currentLink = '/admin/' . $this->_module . '/' . $this->_controller;
     $role = UserRoles::findFirst(['conditions' => 'role_id = ?0', 'bind' => [$role]]);
     if ($role) {
         /**
          * @var mixed $role
          */
         $menu = unserialize($role->menu);
         foreach ($menu as $lv1 => $item) {
             if (isset($item['items']) && count($item['items'])) {
                 foreach ($item['items'] as $lv2 => $childItem) {
                     if (isset($childItem['items']) && count($childItem['items'])) {
                         foreach ($childItem['items'] as $lv3 => $cChildItem) {
                             if (strpos($cChildItem['link'], $currentLink) !== false) {
                                 $menu[$lv1]['items'][$lv2]['current'] = 1;
                             }
                         }
                     }
                 }
             }
         }
         return $menu;
     }
     return [];
 }
예제 #2
0
파일: Users.php 프로젝트: kimthangatm/zcms
 /**
  * Login
  *
  * @param string $email
  * @param string $password
  * @return bool
  */
 public static function login($email, $password)
 {
     /**
      * @var Users $user
      */
     $user = Users::findFirst(['conditions' => 'is_active = 1 AND email = ?0', 'bind' => [$email]]);
     /**
      * @var \Phalcon\Security $security
      */
     $security = Di::getDefault()->get('security');
     if ($user && Users::checkPassword($password, $user->salt, $user->password)) {
         $token = $security->getToken();
         /**
          * @var UserRoles $role
          */
         $role = UserRoles::findFirst($user->role_id);
         $acl = json_decode($role->acl, true);
         /**
          * @var \ZCMS\Core\ZSession $session
          */
         $session = Di::getDefault()->get('session');
         $session->set('auth', ['full_name' => $user->first_name . ' ' . $user->last_name, 'email' => $user->email, 'id' => $user->user_id, 'role' => $user->role_id, 'rules' => $acl['rules'], 'gender' => $user->gender, 'linkAccess' => $acl['links'], 'language' => $user->language_code, 'avatar' => $user->avatar, 'token' => $token, 'coin' => (double) $user->coin, 'created_at' => date('Y-m-d', strtotime($user->created_at)), 'is_super_admin' => $role->is_super_admin, 'last_use_admin' => time()]);
         return true;
     }
     return false;
 }
예제 #3
0
 /**
  * Edit role
  *
  * @param int $id
  * @return bool
  */
 public function editAction($id)
 {
     $id = intval($id);
     /**
      * @var UserRoles $edit_data
      */
     $edit_data = UserRoles::findFirst(['conditions' => 'role_id = ?0', 'bind' => [$id]]);
     //If id not exist
     if (!$edit_data) {
         $this->flashSession->error("Cant not find that item to edit!");
         return $this->response->redirect('/admin/system/role/');
     } elseif ($edit_data->is_super_admin == 1) {
         $this->flashSession->error("You can't not edit Super Admin!");
         return $this->response->redirect('/admin/system/role/');
     } else {
         $this->view->setVar('edit_data', $edit_data);
     }
     //Add toolbar button
     $this->_toolbar->addSaveButton();
     $this->_toolbar->addCancelButton("index");
     $this->_addCSSAndJS();
     //Get rules
     $this->getRules();
     //Get edit rules
     /**
      * @var UserRoleMapping[] $edit_user_role_mapping
      */
     $edit_user_role_mapping = UserRoleMapping::find(["conditions" => "role_id = ?0", "bind" => [0 => $edit_data->role_id]]);
     $edit_rules = [];
     foreach ($edit_user_role_mapping as $arm) {
         $edit_rules[] = $arm->rule_id;
     }
     $this->view->setVar('edit_rules_id', implode(",", $edit_rules));
     if ($this->request->isPost()) {
         //Begin transaction
         $this->db->begin();
         //Get current auth
         $auth = ZAcl::getInstance()->getAuth();
         //Save admin role
         $edit_data->name = $this->request->getPost("name", "striptags");
         $edit_data->updated_at = date("Y-m-d H:i:s");
         $edit_data->updated_by = $auth['id'];
         $edit_data->location = (int) $this->request->getPost('location');
         $edit_data->is_default = (int) $this->request->getPost('is_default');
         if ($edit_data->save() == false) {
             $this->db->rollback();
             return $this->flashSession->error("m_system_role_message_cannot_save_role");
         }
         //Save admin role mapping
         $userRulesPost = trim($this->request->getPost("admin_rules"), ' ');
         if ($userRulesPost == '') {
             $this->db->commit();
             $this->flashSession->success('m_system_role_message_new_role_was_created_successfully');
             $this->response->redirect('/admin/system/role/');
             return true;
         }
         $user_rules = explode(",", $userRulesPost);
         $number_new_rules = count($user_rules);
         $number_old_rules = count($edit_user_role_mapping);
         $sub = $number_new_rules - $number_old_rules;
         if ($sub < 0) {
             foreach ($edit_user_role_mapping as $key => $arm) {
                 if ($user_rules[$key]) {
                     $arm->rule_id = $user_rules[$key];
                     if ($arm->save() == false) {
                         $this->db->rollback();
                         return $this->flashSession->error('m_system_role_message_update_role_failed');
                     }
                 } else {
                     if ($arm->delete() == false) {
                         $this->db->rollback();
                         return $this->flashSession->error('m_system_role_message_update_role_failed');
                     }
                 }
             }
         } elseif ($sub == 0) {
             //echo '<pre>'; var_dump($edit_user_role_mapping->toArray());echo '</pre>'; die();
             foreach ($edit_user_role_mapping as $key => $arm) {
                 $arm->rule_id = $user_rules[$key];
                 if ($arm->save() == false) {
                     $this->db->rollback();
                     return $this->flashSession->error('m_system_role_message_update_role_failed');
                 }
             }
         } else {
             foreach ($edit_user_role_mapping as $key => $arm) {
                 $arm->rule_id = $user_rules[$key];
                 if ($arm->save() == false) {
                     $this->db->rollback();
                     return $this->flashSession->error('m_system_role_message_update_role_failed');
                 }
             }
             for ($i = $number_old_rules; $i < $number_new_rules; $i++) {
                 $new_user_role_mapping = new UserRoleMapping();
                 $new_user_role_mapping->role_id = $edit_data->role_id;
                 $new_user_role_mapping->rule_id = $user_rules[$i];
                 if ($new_user_role_mapping->save() == false) {
                     $this->db->rollback();
                     return $this->flashSession->error('m_system_role_message_update_role_failed');
                 }
             }
         }
         //After all success full, commit transaction
         $this->db->commit();
         $this->flashSession->success(__('m_system_role_message_new_role_was_updated_successfully', ['1' => $edit_data->name]));
         return $this->response->redirect('/admin/system/role/');
     }
     return true;
 }