Exemplo n.º 1
0
        /// <summary>
        /// 判断权限
        /// 用于判断查询,修改,删除,打印权限
        /// </summary>
        /// <param name="so">权限操作类型</param>
        /// <param name="formid">窗体ID</param>
        /// <param name="lano">制单人</param>
        /// <returns></returns>
        public bool CheckAuth(SecurityOperation so, int formid, string suserid)
        {
            bool bResult = false;

            //如果是超级用户则直接返回True
            if (IsAdmin)
            {
                bResult = true;
            }
            else if (suserid == "")
            {
                bResult = true;
            }
            else
            {
                foreach (Hashtable ht in GetFormSecurity(formid))
                {
                    ////增加权限,只要设置的不为None,其他的都具有
                    //if (so == SecurityOperation.Add)
                    //{
                    //    if ((SecurityOperationValue)GetFormSecurity(formid)[so] != SecurityOperationValue.None)
                    //    {
                    //        bResult = true;
                    //    }
                    //}
                    //else
                    //{
                    switch ((SecurityOperationValue)ht[so])
                    {
                    case SecurityOperationValue.None:
                    {
                        bResult = false;
                        break;
                    }

                    case SecurityOperationValue.Self:
                    {
                        bResult = CurrentUserID.ToLower() == suserid.ToLower();
                        if (bResult)
                        {
                            return(bResult);
                        }
                        break;
                    }

                    case SecurityOperationValue.Underling:
                    {
                        bResult = GetUserUnderlingStr.ToLower().Contains(suserid.ToLower());
                        if (bResult)
                        {
                            return(bResult);
                        }
                        break;
                    }

                    case SecurityOperationValue.SelfAndUnderling:
                    {
                        bResult = GetUserSelfAndUnderlingStr.ToLower().Contains(suserid.ToLower());
                        if (bResult)
                        {
                            return(bResult);
                        }
                        break;
                    }

                    case SecurityOperationValue.Department:
                    {
                        bResult = GetUserDeptStr.ToLower().Contains(suserid.ToLower());
                        if (bResult)
                        {
                            return(bResult);
                        }
                        break;
                    }

                    case SecurityOperationValue.All:
                    {
                        bResult = true;
                        if (bResult)
                        {
                            return(bResult);
                        }
                        break;
                    }

                    default:
                    {
                        bResult = false;
                        break;
                    }
                    }
                }
            }
            return(bResult);
        }