Beispiel #1
0
        /// <summary>
        /// Получить права пользователя на объект интерфейса
        /// </summary>
        public MainData.Right GetRight(string itfObjName)
        {
            MainData.Right right;

            if (Role == ServerComm.Roles.Custom)
            {
                if (rightList == null || !rightList.TryGetValue(itfObjName, out right))
                {
                    right = MainData.Right.NoRights;
                }
            }
            else
            {
                right           = new MainData.Right();
                right.CtrlRight = Role == ServerComm.Roles.Admin || Role == ServerComm.Roles.Dispatcher;
                right.ViewRight = right.CtrlRight || Role == ServerComm.Roles.Guest;
            }

            return(right);
        }
Beispiel #2
0
        protected void btnEnter_Click(object sender, System.EventArgs e)
        {
            UserData userData        = UserData.GetUserData();
            bool     alreadyLoggedOn = userData.LoggedOn;
            string   errMsg          = "";

            if (alreadyLoggedOn || userData.Login(txtLogin.Text, txtPassword.Text, out errMsg))
            {
                // проверка прав пользователя на выбранный набор представлений
                int            viewSetIndex = ddlViewSet.SelectedIndex;
                string         viewSetName  = userData.ViewSettings.ViewSetList[viewSetIndex].Name;
                MainData.Right viewSetRight = userData.GetViewSetRight(viewSetIndex);

                if (viewSetRight.ViewRight)
                {
                    // сохранение в cookie информации о входе пользователя
                    if (!alreadyLoggedOn)
                    {
                        userData.RememberUser(Context, !chkRememberUser.Checked);
                    }

                    // сохранение в cookie выбранного набора представлений
                    HttpCookie cookie = new HttpCookie("ScadaViewSet");
                    cookie.Value   = Server.UrlEncode(viewSetName);
                    cookie.Expires = DateTime.Now.Add(ScadaUtils.CookieExpiration);
                    Response.SetCookie(cookie);

                    // переход на страницу данных
                    Response.Redirect("~/Main.aspx?viewSet=" + viewSetIndex, false);
                }
                else
                {
                    errMsg = WebPhrases.NoViewSetRights;
                }
            }

            if (!string.IsNullOrEmpty(errMsg))
            {
                AddShowErrorScript(string.Format(WebPhrases.UnableLogin, errMsg));
            }
        }
Beispiel #3
0
        /// <summary>
        /// Инициализировать права на представления из набора
        /// </summary>
        private void InitViewRightArr(ViewSetRight viewSetRight)
        {
            ViewSettings.ViewSet viewSet = viewSetRight.ViewSet;

            if (viewSet != null && viewSet.Count > 0)
            {
                bool             viewSetViewRight = viewSetRight.Right.ViewRight;
                bool             viewSetCtrlRight = viewSetRight.Right.CtrlRight;
                int              viewCnt          = viewSet.Count;
                MainData.Right[] viewRightArr     = new MainData.Right[viewCnt];

                for (int i = 0; i < viewCnt; i++)
                {
                    MainData.Right right = GetRight(Path.GetFileName(viewSet[i].FileName));
                    viewRightArr[i].ViewRight = right.ViewRight && viewSetViewRight;
                    viewRightArr[i].CtrlRight = right.CtrlRight && viewSetCtrlRight;
                }

                viewSetRight.ViewRightArr = viewRightArr;
            }
        }
Beispiel #4
0
        /// <summary>
        /// Получить права пользователя на представление
        /// </summary>
        public MainData.Right GetViewRight(int viewSetIndex, int viewIndex)
        {
            MainData.Right right = MainData.Right.NoRights;

            if (viewSetRightList != null && 0 <= viewSetIndex && viewSetIndex < viewSetRightList.Count)
            {
                ViewSetRight viewSetRight = viewSetRightList[viewSetIndex];

                if (viewSetRight.ViewRightArr == null)
                {
                    InitViewRightArr(viewSetRight);
                }

                MainData.Right[] viewRightArr = viewSetRight.ViewRightArr;

                if (viewRightArr != null && 0 <= viewIndex && viewIndex < viewRightArr.Length)
                {
                    right = viewRightArr[viewIndex];
                }
            }

            return(right);
        }
