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); }
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后在根据目录权限设置 }
/// <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); }
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); }
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); }
/// <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 } }
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); }
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); }
/// <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); }
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); }
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); }
/// <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); } }
/// <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); }
/// <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); }
/// <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); } }
public LibHandle GetCurrentHandle(string handle) { LibHandle libHandle = null; if (!string.IsNullOrEmpty(handle)) { libHandle = this.Get <LibHandle>(handle); } return(libHandle); }
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); }
/// <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); }
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))); }
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); }
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); }
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); } }
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); }
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); }
/// <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); }
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); } } }
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); }
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); }
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); } } }
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); }