Ejemplo n.º 1
0
        public bool HasButtonPermission(LibHandle handle, string progId, string id)
        {
            bool ret = false;

            if (handle == LibHandleCache.Default.GetSystemHandle())
            {
                ret = true;
            }
            else
            {
                string            roleId         = handle.RoleId;
                LibRolePermission rolePermission = LibRolePermissionCache.Default.GetCacheItem(roleId);
                if (rolePermission.IsUnlimited)
                {
                    ret = true;
                }
                else if (rolePermission.PermissionDic.ContainsKey(progId))
                {
                    LibPermission permission = rolePermission.PermissionDic[progId];
                    ret = !permission.NoUseButton.Contains(id);
                }
                if (roleId == string.Empty)
                {
                    ret = true;
                }
            }
            return(ret);
        }
Ejemplo n.º 2
0
        public override void BeforeFillList(LibHandle libHandle, DataTable table, object listingQuery, LibEntryParam entryParam)
        {
            base.BeforeFillList(libHandle, table, listingQuery, entryParam);
            if (libHandle == null || table == null || listingQuery == null)
            {
                return;
            }
            BillListingQuery queryinfo = listingQuery as BillListingQuery;

            if (queryinfo == null)
            {
                return;
            }
            int dirType = 0;

            if (int.TryParse((from item in queryinfo.Condition.QueryFields
                              where item.Name.Equals("DIRTYPE") && item.QueryChar.Equals(LibQueryChar.Equal) &&
                              item.Value.Count == 1
                              select item.Value[0]).FirstOrDefault().ToString(), out dirType) == false)
            {
                return;
            }
            if (dirType == (int)DirTypeEnum.Private)
            {
                //私有目录,根据创建人进行标识
                AxCRL.Core.Comm.LibQueryField libQueryField = new AxCRL.Core.Comm.LibQueryField();
                libQueryField.Name      = "CREATORID";
                libQueryField.QueryChar = LibQueryChar.Equal;
                libQueryField.Value.Add(libHandle.PersonId);
                queryinfo.Condition.QueryFields.Add(libQueryField);
            }
            //公共目录,在Fill后在根据目录权限设置
        }
Ejemplo n.º 3
0
        /// <summary>
        /// 获取用户可访问的站点
        /// </summary>
        /// <param name="userHandle"></param>
        /// <returns></returns>
        public List <LinkSiteInfo> GetLinkSites(string userHandle)
        {
            // 判断userHandle存不存在
            LibHandle handle = LibHandleCache.Default.GetCurrentHandle(userHandle);

            if (handle == null)
            {
                throw new Exception("用户句柄无效");
            }
            List <LinkSiteInfo> linkSiteInfoList = new List <LinkSiteInfo>();
            string        sql        = string.Format("select B.SITEID, B.SITENAME, B.SHORTNAME, B.SITEURL, B.SVCURL, B.ISSLAVE,B.ISSENDTO from AXPUSERSITE A join AXPLINKSITE B on A.SITEID = B.SITEID where A.USERID = {0}", LibStringBuilder.GetQuotString(handle.UserId));
            LibDataAccess dataAccess = new LibDataAccess();

            using (IDataReader reader = dataAccess.ExecuteDataReader(sql))
            {
                while (reader.Read())
                {
                    var siteInfo = new LinkSiteInfo()
                    {
                        SiteId    = LibSysUtils.ToString(reader["SITEID"]),
                        SiteName  = LibSysUtils.ToString(reader["SITENAME"]),
                        ShortName = LibSysUtils.ToString(reader["SHORTNAME"]),
                        SiteUrl   = LibSysUtils.ToString(reader["SITEURL"]),
                        SvcUrl    = LibSysUtils.ToString(reader["SVCURL"]),
                        IsSlave   = LibSysUtils.ToBoolean(reader["ISSLAVE"]),
                        IsSendTo  = LibSysUtils.ToBoolean(reader["ISSENDTO"]),
                    };
                    linkSiteInfoList.Add(siteInfo);
                }
            }
            return(linkSiteInfoList);
        }
Ejemplo n.º 4
0
        public bool CanUse(LibHandle handle, string progId)
        {
            bool   canUse = false;
            string roleId = handle.RoleId;

            if (handle == LibHandleCache.Default.GetSystemHandle())
            {
                canUse = true;
            }
            else
            {
                LibRolePermission rolePermission = LibRolePermissionCache.Default.GetCacheItem(roleId);
                if (rolePermission.IsUnlimited)
                {
                    canUse = true;
                }
                else
                {
                    if (rolePermission.PermissionDic.ContainsKey(progId))
                    {
                        int dest = (int)FuncPermissionEnum.Use;
                        canUse = (rolePermission.PermissionDic[progId].OperateMark & dest) == dest;
                    }
                }
                if (roleId == string.Empty)
                {
                    canUse = true;
                }
            }
            return(canUse);
        }
