Ejemplo n.º 1
0
 /**
  * 删除当前角色及下级角色的所有当前用户
  * @param number $user_id
  * @param number $role_id
  */
 public function deleteUserFromRole($user_id, $role_id)
 {
     $role = new Admin_Model_Role();
     // 检查当前角色是否存在下级角色
     $r = $role->fetchAll("parentid = " . $role_id);
     // 当前角色拥有下级角色
     if ($r->count() > 0) {
         $data = $r->toArray();
         foreach ($data as $d) {
             // 从下级角色中清除当前用户
             $this->deleteUserFromRole($user_id, $d['id']);
         }
     }
     // 从当前角色清除用户
     $this->delete("role_id = " . $role_id . " and user_id = " . $user_id);
 }
Ejemplo n.º 2
0
 public function editAction()
 {
     // 返回值数组
     $result = array('success' => true, 'info' => '编辑成功');
     $request = $this->getRequest()->getParams();
     $now = date('Y-m-d H:i:s');
     $user_session = new Zend_Session_Namespace('user');
     $user = $user_session->user_info['user_id'];
     $json = json_decode($request['json']);
     $updated = $json->updated;
     $inserted = $json->inserted;
     $deleted = $json->deleted;
     $role = new Admin_Model_Role();
     $member = new Admin_Model_Member();
     if (count($updated) > 0) {
         foreach ($updated as $val) {
             if ($role->fetchAll("id != " . $val->id . " and name = '" . $val->name . "'")->count() > 0) {
                 $result['result'] = false;
                 $result['info'] = '角色:' . $val->name . ' 重名';
                 echo Zend_Json::encode($result);
                 exit;
             } else {
                 $data = array('parentid' => $val->parentId, 'name' => $val->name, 'description' => $val->description, 'remark' => $val->remark, 'active' => $val->active, 'update_time' => $now, 'update_user' => $user);
                 $where = "id = " . $val->id;
                 try {
                     $role->update($data, $where);
                 } catch (Exception $e) {
                     $result['result'] = false;
                     $result['info'] = $e->getMessage();
                     echo Zend_Json::encode($result);
                     exit;
                 }
             }
         }
     }
     if (count($inserted) > 0) {
         foreach ($inserted as $val) {
             if ($role->fetchAll("name = '" . $val->name . "'")->count() > 0) {
                 $result['result'] = false;
                 $result['info'] = '角色:' . $val->name . ' 重名';
                 echo Zend_Json::encode($result);
                 exit;
             } else {
                 $data = array('parentid' => $val->parentId, 'name' => $val->name, 'description' => $val->description, 'remark' => $val->remark, 'active' => $val->active, 'create_time' => $now, 'create_user' => $user, 'update_time' => $now, 'update_user' => $user);
                 try {
                     $role_id = $role->insert($data);
                     // 自动添加系统管理员到新角色中
                     $adminIds = $member->getUserids("系统管理员");
                     foreach ($adminIds as $admin) {
                         if ($member->fetchAll("user_id = " . $admin . " and role_id = " . $role_id)->count() == 0) {
                             try {
                                 $member->insert(array('user_id' => $admin, 'role_id' => $role_id));
                             } catch (Exception $e) {
                                 $result['result'] = false;
                                 $result['info'] = $e->getMessage();
                                 echo Zend_Json::encode($result);
                                 exit;
                             }
                         }
                     }
                 } catch (Exception $e) {
                     $result['result'] = false;
                     $result['info'] = $e->getMessage();
                     echo Zend_Json::encode($result);
                     exit;
                 }
             }
         }
     }
     if (count($deleted) > 0) {
         foreach ($deleted as $val) {
             $adminIds = $member->getMemberWithNoManager($val->id);
             if (count($adminIds) == 0) {
                 try {
                     $role->deleteRoleTreeData($val->id);
                 } catch (Exception $e) {
                     $result['result'] = false;
                     $result['info'] = $e->getMessage();
                     echo Zend_Json::encode($result);
                     exit;
                 }
             } else {
                 $result['result'] = false;
                 $result['info'] = '角色ID ' . $val->id . '有管理员以外的其它成员,请先删除其它成员';
                 echo Zend_Json::encode($result);
                 exit;
             }
         }
     }
     echo Zend_Json::encode($result);
     exit;
 }