Beispiel #5
0
        /// <summary>
        /// Получить представление заданного типа и права на него
        /// </summary>
        public bool GetView(Type viewType, int viewSetIndex, int viewIndex,
                            out BaseView view, out MainData.Right right)
        {
            bool result = false;

            view  = null;
            right = MainData.Right.NoRights;

            try
            {
                if (viewSetRightList != null && 0 <= viewSetIndex && viewSetIndex < viewSetRightList.Count)
                {
                    ViewSetRight         viewSetRight = viewSetRightList[viewSetIndex];
                    ViewSettings.ViewSet viewSet      = viewSetRight.ViewSet;

                    if (viewSetRight.ViewRightArr == null)
                    {
                        InitViewRightArr(viewSetRight);
                    }

                    MainData.Right[] viewRightArr = viewSetRight.ViewRightArr;

                    if (viewSet != null && viewRightArr != null && 0 <= viewIndex &&
                        viewIndex < viewSet.Count && viewIndex < viewRightArr.Length)
                    {
                        ViewSettings.ViewInfo viewInfo = viewSet[viewIndex];
                        right = viewRightArr[viewIndex];

                        // попытка получить стандартный тип представления, если тип не задан
                        if (viewType == null)
                        {
                            viewType = viewInfo.GetViewType();
                        }

                        if (viewType == null)
                        {
                            // возврат представления из кэша, если тип не задан
                            view = viewInfo.ViewCash;
                            return(view != null);
                        }
                        else if (viewInfo.Type == viewType.Name)
                        {
                            if (viewInfo.ViewCash != null && viewInfo.ViewCash.GetType() == viewType)
                            {
                                // возврат представления из кэша,
                                // если в кэше загружено представление и его тип совпадает с заданным
                                view   = viewInfo.ViewCash;
                                result = true;
                            }
                            else
                            {
                                // создание и загрузка нового представления
                                view = (BaseView)Activator.CreateInstance(viewType);

                                if (!view.StoredOnServer)
                                {
                                    view.Path = viewInfo.FileName;
                                }

                                if (!view.StoredOnServer ||
                                    AppData.MainData.ServerComm.ReceiveView(viewSet.Directory + viewInfo.FileName, view))
                                {
                                    AppData.MainData.RefreshBase();
                                    view.BindCnlProps(AppData.MainData.CnlPropsArr);
                                    viewInfo.ViewCash = view;
                                    result            = true;
                                }
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                AppData.Log.WriteAction((Localization.UseRussian ? "Ошибка при получении представления: " :
                                         "Error getting view: ") + ex.Message, Log.ActTypes.Exception);
            }

            return(result);
        }
Beispiel #6
0
        /// <summary>
        /// Получить представление заданного типа и права на него
        /// </summary>
        public bool GetView(Type viewType, int viewSetIndex, int viewIndex,
                            out BaseView view, out MainData.Right right)
        {
            bool result = false;

            view  = null;
            right = MainData.Right.NoRights;

            try
            {
                if (viewSetRightList != null && 0 <= viewSetIndex && viewSetIndex < viewSetRightList.Count)
                {
                    ViewSetRight         viewSetRight = viewSetRightList[viewSetIndex];
                    ViewSettings.ViewSet viewSet      = viewSetRight.ViewSet;

                    if (viewSetRight.ViewRightArr == null)
                    {
                        InitViewRightArr(viewSetRight);
                    }

                    MainData.Right[] viewRightArr = viewSetRight.ViewRightArr;

                    if (viewSet != null && viewRightArr != null && 0 <= viewIndex &&
                        viewIndex < viewSet.Count && viewIndex < viewRightArr.Length)
                    {
                        ViewSettings.ViewInfo viewInfo = viewSet[viewIndex];
                        right = viewRightArr[viewIndex];

                        if (viewType == null)
                        {
                            view = viewInfo.ViewCash;
                            return(view != null);
                        }
                        else if (viewInfo.Type == viewType.Name)
                        {
                            if (viewInfo.ViewCash != null && viewInfo.ViewCash.GetType() == viewType)
                            {
                                view   = viewInfo.ViewCash;
                                result = true;
                            }
                            else
                            {
                                view = (BaseView)Activator.CreateInstance(viewType);

                                if (!view.StoredOnServer)
                                {
                                    view.ItfObjName = Path.GetFileName(viewInfo.FileName);
                                }

                                if (!view.StoredOnServer ||
                                    AppData.MainData.ServerComm.ReceiveView(viewSet.Directory + viewInfo.FileName, view))
                                {
                                    AppData.MainData.RefreshBase();
                                    view.BindCnlProps(AppData.MainData.CnlPropsArr);
                                    viewInfo.ViewCash = view;
                                    result            = true;
                                }
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                AppData.Log.WriteAction((Localization.UseRussian ? "Ошибка при получении представления: " :
                                         "Error getting view: ") + ex.Message, Log.ActTypes.Exception);
            }

            return(result);
        }