Ejemplo n.º 5
0
        public List <string> GetWallpapers(string handle)
        {
            List <string> wallpapers = new List <string>();
            LibHandle     libHandle  = LibHandleCache.Default.GetCurrentHandle(handle) as LibHandle;

            if (libHandle == null)
            {
                throw new Exception("用户句柄无效。");
            }
            string path = Path.Combine(EnvProvider.Default.RuningPath, "Wallpapers", libHandle.UserId);

            if (!Directory.Exists(path))
            {
                path = Path.Combine(EnvProvider.Default.RuningPath, "Wallpapers", "admin");
                if (!Directory.Exists(path))
                {
                    path = string.Empty;
                }
            }
            if (!string.IsNullOrEmpty(path))
            {
                DirectoryInfo info = new DirectoryInfo(path);
                FileInfo[]    list = new string[] { "*.jpg", "*.png", "*.gif" }
                .SelectMany(i => info.GetFiles(i))
                .Distinct().ToArray();
                foreach (var item in list)
                {
                    wallpapers.Add(item.Name);
                }
            }
            return(wallpapers);
        }
Ejemplo n.º 6
0
 /// <summary>
 /// 检查Token有效期的定时执行方法
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void CheckTokenValidTimer_Elapsed(object sender, ElapsedEventArgs e)
 {
     try
     {
         IEnumerator <string> enumerator = _Default.GetKeys();
         DateTime             now        = DateTime.Now;
         while (enumerator.MoveNext())
         {
             LibHandle handle = this.Get <LibHandle>(enumerator.Current);
             if (handle != null)
             {
                 TimeSpan ts = now - handle.TokenValidTime;
                 if (ts.TotalMinutes > EnvProvider.Default.TokenValidMinutes)
                 {
                     handle.SetNewToken();
                     this.Set(handle.Handle, handle);//修改Token后重新放入Redis缓存
                 }
             }
             Thread.Sleep(30);
         }
     }
     catch
     {
         //to do log
     }
 }
Ejemplo n.º 7
0
        public string LoadMenuSetting(string handle, bool setting = false)
        {
            string    menuData  = string.Empty;
            LibHandle libHandle = LibHandleCache.Default.GetCurrentHandle(handle) as LibHandle;

            if (libHandle == null)
            {
                throw new Exception("用户句柄无效。");
            }
            string path = Path.Combine(EnvProvider.Default.MainPath, "Scheme", "MenuSetting", libHandle.UserId, string.Format("{0}.json", libHandle.UserId));

            if (!File.Exists(path))
            {
                path = Path.Combine(EnvProvider.Default.MainPath, "Scheme", "MenuSetting", "admin", "admin.json");
            }
            if (File.Exists(path))
            {
                using (FileStream fs = new FileStream(path, FileMode.Open))
                {
                    using (StreamReader sr = new StreamReader(fs))
                    {
                        menuData = sr.ReadToEnd();
                    }
                }
            }
            if (!setting)
            {
                PowerFliter(libHandle, ref menuData);
            }
            return(menuData);
        }
Ejemplo n.º 8
0
        public bool HasPermission(LibHandle handle, string progId, FuncPermissionEnum funcPermission)
        {
            bool ret = false;

            if (handle == LibHandleCache.Default.GetSystemHandle())
            {
                ret = true;
            }
            else
            {
                string            roleId         = handle.RoleId;
                LibRolePermission rolePermission = LibRolePermissionCache.Default.GetCacheItem(roleId);
                if (rolePermission.IsUnlimited)
                {
                    ret = true;
                }
                else if (rolePermission.PermissionDic.ContainsKey(progId))
                {
                    LibPermission permission = rolePermission.PermissionDic[progId];
                    ret = (permission.OperateMark & (int)funcPermission) == (int)funcPermission;
                }
                if (roleId == string.Empty)
                {
                    ret = true;
                }
            }
            return(ret);
        }
