예제 #1
0
        private void SystemMenuLoginItem_Click(object sender, EventArgs e)
        {
            if (AppManager.GetInstance().UserLoginState == AppManager.UserState.LOGIN)
            {
                return;
            }
            RbacServiceClient rbacService =
                new RbacServiceClient(AppManager.GetInstance().ApiUrl + "rbacservices/");
            FrmUserLogin frmUserLogin = new FrmUserLogin(rbacService);
            var          loginResult  = frmUserLogin.ShowDialog();

            if (loginResult == DialogResult.OK)
            {
                //设置导航菜单可用
                NavigatoButton.Enabled = true;
                //系统管理员才能操作菜单设置对话框
                if (AppManager.GetInstance().User.id == -1)
                {
                    MenuMgrButton.Enabled = true;
                }
                //设置菜单栏里登录按钮不可用
                SystemMenuLoginItem.Enabled = false;
                //从API获取用户权限及菜单
                MenuServiceClient menuService_ =
                    new MenuServiceClient(AppManager.GetInstance().ApiUrl + "menuservices/");
                ResponseModel response;
                if (AppManager.GetInstance().User.id != -1)
                {
                    //一般操作员默认根据用户ID获取菜单
                    response = menuService_.GetMenu(int.Parse(AppManager.GetInstance().User.user_id));
                }
                else
                {
                    //系统内置管理员默认获取所有菜单
                    response = menuService_.GetMenus();
                }
                if (response.Code == 1)
                {
                    List <Menus> menus = Serializer_.Deserialize <List <Menus> >(Serializer_.Serialize(response.Data));
                    InitMenus(menus);
                }
                else
                {
                    MessageBox.Show($"获取权限异常:{response.Message}");
                }
            }
        }
예제 #2
0
        private void InitDepartmentTree()
        {
            ResponseModel response = DepartmentService_.GetDepartments();

            if (response.Code == 1)
            {
                if (response.DataCount >= 1)
                {
                    List <Department> departments =
                        Serializer_.Deserialize <List <Department> >(Serializer_.Serialize(response.Data));
                    BindToTreeView(departments);
                }
                else
                {
                    MessageBox.Show("尚未有任何部门被创建");
                }
            }
            else
            {
                MessageBox.Show(response.Message);
            }
        }
예제 #3
0
        public void UserLogin()
        {
            string userName = txtUserName.Text.Trim();
            string password = txtPassword.Text.Trim();

            if (string.IsNullOrEmpty(userName) || string.IsNullOrEmpty(password))
            {
                MessageBox.Show("user name/password cannot be empty.");
                return;
            }
            ResponseModel response = RbacService_.UserLogin(userName, password);

            if (response.Code == 1)
            {
                AppManager.GetInstance().User           = Serializer_.Deserialize <Users>(Serializer_.Serialize(response.Data));
                AppManager.GetInstance().UserLoginState = AppManager.UserState.LOGIN;
                DialogResult = DialogResult.OK;
            }
            else
            {
                MessageBox.Show($"login fail,{response?.Message}");
                DialogResult = DialogResult.Abort;
            }
        }
예제 #4
0
파일: UacDragDrop.cs 프로젝트: qmgindi/Au
        int _DragEvent(int event_, byte[] b)
        {
            if (!_isDragMode)
            {
                return(0);
            }
            DDEvent ev = (DDEvent)event_;

            if (ev == DDEvent.Leave)
            {
                if (!_wTargetControl.Is0)
                {
                    _InvokeDT(_wTargetControl, ev, 0, 0, default);
                    _wTargetControl = default;
                }
                return(0);
            }
            var a = Serializer_.Deserialize(b);
            int effect = a[0], keyState = a[1]; POINT pt = new(a[2], a[3]);

            if (ev == DDEvent.Enter)
            {
                _data = new System.Windows.DataObject();
                var t = new DDData {
                    files = a[4], shell = a[5], text = a[6], linkName = a[7]
                };
                if (t.files != null)
                {
                    _data.SetData("FileDrop", t.files);
                }
                if (t.shell != null)
                {
                    _SetDataBytes("Shell IDList Array", t.shell);
                }
                if (t.text != null)
                {
                    _data.SetData("UnicodeText", t.text);
                }
                if (t.linkName != null)
                {
                    _SetDataBytes("FileGroupDescriptorW", t.linkName);
                }

                //workaround for: SetData writes byte[] in wrong format, probably serialized
                void _SetDataBytes(string name, byte[] a) => _data.SetData(name, new MemoryStream(a), false);
            }

            int ef = 0;
            var w  = _wWindow.ChildFromXY(pt, WXYCFlags.ScreenXY);

            if (w.Is0)
            {
                w = _wWindow;
            }
            if (w != _wTargetControl && !_wTargetControl.Is0)
            {
                _InvokeDT(_wTargetControl, DDEvent.Leave, 0, 0, default);
                _wTargetControl = default;
            }
            if (!w.Is0 && w.IsOfThisProcess && w.IsEnabled(true))
            {
                if (ev != 0 && _wTargetControl.Is0)
                {
                    if (ev == DDEvent.Over)
                    {
                        ev = 0;
                    }
                    else
                    {
                        _InvokeDT(w, DDEvent.Enter, effect, keyState, pt);
                    }
                }
                ef = _InvokeDT(_wTargetControl = w, ev, effect, keyState, pt);
            }

            if (ev == DDEvent.Drop)
            {
                _wTargetControl = default;
            }

            int _InvokeDT(wnd w, DDEvent ev, int effect, int keyState, POINT pt)
            {
                if (w.IsOfThisThread)
                {
                    return(_InvokeDropTarget(w, ev, effect, keyState, pt));
                }
                var d = HwndSource.FromHwnd(w.Window.Handle)?.Dispatcher;

                return(d?.Invoke(() => _InvokeDropTarget(w, ev, effect, keyState, pt)) ?? 0);
            }

            return(ef);
        }