Ejemplo n.º 9
0
        /// <summary>
        /// 检查用户对于一批目录是否具有指定权限,返回具有权限的目录Id列表
        /// </summary>
        /// <param name="handle"></param>
        /// <param name="permission"></param>
        /// <param name="toFilterDirIdList"></param>
        /// <returns></returns>
        public List <string> FilterDirIds(LibHandle handle, DMFuncPermissionEnum permission, List <string> toFilterDirIdList)
        {
            if (handle == LibHandleCache.Default.GetSystemHandle() || string.IsNullOrEmpty(handle.UserId) || handle.UserId == "admin")
            {
                return(toFilterDirIdList);//系统用户则直接原样返回
            }
            string           personId       = handle.PersonId;
            DMUserPermission userPermission = DMUserPermissionCache.Default.GetCacheItem(personId);

            if (userPermission.IsUnlimited)
            {
                return(toFilterDirIdList);//用户权限不受限制则直接原样返回
            }
            Dictionary <string, List <string> > dicDirId_DirIds = DirLinkAddress.GetDirIdsForDirs(toFilterDirIdList);

            if (dicDirId_DirIds == null)
            {
                return(new List <string>());
            }

            List <string> resultList = new List <string>();

            try
            {
                //使用每个目录的目录标识列表(含自身和所有父级目录)检查是否可用权限
                resultList = (from item in toFilterDirIdList
                              where dicDirId_DirIds.ContainsKey(item) && userPermission.CheckCan(dicDirId_DirIds[item], string.Empty, permission)
                              select item).ToList();
            }
            catch (Exception exp)
            {
                DMCommonMethod.WriteLog("FilterDocIds", exp.Message);
            }
            return(resultList);
        }
Ejemplo n.º 10
0
        public static Result FeedbackMsg(string userId, string handle, FeedbackModel info)
        {
            Result res = new Result();

            res.ReturnValue = true;
            LibHandle Handle = LibHandleCache.Default.IsExistsHandle(LibHandeleType.PC, userId);

            VerificationHandle(userId, handle, Handle, res);
            if (res.ReturnValue)
            {
                LibDataAccess access = new LibDataAccess();
                try
                {
                    string sql = string.Empty;
                    if (!string.IsNullOrEmpty(Handle.PersonId))//待优化
                    {
                        sql = string.Format("Insert into AXPFEEDBACKMSG(GUID, USERID, MESSAGETYPE, MESSAGE) VALUES({0}, {1}, {2}, {3})", LibStringBuilder.GetQuotString(Guid.NewGuid().ToString()), LibStringBuilder.GetQuotString(userId), info.MessageType, LibStringBuilder.GetQuotString(info.Message));
                        access.ExecuteNonQuery(sql);
                        res.ReturnValue = true;
                    }
                    else
                    {
                        res.Message     = "请重新登录!";
                        res.ReturnValue = false;
                    }
                }
                catch (Exception ex)
                {
                    res.ReturnValue = false;
                    res.Message     = "失败!" + ex.Message;
                }
            }
            return(res);
        }
Ejemplo n.º 11
0
        public SetPwdResult SetPassword(string handle, string oldPwd, string newPwd)
        {
            SetPwdResult result    = new SetPwdResult();
            LibHandle    libHandle = LibHandleCache.Default.GetCurrentHandle(handle) as LibHandle;

            if (libHandle == null)
            {
                throw new Exception("用户句柄无效。");
            }
            string sql = string.Format("select USERID from AXPUSER where USERID={0} and USERPASSWORD={1}",
                                       LibStringBuilder.GetQuotString(libHandle.UserId), LibStringBuilder.GetQuotString(oldPwd));
            LibDataAccess dataAccess = new LibDataAccess();
            string        userId     = LibSysUtils.ToString(dataAccess.ExecuteScalar(sql));

            if (string.IsNullOrEmpty(userId))
            {
                result.Msg     = "输入的旧密码与系统不匹配。";
                result.Success = false;
            }
            else
            {
                dataAccess.ExecuteNonQuery(string.Format("update AXPUSER set USERPASSWORD={2} where USERID={0} and USERPASSWORD={1}",
                                                         LibStringBuilder.GetQuotString(libHandle.UserId), LibStringBuilder.GetQuotString(oldPwd),
                                                         LibStringBuilder.GetQuotString(newPwd)));
                result.Success = true;
            }
            return(result);
        }
Ejemplo n.º 12
0
 /// <summary>
 /// 检查用户是否具有指定文件的下周权限,如有则返回待下载的临时文件地址
 /// </summary>
 /// <param name="userHandle"></param>
 /// <param name="docId"></param>
 /// <returns></returns>
 public static string CheckAndGetDownloadTempFile(string userHandle, string docId, int modifyId, out string downloadName)
 {
     downloadName = string.Empty;
     try
     {
         LibHandle libHandle = LibHandleCache.Default.GetCurrentHandle(userHandle) as LibHandle;
         if (libHandle == null)
         {
             return(string.Empty);//用户句柄无效
         }
         if (DMPermissionControl.Default.HasPermission(libHandle, string.Empty, docId, DMFuncPermissionEnum.Download) == false)
         {
             return(string.Empty);
         }
         DirLinkAddress dirlink = new DirLinkAddress(docId);
         downloadName = dirlink.DocName;
         //复制一份到临时目录
         string tempPath    = Path.Combine(GetDMRootTempPath(), string.Format("{0}_{1}", DateTime.Now.Ticks.ToString(), downloadName));
         string docFullPath = dirlink.GetDocFullPath(modifyId);
         if (File.Exists(docFullPath))
         {
             File.Copy(docFullPath, tempPath);
             return(tempPath);
         }
         return(string.Empty);
     }
     catch (Exception exp)
     {
         WriteLog("DMCommonMethod.CheckAndGetDownloadTempFile", string.Format("DocId:{0},Error:{1}", docId, exp.ToString()));
         return(string.Empty);
     }
 }
Ejemplo n.º 13
0
        /// <summary>
        /// 登录
        /// </summary>
        /// <param name="info"></param>
        /// <returns></returns>
        public static Result Login(UserInfo info)
        {
            Result res = new Result();

            try
            {
                LibDataAccess access = new LibDataAccess();
                SystemService server = new SystemService();
                if (APPCache.CacheDic.ContainsKey(info.CodeId))
                {
                    if (string.Equals(APPCache.CacheDic[info.CodeId], info.Code, StringComparison.CurrentCultureIgnoreCase))
                    {
                        LoginInfo loginInfo = server.Login(info.UserId, info.Password, false);
                        LibHandle handle    = LibHandleCache.Default.IsExistsHandle(LibHandeleType.PC, info.UserId);
                        if (loginInfo.PersonId == null)
                        {
                            res.ReturnValue = false;
                            res.Message     = "登录失败!";
                        }
                        else if (handle == null)
                        {
                            res.ReturnValue = false;
                            res.Message     = "请重新登录!";
                        }
                        else
                        {
                            string sql = string.Format("SELECT B.PHONENO,B.MAIL FROM AXPUSER A LEFT JOIN COMPERSON B ON B.PERSONID=A.PERSONID WHERE A.USERID={0}", LibStringBuilder.GetQuotString(info.UserId));
                            using (IDataReader reader = access.ExecuteDataReader(sql))
                            {
                                if (reader.Read())
                                {
                                    //loginInfo.UserPhone = LibSysUtils.ToString(reader["PHONENO"]);
                                    loginInfo.UserEMail = LibSysUtils.ToString(reader["MAIL"]);
                                }
                            }
                            loginInfo.Handle = handle.Handle;
                            res.Info         = loginInfo;
                            res.ReturnValue  = true;
                            APPCache.RemoveAPPCache(info.CodeId);
                        }
                    }
                    else
                    {
                        res.Message     = "验证码错误!";
                        res.ReturnValue = false;
                    }
                }
                else
                {
                    res.Message     = "验证码失效!";
                    res.ReturnValue = false;
                }
            }
            catch (Exception ex)
            {
                res.Message     = ex.Message;
                res.ReturnValue = false;
            }
            return(res);
        }
Ejemplo n.º 14
0
        /// <summary>
        /// 获取功能模块确定的GridScheme
        /// </summary>
        /// <param name="handle"></param>
        /// <param name="entryParam"></param>
        /// <returns></returns>
        public override LibGridScheme GetDefinedGridScheme(LibHandle handle, LibEntryParam entryParam)
        {
            LibGridScheme gridScheme = null;
            StringBuilder builder    = new StringBuilder();

            if (entryParam != null)
            {
                foreach (var item in entryParam.ParamStore)
                {
                    builder.AppendFormat("{0}", item.Value);
                }
            }
            string           schemeName    = string.Format("{0}{1}List.bin", "dm.Directory", builder.ToString());
            LibDisplayScheme displayScheme = null;
            string           path          = Path.Combine(EnvProvider.Default.MainPath, "Scheme", "ShowScheme", schemeName);

            if (File.Exists(path))
            {
                LibBinaryFormatter formatter = new LibBinaryFormatter();
                using (FileStream fs = new FileStream(path, FileMode.Open))
                {
                    displayScheme = (LibDisplayScheme)formatter.Deserialize(fs);
                }
            }
            if (displayScheme != null)
            {
                gridScheme = displayScheme.GridScheme[0];
            }
            return(gridScheme);
        }
Ejemplo n.º 15
0
        /// <summary>
        /// 构造跨站点调用的临时登录
        /// </summary>
        /// <param name="userId"></param>
        /// <returns></returns>
        public LibHandle GetCrossCallHandle(string userId)
        {
            if (string.IsNullOrEmpty(userId))
            {
                return(null);
            }
            LibHandle     handle     = new LibHandle(LibHandeleType.CrossSiteCall, userId, "");
            SqlBuilder    builder    = new SqlBuilder("axp.User");
            string        sql        = builder.GetQuerySql(0, "A.PERSONID,A.PERSONNAME,A.ROLEID,A.WALLPAPER,A.WALLPAPERSTRETCH", string.Format("A.USERID={0} And A.ISUSE=1", LibStringBuilder.GetQuotString(userId)));
            LibDataAccess dataAccess = new LibDataAccess();
            bool          exist      = false;

            using (IDataReader reader = dataAccess.ExecuteDataReader(sql))
            {
                if (reader.Read())
                {
                    handle.PersonId   = LibSysUtils.ToString(reader[0]);
                    handle.PersonName = LibSysUtils.ToString(reader[1]);
                    handle.RoleId     = LibSysUtils.ToString(reader[2]);
                    exist             = true;
                }
            }
            if (exist)
            {
                this.Set(handle.Handle, handle);
                return(handle);
            }
            else
            {
                return(null);
            }
        }
Ejemplo n.º 16
0
        public LibHandle GetCurrentHandle(string handle)
        {
            LibHandle libHandle = null;

            if (!string.IsNullOrEmpty(handle))
            {
                libHandle = this.Get <LibHandle>(handle);
            }
            return(libHandle);
        }
Ejemplo n.º 17
0
        public static Result ExceptionBill(string BillNo, string userId, string handle)
        {
            Result res = new Result();

            res.ReturnValue = true;
            LibHandle Handle = LibHandleCache.Default.IsExistsHandle(LibHandeleType.PC, userId);

            Service.VerificationHandle(userId, handle, Handle, res);
            if (res.ReturnValue)
            {
                LibDataAccess access = new LibDataAccess();
                try
                {
                    string sql = string.Empty;
                    if (!string.IsNullOrEmpty(Handle.PersonId))
                    {
                        sql             = string.Format(@"SELECT A.BILLNO,
                                                A.PLANENDTIME,
                                                A.ABNORMALREASONID,
                                                B.ABNORMALREASONNAME,
                                                B.ABNORMALREASONTYPEID,
                                                C.ABNORMALREASONTYPENAME,
                                                A.PERSONID,
                                                D.PERSONNAME,
                                                A.DEALWITHPERSONID,
                                                E.PERSONNAME AS DEALWITHPERSONNAME,
                                                E.DEPTID AS DEALWITHDEPTID,
                                                F.DEPTNAME AS DEALWITHDEPTNAME,
                                                A.SOLUTION,
                                                A.DEALWITHSTATE
                                                FROM COMABNORMALTRACE A
                                                LEFT JOIN COMABNORMALREASON B ON B.ABNORMALREASONID=A.ABNORMALREASONID
                                                LEFT JOIN COMABNORMALREASONTYPE C ON C.ABNORMALREASONTYPEID=B.ABNORMALREASONTYPEID
                                                LEFT JOIN COMPERSON D ON D.PERSONID=A.PERSONID
                                                LEFT JOIN COMPERSON E ON E.PERSONID=A.DEALWITHPERSONID
                                                LEFT JOIN COMDEPT F ON F.DEPTID =E.DEPTID
                                                WHERE A.FROMBILLNO={0}", BillNo);
                        res.Info        = access.ExecuteDataSet(sql);
                        res.ReturnValue = true;
                        res.Message     = "成功!";
                    }
                    else
                    {
                        res.ReturnValue = false;
                        res.Message     = "请重新登录!";
                    }
                }
                catch (Exception ex)
                {
                    res.ReturnValue = false;
                    res.Message     = "查询失败!" + ex.Message;
                }
            }
            return(res);
        }
Ejemplo n.º 18
0
        /// <summary>
        /// 查询索引
        /// </summary>
        /// <param name="key">关键字</param>
        /// <param>人员权限</param>
        /// <returns></returns
        public ResultSet SearchIndex(string key, int pageNum, string userHandle, string lastFileId, string nextFileId)
        {
            LibHandle handle = LibHandleCache.Default.GetCurrentHandle(userHandle) as LibHandle;
            //页大小
            int           pageSize          = 8;
            IHightLighter hightLighter      = new HightLighterFactory().Create();
            IIndexManager indexManager      = new IndexManagerFactory().Create();
            Dictionary <string, string> dic = new Dictionary <string, string>();

            dic.Add("content", key);
            SearchResult result = null;

            if (string.IsNullOrEmpty(lastFileId) && string.IsNullOrEmpty(nextFileId))//第一次查询
            {
                result = (SearchResult)indexManager.SearchIndex(dic, pageNum, pageSize, handle);
            }
            else if (string.IsNullOrEmpty(lastFileId))//上一页
            {
                result = (SearchResult)indexManager.SearchPrevIndex(dic, pageNum, pageSize, handle, nextFileId);
            }
            else if (string.IsNullOrEmpty(nextFileId))//下一页
            {
                result = (SearchResult)indexManager.SearchNextIndex(dic, pageNum, pageSize, handle, lastFileId);
            }
            ResultSet resultSet = new ResultSet();

            resultSet.SearchTime   = result.SearchTime;
            resultSet.PageNum      = pageNum;
            resultSet.ResultsCount = result.TotalHits;
            resultSet.PageCount    = (resultSet.ResultsCount - 1) / pageSize + 1;
            DirLinkAddress dirlink;

            foreach (var item in result.Docs)
            {
                AbstractFileBase fileBase = hightLighter.InitHightLight(dic, item);
                FileInfoItem     info     = new FileInfoItem()
                {
                    FileId   = fileBase.FileId,
                    Contents = fileBase.Content
                };
                dirlink       = new DirLinkAddress(fileBase.FileId);
                info.FileName = dirlink.DocName;
                info.DirId    = dirlink.DirID;
                info.DirType  = dirlink.DirType;
                info.Path     = dirlink.DirNameLink;
                resultSet.FileInfoItems.Add(info);
            }
            if (resultSet.FileInfoItems.Count == 0)
            {
                return(null);
            }
            return(resultSet);
        }
Ejemplo n.º 19
0
        public void SetWallpaper(string handle, string wallpaper, bool stretch)
        {
            LibHandle libHandle = LibHandleCache.Default.GetCurrentHandle(handle) as LibHandle;

            if (libHandle == null)
            {
                throw new Exception("用户句柄无效。");
            }
            LibDataAccess dataAccess = new LibDataAccess();

            dataAccess.ExecuteNonQuery(string.Format("update AXPUSER set WALLPAPER={0},WALLPAPERSTRETCH={1} where USERID={2}", LibStringBuilder.GetQuotString(wallpaper), stretch ? 1 : 0, LibStringBuilder.GetQuotString(libHandle.UserId)));
        }
Ejemplo n.º 20
0
        public static Result GetSelectList(string userId, string handle, PageModel info)
        {
            Result result = new Result();

            result.ReturnValue = true;
            LibHandle Handle = LibHandleCache.Default.IsExistsHandle(LibHandeleType.PC, userId);

            Service.VerificationHandle(userId, handle, Handle, result);
            if (result.ReturnValue)
            {
            }
            return(result);
        }
Ejemplo n.º 21
0
        static ExceptionalTrace()
        {
            // * make sure nothing from DbgHelp.dll gets called before this is set
            // * we need to load the dbghelp.dll and it's dependencies via the alternate search order (also affects all dependecies)
            //   https://msdn.microsoft.com/en-us/library/windows/desktop/ms682586.aspx#Alternate_Search_Order_for_Desktop_Applications
            //   otherwise dbghelp gets picked up from system32, srcsrv and symsrv don't get loaded and you get 0x7e errors
            // * kernel32!SetDllDirectory("x64") works on desktop apps, but fails horribly in IIS                ^^
            var codeBase    = Assembly.GetExecutingAssembly().CodeBase;
            var location    = new Uri(codeBase).LocalPath;
            var directory   = Path.GetDirectoryName(location);
            var dbgHelpPath = Path.Combine(directory, Environment.Is64BitProcess ? "x64" : "x86", DbgHelp);

            _dbgHelpHandle = new LibHandle(dbgHelpPath, LoadLibraryFlags.LOAD_WITH_ALTERED_SEARCH_PATH);
        }
Ejemplo n.º 22
0
        public void RemoveWallpaper(string handle, string fileName)
        {
            LibHandle libHandle = LibHandleCache.Default.GetCurrentHandle(handle) as LibHandle;

            if (libHandle == null)
            {
                throw new Exception("用户句柄无效。");
            }
            string path = Path.Combine(EnvProvider.Default.RuningPath, "Wallpapers", libHandle.UserId, fileName);

            if (File.Exists(path))
            {
                File.Delete(path);
            }
        }
Ejemplo n.º 23
0
        public LoginInfo Login1(string userId, string password, bool quitOther = false)
        {
            LoginInfo     loginInfo  = new LoginInfo();
            SqlBuilder    builder    = new SqlBuilder("axp.User");
            string        sql        = builder.GetQuerySql(0, "A.Id,A.Name,A.UserImage", string.Format("A.Id={0} And A.Password={1} And A.ISUSE=1", LibStringBuilder.GetQuotString(userId), LibStringBuilder.GetQuotString(password)));
            LibDataAccess dataAccess = new LibDataAccess();
            string        roleId     = string.Empty;
            bool          exists     = false;

            using (IDataReader reader = dataAccess.ExecuteDataReader(sql))
            {
                if (reader.Read())
                {
                    loginInfo.Id        = LibSysUtils.ToString(reader[0]);
                    loginInfo.Name      = LibSysUtils.ToString(reader[1]);
                    loginInfo.UserImage = LibSysUtils.ToString(reader[2]);
                    exists = true;
                }
            }
            if (exists)
            {
                LibHandle handle = LibHandleCache.Default.IsExistsHandle(LibHandeleType.PC, userId);
                if (handle != null)
                {
                    //LibHandleCache.Default.RemoveHandle(handle.Handle);
                }
                if (!loginInfo.IsUsed)
                {
                    string loginIp = string.Empty;
                    //Zhangkj20161219 增加LoginIp
                    System.ServiceModel.OperationContext context = System.ServiceModel.OperationContext.Current;
                    //对于非WCF的访问context为null
                    if (context != null)
                    {
                        System.ServiceModel.Channels.MessageProperties             properties = context.IncomingMessageProperties;
                        System.ServiceModel.Channels.RemoteEndpointMessageProperty endpoint   = properties[System.ServiceModel.Channels.RemoteEndpointMessageProperty.Name] as System.ServiceModel.Channels.RemoteEndpointMessageProperty;
                        loginIp = endpoint.Address + ":" + endpoint.Port.ToString();
                    }
                    //创建新的Handle
                    handle = LibHandleCache.Default.GetHandle(string.Empty, LibHandeleType.PC, userId, loginInfo.PersonId, loginInfo.PersonName, roleId, loginIp);
                    if (handle != null)
                    {
                        loginInfo.Handle = handle.Handle;
                    }
                }
            }
            return(loginInfo);
        }
Ejemplo n.º 24
0
        public Dictionary <string, List <LibQueryField> > GetQueryCondition(LibHandle handle, string progId)
        {
            Dictionary <string, List <LibQueryField> > condition = null;

            if (handle != LibHandleCache.Default.GetSystemHandle())
            {
                string            roleId         = handle.RoleId;
                LibRolePermission rolePermission = LibRolePermissionCache.Default.GetCacheItem(roleId);
                if (!rolePermission.IsUnlimited && rolePermission.PermissionDic.ContainsKey(progId))
                {
                    LibPermission permission = rolePermission.PermissionDic[progId];
                    condition = permission.QueryFieldDic;
                }
            }
            return(condition);
        }
Ejemplo n.º 25
0
        /// <summary>
        /// 获取用户对于指定文档的权限集合
        /// </summary>
        /// <param name="userHandle">用户会话标识</param>
        /// <param name="docId"></param>
        /// <returns></returns>
        public List <DMFuncPermissionEnum> GetPermissionOf(string userHandle, string docId)
        {
            if (string.IsNullOrEmpty(userHandle) || string.IsNullOrEmpty(docId))
            {
                return(new List <DMFuncPermissionEnum>());//参数非法,返回空
            }
            LibHandle libHandle = LibHandleCache.Default.GetCurrentHandle(userHandle) as LibHandle;

            if (libHandle == null)
            {
                return(new List <DMFuncPermissionEnum>());//用户句柄无效
            }
            List <DMFuncPermissionEnum> listPer = new List <DMFuncPermissionEnum>();

            //添加所有权限
            listPer.AddRange(new DMFuncPermissionEnum[] {
                DMFuncPermissionEnum.Browse,
                DMFuncPermissionEnum.Add,
                DMFuncPermissionEnum.Edit,
                DMFuncPermissionEnum.Delete,
                DMFuncPermissionEnum.Read,
                DMFuncPermissionEnum.Print,
                DMFuncPermissionEnum.Download,
                DMFuncPermissionEnum.Move,
                DMFuncPermissionEnum.SetVersion,
                DMFuncPermissionEnum.Subscribe,
                DMFuncPermissionEnum.Lend,
                DMFuncPermissionEnum.Link,
                DMFuncPermissionEnum.Associate,
                DMFuncPermissionEnum.Comment,
                DMFuncPermissionEnum.Rename,
                DMFuncPermissionEnum.Replace,
                DMFuncPermissionEnum.Fallback,
            });
            DirLinkAddress dirLink = new DirLinkAddress(docId);

            if (libHandle.UserId.Equals("admin") || (DirTypeEnum)dirLink.DirType == DirTypeEnum.Private || libHandle == LibHandleCache.Default.GetSystemHandle())
            {
                return(listPer);//具有所有权限
            }
            DMUserPermission userPer = DMUserPermissionCache.Default.GetCacheItem(libHandle.PersonId);

            listPer = (from item in listPer
                       where userPer.CheckCan(dirLink.ParentDirIdList, docId, item)             //筛选
                       select item).ToList();
            return(listPer);
        }
Ejemplo n.º 26
0
        private void PowerFliter(LibHandle handle, ref string data)
        {
            MenuTree obj = JsonConvert.DeserializeObject(data, typeof(MenuTree)) as MenuTree;

            if (obj != null)
            {
                var childrenList = obj.children;
                if (childrenList != null && childrenList.Count > 0)
                {
                    for (int i = childrenList.Count - 1; i >= 0; i--)
                    {
                        PowerControl(handle, childrenList, childrenList[i]);
                    }
                    data = JsonConvert.SerializeObject(obj);
                }
            }
        }
Ejemplo n.º 27
0
        public LibHandle IsExistsHandle(LibHandeleType handleType, string userId, bool checkHandleType = true)
        {
            LibHandle            destHandle = null;
            IEnumerator <string> enumerator = _Default.GetKeys();

            while (enumerator.MoveNext())
            {
                LibHandle handle = this.Get <LibHandle>(enumerator.Current);
                if (handle != null && string.Compare(userId, handle.UserId, false) == 0
                    &&
                    (checkHandleType == false || handleType == handle.Type)
                    )
                {
                    destHandle = handle;
                    break;
                }
            }
            return(destHandle);
        }
Ejemplo n.º 28
0
        public override bool Remove(string key, string regionName = null)
        {
            LibHandle handle = this.Get <LibHandle>(key);

            if (base.Remove(key))
            {
                try
                {
                    LibDataAccess dataAccess = new LibDataAccess();
                    dataAccess.ExecuteStoredProcedure("axpInsertUserLogin", handle.UserId, LibDateUtils.DateTimeToLibDateTime(handle.CreateTime), handle.Type, LibDateUtils.GetCurrentDateTime());
                }
                catch
                {
                    //即使有错也不抛出
                }
                return(true);
            }
            return(false);
        }
Ejemplo n.º 29
0
        private void PowerControl(LibHandle handle, List <MenuTree> list, MenuTree subObj)
        {
            var childrenList = subObj.children;

            if (childrenList != null && childrenList.Count > 0)
            {
                for (int i = childrenList.Count - 1; i >= 0; i--)
                {
                    PowerControl(handle, childrenList, childrenList[i]);
                }
            }
            else if (!string.IsNullOrEmpty(subObj.PROGID))
            {
                if (!LibPermissionControl.Default.CanUse(handle, subObj.PROGID))
                {
                    list.Remove(subObj);
                }
            }
        }
Ejemplo n.º 30
0
        public string MoveWallpaper(string handle, string fileName)
        {
            LibHandle libHandle = LibHandleCache.Default.GetCurrentHandle(handle) as LibHandle;

            if (libHandle == null)
            {
                throw new Exception("用户句柄无效。");
            }
            string path = Path.Combine(EnvProvider.Default.RuningPath, "Wallpapers", libHandle.UserId);

            if (!Directory.Exists(path))
            {
                Directory.CreateDirectory(path);
            }
            string orgFilePath = Path.Combine(EnvProvider.Default.RuningPath, "Wallpapers", fileName);

            File.Move(orgFilePath, Path.Combine(path, fileName));
            return(fileName);
        }